几个有用的Bash选项、变量和快捷建

August 9, 2013

选项

今天在Bash Hackers上看到的一个bash选项列表,有一些对我来说还是很方便的,用shopt -s开启,shopt -u关闭。

globstar

开启之后,用**就可以递归目录,我再也不羡慕zsh的**了。

histappend

开启之后,命令历史会追加到$HISTFILE(默认~/.bash_history)后面而不是覆盖。没开启的时候,最后关闭的一个bash会把它的历史记录写到~/.bash_history,之前的其他bash的历史记录就没了。所以开了多个bash的时候,又想保留全部的记录的时候就很有用。

checkhash

因为我的PATH里的可执行文件经常增删和覆盖,所以时不时我要hash -r一下,开了这个选项之后,会先检查文件是否存在,然后再执行。

autocd

输入目录路径后直接cd过去,其实不是特别常用,我的cd是个alias:

alias cd=cdls
function cdls() {
    if [[ -z "$1" ]]; then
	command cd /tmp/workspace && ls
    else
	command cd "$*" && ls
    fi
}

cd之后会直接ls。输入目录路径直接cd是不会触发这个alias的。

no_empty_cmd_completion

纯强迫症。

变量

HISTCONTROL

设成erasedups,保存历史记录时会清除之前相同的记录。设成ignoreboth,不保存空白开头的命令,不保存和前一条历史记录相同的命令。我是设成ignorebotherasedups的话会看不出上下文。

HISTTIMEFORMAT

设置之后历史记录会保存timestamp,history会按指定的格式显示时间和命令。我用'%F %T '

  ...
  480  2013-08-09 22:33:01  source /tmp/oldu/projects/server.alias
  481  2013-08-09 22:33:03  ssh
  482  2013-08-09 22:49:28  ls
  ...

快捷键

从bash的man page,Readline部分看到的,有很多。

快捷建 功能
C-x * 展开***
M-/ 补全文件名
M-! 补全命令