使用bash-it重新规划bash配置
bash-it是一个组织bash配置的框架,同时它也自带了许多的有用的别名、自动补全脚本、主题和插件。 你可以把他当成是bash版的oh-my-zsh
如果你的bash配置很复杂,把它放在单个 ~/.bashrc
就会显得很混乱,这种情况下就可以参照 bash-it
的规范对配置进行拆分。
bash-it
把所有的bash配置分成四个部分:
- 别名,放在
aliases
目录下 - 自动补全脚本,放在
completion
目录下 - 主题,放在
themes
目录下 - 其他配置信息,统一作为插件,放在
plugins
目录下
安装bash-it
克隆bash-it仓库
git clone --depth=1 https://github.com/Bash-it/bash-it.git ~/.bash_it
运行安装脚本
~/.bash_it/install.sh
该安装脚本会提示你是否保留原
.bashrc
的内容,如果输入y
则会把bash-it
的内容附加到原.bashrc
文件后面,否则会直接用bash-it
的内容替换.bashrc
的内容。 不过也不用惊慌,bash-it
会同时创建一个.bashrc.bak
的备份文件以供还原。加载
bash-it
source ~/.bashrc
启用bash-it自带的别名、补全和插件
直接运行 bash-it
就能看到 bash-it
的使用方法了:
lujun9972:~/ $ bash-it bash-it Bash-it help and maintenance parameters: 1: verb [one of: help | show | enable | disable | migrate | update | search | version | reload ] 2: component type [one of: alias(es) | completion(s) | plugin(s) ] or search term(s) 3: specific component [optional] examples: $ bash-it show plugins $ bash-it help aliases $ bash-it enable plugin git [tmux]... $ bash-it disable alias hg [tmux]... $ bash-it migrate $ bash-it update $ bash-it search [-|@]term1 [-|@]term2 ... [ -e/--enable ] [ -d/--disable ] [ -r/--refresh ] [ -c/--no-color ] $ bash-it version $ bash-it reload
从中我们可以看出 bash-it
的使用很直观,都是遵循着 bash-it 行动 组件类型 [具体组件]
的格式来设计的.
bash-it自带了大量的别名、补全和插件可供直接使用,这些脚本分别存放在 $BASH_IT/aliases/available
, $BASH_IT/completion/available
, $BASH_IT/plugins/available
目录中.
但是你没有必要直接跑到对应目录下查看有哪些脚本, bash-it
提供了 show
行动来帮你,比如你想查看 bash-it
自带的别名、补全脚本和插件,那么可以执行下面命令:
bash-it show alisas bash-it show completions bash-it show plugins
lujun9972:~/ $ bash-it show aliases Alias Enabled? Description ag [ ] the silver searcher (ag) aliases ansible [ ] ansible abbreviations apt [ ] Apt and dpkg aliases for Ubuntu and Debian distros. atom [ ] Atom.io editor abbreviations bolt [ ] puppet bolt aliases ...... yarn [ ] yarn package manager aliases to enable an alias, do: $ bash-it enable alias <alias name> [alias name]... -or- $ bash-it enable alias all to disable an alias, do: $ bash-it disable alias <alias name> [alias name]... -or- $ bash-it disable alias all
lujun9972:~/ $ bash-it show completions Completion Enabled? Description apm [ ] awless [ ] awscli [ ] bash-it [x] ..... wpscan [ ] to enable a completion, do: $ bash-it enable completion <completion name> [completion name]... -or- $ bash-it enable completion all to disable a completion, do: $ bash-it disable completion <completion name> [completion name]... -or- $ bash-it disable completion all
lujun9972:~/ $ bash-it show plugins Plugin Enabled? Description alias-completion [x] Automatic completion of aliases autojump [ ] Autojump configuration, see https://github.com/wting/autojump for more details ...... z [ ] maintains a jump-list of the directories you actually use z is DEPRECATED, use fasd instead to enable a plugin, do: $ bash-it enable plugin <plugin name> [plugin name]... -or- $ bash-it enable plugin all to disable a plugin, do: $ bash-it disable plugin <plugin name> [plugin name]... -or- $ bash-it disable plugin all
你可以很清晰地看到bash-it上有哪些组件,哪些组件已经被启用,每个组件的说明描述,以及启用/禁止组件的方法。
bash-it enable 组件类型 组件列表... bash-it disable 组件类型 组件列表...
启用/禁止新组件后,还需要让bash-it重新加载配置才行,运行下面命令:
bash-it reload
你还可以使用 help
行为来查看组件的详细信息,比如我想了解 ansible
这个alias中定义了哪些别名,可以运行
bash-it help alias ansible
lujun9972:~/ $ bash-it help alias ansible ans=ansible' ap=ansible-playbook'
设置主题
bash-it
还自带了超过50个主题,这些主题存放在 $BASH_IT/themes
目录中
ls ~/.bash-it/themes
90210 atomic axin bakke base.theme.bash binaryanomaly bobby bobby-python brainy brunton candy clean codeword colors.theme.bash cooperkid cupcake demula dos doubletime doubletime_multiline doubletime_multiline_pyonly dulcie duru elixr emperor envy essential font gallifrey githelpers.theme.bash hawaii50 iterate kitsune liquidprompt luan mairan mbriggs metal minimal modern modern-t morris n0qorg norbu nwinkler nwinkler_random_colors p4helpers.theme.bash pete powerline powerline-multiline powerline-naked powerline-plain powerturk primer pro pure purity rainbowbrite rana redline rjorgenson roderik sexy simple sirup slick standard tonka tonotdo tylenol wanelo zitron zork
然而跟别名、补全和插件不同,我们无法通过 enable
行为来更改主题。
相反,你需要手工打开 ~/.bashrc
文件,找到 export BASH_IT_THEME
'xxxx'= 这一行,将 xxxx
改成想要主题的名称。
另一方面你可以通过 BASH_PREVIEW=ture bash-it reload
来预览各个主题的效果。
我比较喜欢简洁点的界面,因此选择了 clean
这个主题。
bash-it也允许你使用非 $BASH_IT
目录下的主题
export BASH_IT_THEME="/home/foo/my_theme/my_theme.theme.bash"
自定义配置
bash-it
会从下面位置寻找并加载自定义的配置:
- aliases/custom.aliases.bash
- completion/custom.completion.bash
- lib/custom.bash
- plugins/custom.plugins.bash
- custom/*.bash
- custom/**/*.bash
就我自己的习惯来说,我喜欢把所有的自定义配置都集中在 custom
目录下。
首先仿照 bash-it
的规范在 custom
目录下也创建了四个目录分别存放别名、补全和插件:
mkdir -p $BASH_IT/custom/{aliases,completion,plugins}/available mkdir -p $BASH_IT/custom/enabled
然后把自己的配置根据拆开放到不同类别下的 available
目录下,由于 bash-it
只会加载 custom/**/*.bash
, 因此 custom/类别/available/
目录下的bash文件并不会被加载。
然后挑选自己想要启用的配置,做个软链接到 custom/enabled
目录中就好了,比如:
ln -s $BASH_IT/custom/plugins/available/manpage.plugin.bash $BASH_IT/custom/enabled ln -s $BASH_IT/custom/aliases/available/my.aliases.bash $BASH_IT/custom/enabled
升级/卸载bash-it
运行 bash-it update
就能升级 bash-it
到最新版本了。
运行 ~/$BASH_IT/uninstall.sh
就能卸载 bash-it
, bash-it
会根据安装时的备份文件还原原始的 ~/.bashrc