fishshell简要教程以及对bash的兼容性讨论。
ubuntu使用入门教程本⽂的亮点在于两点:1. 提出了⼀种fish与bash兼容性的临时⽅案,2. ⾃⼰新建了⼀个属于⾃⼰的fish主题。
fish的官⽹宣传语是 Finally, a command line shell for the 90s。 翻译过来就是 Fish shell 是⼀个为90后准备的 shell。
有⼈说:“⼆逼青年⽤bash,普通青年⽤zsh,⽂艺青年⽤fish。”[4]
其次由于zsh 的速度实在是太慢了,所以决定换了fish, 简单做下总结,发现还不错。fish的智能提⽰⾮常强⼤。持续更新中,如果有好的建议或推荐欢迎评论。
1 、ubuntu 安装fish
sudo apt-add-repository ppa:fish-shell/release-2
sudo apt-get update
sudo apt-get install fish
#切换到fish
sudo chsh -s /usr/bin/fish && fish
命令⾏语法⾼亮,错误会显⽰红⾊
智能提⽰
可以使⽤web⽹页的进⾏终端配置
fish 有智能提⽰,⼀个命令⼀旦输⼊过⼀次,会⾃动显⽰上⼀次的全部命令,细⼼⼀点会发现会有⼀层灰⾊的字体表⽰上⼀次的命令,按Ctrl+F或者 右⽅向键→, 即可⾃动补全,如下图。
2、安装autojump
git clone github/wting/autojump.git
cd autojump
./install.py
vim ~/.config/fish/config.fish
按照install.py 命令给出的提⽰来修改config.fish, 添加
if test -f /home/ice/.autojump/share/autojump/autojump.fish; . /home/ice/.autojump/share/autojump/autojump.fish; end
3、兼容性
由于fish 很多不兼容bash的功能导致了很多脚本⽆法运⾏,这⼀点是很多⼈吐槽fish的地⽅,我们需要⼀种⽅式来运⾏脚本。
⽐如
arc land --onto `git rev-parse --abbrev-ref HEAD`
这条命令在fish⾥⽆法执⾏。
我们只需要在前⾯添加⼀个bash -c 命令即可,如下所⽰。
bash -c "arc land --onto `git rev-parse --abbrev-ref HEAD`"
顺⼿价格alias就更⽅便了,可以直接在命令⾏⾥使⽤命令arcl。
alias arcl bash -c "arc land --onto `git rev-parse --abbrev-ref HEAD`"
对于脚本⽂件,⽐如我将需要执⾏的命令或⽂件放到repomerge.sh 在~/.config/fish/config.fish添加
alias up "bash -c /usr/bin/repomerge.sh"
然后就可以⾃由的使⽤up命令了
4、⽹页版fish
fish_config可以直接跳出⽹页版本的界⾯。
web版本可以设置主题, 推荐其中的"Tomorrow Night"主题颜⾊。
选择想要的主题,然后点击set theme即可设置主题。
在命令⾥按enter 即可退出web版本的界⾯。
快速设置缩写
5、插件管理
omf install thefuck
虽然有fisher这个管理⼯具,但是⽬前还不稳定。
6、终端显⽰git的分⽀名称
在~/.config/fish/config.fish中添加如下代码
function fish_prompt --description 'Write out the prompt'
if not set -q __fish_prompt_normal
set -g __fish_prompt_normal (set_color normal)
end
if not set -q __git_cb
set __git_cb (set_color blue)" ("(set_color brred)(git branch ^/dev/null | grep \* | sed 's/* //')(set_color blue)")"    end
switch $USER
case root
if not set -q __fish_prompt_cwd
if set -q fish_color_cwd_root
set -g __fish_prompt_cwd (set_color $fish_color_cwd_root)
else
set -g __fish_prompt_cwd (set_color $fish_color_cwd)
end
end
printf '%s %s%s%s%s# ' $USER "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" $__git_cb
case '*'
if not set -q __fish_prompt_cwd
set -g __fish_prompt_cwd (set_color $fish_color_cwd)
end
printf '%s %s%s%s%s ' $USER "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" $__git_cb        end
end
样式显⽰如下:
其中function fish_prompt 函数⽤于定义fish终端的显⽰样式。
7、git 配置
# git 相关的配置
alias g "git"
alias gst "git status"
alias grs "git reset --soft"
alias grh "git reset --hard"
alias gb "git branch"
alias gba "git branch -a"
alias gl "git pull"
8、配置⾃⼰的主题(终端显⽰样式)
我们只需要写⼀个fish_prompt函数即可。集成了git的分⽀名称以及当前的变化。
显⽰的样式如下:
**说明:
✔代表当前git项⽬是⼲净的。
%1 表⽰有⼀个⽂件未追踪
+1 表⽰⼀个⽂件已暂存**
# 终端显⽰样式的配置
function fish_prompt --description 'Write out the prompt'
if not set -q __fish_prompt_normal
set -g __fish_prompt_normal (set_color normal)
end
__fish_git_prompt >/dev/null 2>&1
if git_is_repo
if not set -q __git_cb
set __git_cb (set_color blue)" ("(set_color brred)(git branch | grep \* | sed 's/* //') (set_color -o bryellow)(__fish_git_prompt_informative_status)(set_color b        end
end
if not set -q __fish_prompt_cwd
set -g __fish_prompt_cwd (set_color $fish_color_cwd)
end
printf '%s%s%s%s ' "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" $__git_cb
end
9、隐藏欢迎语
在confin.sh⽂件⾥添加如下函数即可
function fish_greeting
end
参考:
1.
2. fish 安装
3. Fish shell ⼊门教程 (阮⼀峰)
4. 宇宙第⼀shell——fish⼊门

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。