AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 3743
Accepted
gyaresu
gyaresu
Asked: 2009-05-04 16:32:07 +0800 CST2009-05-04 16:32:07 +0800 CST 2009-05-04 16:32:07 +0800 CST

可以为自己的 .bashrc 添加哪些有用的东西?[关闭]

  • 772
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、参考资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您认为此问题可以改进并可能重新打开,请访问帮助中心获取指导。
9 年前关闭。
锁定。这个问题及其答案被锁定,因为这个问题离题但具有历史意义。它目前不接受新的答案或交互。

有什么东西是你不能没有的,会让我的生活变得更轻松吗?这是我使用的一些(“磁盘空间”和“文件夹”特别方便)。

# some more ls aliases
alias ll='ls -alh'
alias la='ls -A'
alias l='ls -CFlh'
alias woo='fortune'
alias lsd="ls -alF | grep /$"

# This is GOLD for finding out what is taking so much space on your drives!
alias diskspace="du -S | sort -n -r |more"

# Command line mplayer movie watching for the win.
alias mp="mplayer -fs"

# Show me the size (sorted) of only the folders in this directory
alias folders="find . -maxdepth 1 -type d -print | xargs du -sk | sort -rn"

# This will keep you sane when you're about to smash the keyboard again.
alias frak="fortune"

# This is where you put your hand rolled scripts (remember to chmod them)
PATH="$HOME/bin:$PATH"
linux bash command-line-interface bashrc dotfiles
  • 30 30 个回答
  • 141494 Views

