对于一个经常使用Terminal的人来说,定制一个适合自己的Terminal十分重要。本文主要讲述如何自定义命令行提示符并显示Git分支,文章开头讲述了别名(alias)的使用。

别名

  别名(alias)相当于缩写,是给某个指令起的另外一个名字。通常给某个比较长并且常用的指令起一个比较简单的别名。例如alias ll='ls -alF'代表:llls -alF的别名。其中:

  • -a表示显示所有文件;
  • -l表示用长格式显示;
  • -F表示在文件名后附上一个字符阐明该文件的类型。

  通过aliasalias -p可以查看所有别名的含义,alias ll可以查看别名ll的含义。也可以定义alias ll='ls -l --color=tty'
  设置和取消别名命令aliasunalias。假设每天需要进入目录/home/user/var/log查看日志,每天需要执行该命令。该命令有点长,难记,也容易输入错误。可以使用别名功能使其变短。alias是Bash的内置命令。alias gotolog='cd /home/user/var/log'定义了别名gotolog之后,运行gotolog就可以进入目录。   

自定义提示符

  默认的命令行提示符类似ComputerName:CurrentDirectory user$在终端显示的时候会占据很大的地方,并且如果ComputerName很长,我们不得不每天面对无用的信息。我们可以通过下面的命令自己定制命令行提示符:

1
export PS1='\u@\W:'

  这样命令行提示符就是userName:,字符串中的\u表示用户名,\W表示当前的工作目录。如果你还想显示其它的信息,可以查看这里或者这里

显示Git分支

  首先进入你的home目录,然后编辑.bashrc文件(Mac中并不存在该文件,将会新建一个):

1
2
$ cd
$ vi .bashrc

  然后将下面的代码加入到文件的最后处

1
2
3
4
5
6
7
8
9
10
11
12
13
function git_branch {
branch="`git branch 2>/dev/null | grep "^\*" | sed -e "s/^\*\ //"`"
if [ "${branch}" != "" ];then
if [ "${branch}" = "(no branch)" ];then
branch="(`git rev-parse --short HEAD`...)"
fi
echo " ($branch)"
fi
}
export PS1='\u: \[\033[01;36m\]\W\[\033[01;32m\]$(git_branch)\[\033[00m\] \$ '
alias ll='ls -alF'

  其中函数git_branch用于获得Git的分支;PS1用于设置提示符格式并调用git_branch显示Git分支;ll仅仅是一个别名,有没有都可以。
  保存并退出后,执行加载命令source ./.bashrc即可。

  注:Mac下启动的shell是login shell,所以加载的配置文件是.bash_profile,不会加载.bashrc。如果你是Mac用户的话,需要再执行下面的命令,这样每次开机后才会自动生效。

1
echo "[ -r ~/.bashrc ] && source ~/.bashrc" >> .bash_profile