一个人可以在 .bashrc 中添加哪些有用的东西?

一个人可以在 .bashrc 中添加哪些有用的东西?

有什么东西是你生活中必不可少的,并且能让我的生活变得轻松很多?下面是我使用的一些东西(“磁盘空间”和“文件夹”特别方便)。

# 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"

答案1

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

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
 }

答案2

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

~/bin/setprompt我有一个由我的执行的脚本.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} "

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

答案3

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"

答案4

我需要处理很多不同的机器,因此我最喜欢的一个方法是给每台需要经常通过 SSH 连接的机器设置别名:

alias claudius="ssh dinomite@claudius"

设置一个好的.ssh/configssh 密钥使得机器之间的跳转变得更加容易。

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

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:对于/etc/passwd),这个函数显然无法处理这种情况。这个要点可以awk在字段编号之前处理任意参数(但仍然需要从标准输入输入)。

相关内容