30 个回答

  • Voted
  1. Best Answer
    Gert M
    2009-05-04T22:01:51+08:002009-05-04T22:01:51+08:00

    我有一个提取档案的小脚本,我在网上的某个地方找到了它:

    extract () {
       if [ -f $1 ] ; then
           case $1 in
               *.tar.bz2)   tar xvjf $1    ;;
               *.tar.gz)    tar xvzf $1    ;;
               *.bz2)       bunzip2 $1     ;;
               *.rar)       unrar x $1       ;;
               *.gz)        gunzip $1      ;;
               *.tar)       tar xvf $1     ;;
               *.tbz2)      tar xvjf $1    ;;
               *.tgz)       tar xvzf $1    ;;
               *.zip)       unzip $1       ;;
               *.Z)         uncompress $1  ;;
               *.7z)        7z x $1        ;;
               *)           echo "don't know how to extract '$1'..." ;;
           esac
       else
           echo "'$1' is not a valid file!"
       fi
     }
    
    • 81
  2. Eddie
    2009-05-04T19:52:15+08:002009-05-04T19:52:15+08:00

    由于我使用了很多不同的机器,我.bashrc总是将命令提示符设置为包括我当前登录的服务器的名称等。这样,当我深入 telnet/ssh 三层时,我不会在错误的窗口中输入错误的内容。rm -rf .在错误的窗口中真的很糟糕!(注意:在家里,所有机器上的 telnet 都被禁用。在工作中,ssh 并不总是启用,而且我对很多机器都没有 root 访问权限。)

    我有一个~/bin/setprompt由 my 执行的脚本.bashrc,其中包含:

    RESET="\[\017\]"
    NORMAL="\[\033[0m\]"
    RED="\[\033[31;1m\]"
    YELLOW="\[\033[33;1m\]"
    WHITE="\[\033[37;1m\]"
    SMILEY="${WHITE}:)${NORMAL}"
    FROWNY="${RED}:(${NORMAL}"
    SELECT="if [ \$? = 0 ]; then echo \"${SMILEY}\"; else echo \"${FROWNY}\"; fi"
    
    # Throw it all together 
    PS1="${RESET}${YELLOW}\h${NORMAL} \`${SELECT}\` ${YELLOW}>${NORMAL} "
    

    此脚本将提示设置为主机名,然后:)是最后一个命令是否成功以及:(最后一个命令是否失败。

    • 39
  3. oyvindio
    2009-05-27T13:39:42+08:002009-05-27T13:39:42+08:00

    less 中的联机帮助页的颜色使联机帮助页更易于阅读:

    export LESS_TERMCAP_mb=$'\E[01;31m'
    export LESS_TERMCAP_md=$'\E[01;31m'
    export LESS_TERMCAP_me=$'\E[0m'
    export LESS_TERMCAP_se=$'\E[0m'
    export LESS_TERMCAP_so=$'\E[01;44;33m'
    export LESS_TERMCAP_ue=$'\E[0m'
    export LESS_TERMCAP_us=$'\E[01;32m'
    

    也可以通过安装 most 并将其用作 MANPAGER 环境变量来获得彩色联机帮助页。如果您不仅要将此寻呼机用于 man,请使用 PAGER 变量,如下所示:

    export PAGER="/usr/bin/most -s"
    
    • 25
  4. Alberto Zaccagni
    2009-06-20T05:29:39+08:002009-06-20T05:29:39+08:00

    没有更多的 cd ../../../.. 但向上 4

    作为参数传递的数字上升许多目录,如果默认情况下没有上升1(在stackoverflow.com的评论中的链接中找到并稍作修改)

    up(){
      local d=""
      limit=$1
      for ((i=1 ; i <= limit ; i++))
        do
          d=$d/..
        done
      d=$(echo $d | sed 's/^\///')
      if [ -z "$d" ]; then
        d=..
      fi
      cd $d
    }
    
    • 24
  5. Drew Stephens
    2009-05-07T15:57:43+08:002009-05-07T15:57:43+08:00

    我处理很多不同的机器,所以我最喜欢的一个是我需要经常通过 SSH 连接到的每台机器的别名:

    alias claudius="ssh dinomite@claudius"
    

    .ssh/config设置好密钥和ssh 密钥也很有用,可以使机器之间的跳转更加容易。

    我最喜欢的另一个别名是用于向上移动目录:

    alias ..="cd .."
    alias ...="cd ../.."
    alias ....="cd ../../.."
    alias .....="cd ../../../.."
    

    ls还有一些用于(和错别字)的常用变体:

    alias ll="ls -l"
    alias lo="ls -o"
    alias lh="ls -lh"
    alias la="ls -la"
    alias sl="ls"
    alias l="ls"
    alias s="ls"
    

    历史记录可能非常有用,但默认情况下,在大多数发行版中,您的历史记录会被每个退出的 shell 吹走,而且一开始并没有太多意义。我喜欢有10,000行历史:

    export HISTFILESIZE=20000
    export HISTSIZE=10000
    shopt -s histappend
    # Combine multiline commands into one in history
    shopt -s cmdhist
    # Ignore duplicates, ls without options and builtin commands
    HISTCONTROL=ignoredups
    export HISTIGNORE="&:ls:[bf]g:exit"
    

    这样,如果我知道我以前做过某事但不记得具体细节,那么快速history | grep foo将有助于我的记忆。

    我经常发现自己通过管道输出awk以获取输出的某一列,例如df -h | awk '{print $2}'查找每个磁盘的大小。为了使这更容易,我fawk在我的 .bashrc 中创建了一个函数:

    function fawk {
        first="awk '{print "
        last="}'"
        cmd="${first}\$${1}${last}"
        eval $cmd
    }
    

    我现在可以运行df -h|fawk 2,这可以节省大量打字。

    如果需要指定分隔符(例如awk -F:for ) ,/etc/passwd这个函数显然无法处理。这个要点中稍微大修的版本可以处理字段编号之前的任意awk参数(但仍然需要来自标准输入的输入)。

    • 19
  6. Richard Bronosky
    2009-06-11T07:41:34+08:002009-06-11T07:41:34+08:00

    GPG 加密的 bashrc

    我敢肯定,我们都想在 bashrc 中放入我们不希望 sudoers 容易读取的东西。我对此的解决方案是:

    if [ -f ~/.bash_private.gpg ]; then
       eval "$(gpg --decrypt ~/.bash_private.gpg 2>/dev/null)"
    fi
    

    我有一个 GPG 代理,所以我只需每隔几个小时输入一次我的私钥密码。您仍然必须对系统的用户有一定的信任,因为您定义的变量、函数和别名可以从 RAM 中提取。但是,我主要将它用于我的笔记本电脑。如果它被盗,我不希望有人轻易看到以下内容:

    alias MYsql='mysql -uadmin -psecret'
    wglatest(){ wget -O https://admin:[email protected]/latest; }
    
    • 15
  7. pjz
    2009-05-04T17:22:46+08:002009-05-04T17:22:46+08:00

    我过去常常在各处设置这些,但后来意识到最好只记住如何“手动”完成它们,因为这意味着我会 1)完全了解发生了什么,以及 2)即使即使我的自定义 .bashrc 没有安装。

    这些天我使用别名的唯一一件事是减少重复输入非常长的行(例如。alias myhost='ssh -T [email protected] screen -dAr')

    • 12
  8. devin
    2009-05-05T20:27:30+08:002009-05-05T20:27:30+08:00

    这是一个很棒的资源:

    向我们展示您的 .bashrc

    • 12
  9. Cyberdrow
    2009-05-18T03:01:50+08:002009-05-18T03:01:50+08:00

    如果您是系统管理员并且经常使用 root 权限,请给 Bash 一点提示:

    shopt -o noclobber
    

    如果您重定向输出 (>filename),这将防止您意外破坏已存在文件的内容。您始终可以使用 >|filename 强制覆盖。

    • 9
  10. Ian Kelling
    2009-05-04T22:21:38+08:002009-05-04T22:21:38+08:00

    那里的唯一衬里和小脚本可以永远持续下去。我推荐 man bash 并自己写东西。http://www.commandlinefu.com上的一些不错的简短 bash 内容。这里有几件事。

    #use extra globing features. See man bash, search extglob.
    shopt -s extglob
    #include .files when globbing.
    shopt -s dotglob
    #When a glob expands to nothing, make it an empty string instead of the literal characters.
    shopt -s nullglob
    # fix spelling errors for cd, only in interactive shell
    shopt -s cdspell
    # vi mode
    set -o vi
    
    s() { # do sudo, or sudo the last command if no argument given
        if [[ $# == 0 ]]; then
            sudo $(history -p '!!')
        else
            sudo "$@"
        fi
    }
    
    prompt_command() {
        p=$PWD  # p is much easier to type in interactive shells
        # a special IFS should be limited to 1 liners or inside scripts.
        # Otherwise it only causes mistakes.
        unset IFS
    }
    PROMPT_COMMAND=prompt_command
    
    
    # smart advanced completion, download from
    # http://bash-completion.alioth.debian.org/
    if [[ -f $HOME/local/bin/bash_completion ]]; then
        . $HOME/local/bin/bash_completion
    fi
    
    
    extract () { # extract files. Ignore files with improper extensions.
        local x
        ee() { # echo and execute
            echo "$@"
            $1 "$2"
        }
        for x in "$@"; do
            [[ -f $x ]] || continue
            case "$x" in
                *.tar.bz2 | *.tbz2 )    ee "tar xvjf" "$x"  ;;
                *.tar.gz | *.tgz ) ee "tar xvzf" "$x"   ;;
                *.bz2 )             ee "bunzip2" "$x"   ;;
                *.rar )             ee "unrar x" "$x"   ;;
                *.gz )              ee "gunzip" "$x"    ;;
                *.tar )             ee "tar xvf" "$x"   ;;
                *.zip )             ee "unzip" "$x"     ;;
                *.Z )               ee "uncompress" "$x" ;;
                *.7z )              ee "7z x" "$x"      ;;
            esac
        done
    }
    
    • 9

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve