什么是fish,Fish又称为Friendly shell for interactive use。Fish设计之初能兼容其他shell的命令, 并且会比其他shell更友好而且又高效。在一些特性上,fish做了改进,这和其他shell比如bashl是有区别的。体现在一些标识符,一些命令扩展和易用上。
fish这里对待单引号和双引号的方式和bash不太一样。fish对待两种引号区别:能不能进一步展开$变量。双引号可以,单引号不可以。
另一这里其实还有个大括号,{$PATH}xxx,这里$PATH是个列表变量,他和xxx形成笛卡尔积,也就是展开成[PATH1xxx,PATH2xxx,…,PATHnXXX]
fish的小括号的含义如同重音符。比如
这里的^file是写错误输出到目标文件,^^file是追加错误到目标文件。错误重定向这个跟版本有关系,在fish2是有这个功能。Bash是2>, fish也可以使用^,但是在新版本fish已经遗弃了
另外在file前追加?代表操作之前先判断该文件存不存在。
And和or相当于bash的&&和||。
用法是command1; and command2 这里有个分号。
这个和command1;command2不一样,这里command2无论command1是否成功都会被执行到。或者这里分号可以用回车符替代
除了常规的Cd、pwd(print working dir),fish还扩展了以下关于工作路径相关的命令:
. / ~都不是一个有效的字符,所以在命令中都可以看做特殊符号来对待
所有会话的命令保存在 ~/.local/share/fish/fish_history。不保存空格开头的隐形命令。不保存重复的命令。只留下最近的命令。fish_history文件保存了命令和执行时间。
Bash -x script
Fish -d 3 script.fish
正常的debug一般用echo,但是fish有更强大的debug指令breakpoint
abbr比alias更强大。Alias就是创建一个func,如果要保存到config, 应该用funcsave
自定义的变量,所以如果有自定义,使用funcsave,他的效果是在这个function文件夹产生一个 文件名为命令.fish
Fish的autosuggestion包含了搜索命令历史、github分支、文件路径、shell变量名字、进程名字、job id(和job名字),(甚至可以用*?代替中间的不懂名字的目录)等。 比如/home/m*/(这里会列出所有m开头的子文件夹供选择)、波浪线~/。
常用的操作有:
这个补齐是可以自定义的。定义自己的补齐
$_ 当前命令,$status上一条命令执行的状态
默认起始颜色都是红色的,直到遇到正确的文词才会变成蓝色
颜色可配置有default、foregroud color
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。