Fish

Fish

原名: Fish | 语言: 英语
2011 纪录 22分钟 0.0

导演

R. J. Cutler

详细剧情

fish (英语:friendly interactive shell) 是一个Unix shell。fish旨在成为一个比其他shell交互性更强、用户体验更好的shell,并让其丰富的强大功能能够被用户轻松发现、记住并学以致用。fish的语法既不衍生于Bourne shell也不衍生于C Shell,故被分类为一种“外来”shell。有别于为节约系统资源而默认禁用部分功能的其他shell,fish的全部功能都是默认启用的。

== 特色 ==
fish能根据用户的输入历史与当前所在的目录提供实时的自动完成。与bash的类似功能Ctrl+R历史搜索相比,这种不必频繁切换模式还可以用方向键选择建议项的做法使用户能更流畅地进行输入。
fish也拥有功能丰富的Tab补全功能。fish能够自动补全文件路径、变量与不少命令的参数,且支持路径通配符与C shell的花括号展开。fish某种意义上会通过分析命令的man文档生成与之相关的补全。
fish倾向于使用命令来代替语法结构。由于命令相比语法结构能更方便地在shell内查到帮助内容,fish的功能很容易在使用过程中被用户自行发现。fish允许子程序提供对自己的说明,进一步免去了来回查找帮助的麻烦。fish还允许用户在拥有图形用户界面的浏览器内查看帮助。

== 语法 ==
fish的语法类似于其他兼容POSIX的shell,但由于其开发者认为POSIX shell设计得有问题,fish的语法又与POSIX shell有相当的不同。

=== 没有子shell ===
其他shell的部分语法结构,例如管道、子程序与循环,是使用一种称为子shell的方式实现的。所谓子shell即临时执行一个用完即退出的新的子进程。在子shell中执行的修改通常不符合一般人的直觉地,不会反映到真正的shell上(即没有函数副作用)。fish不依赖于子shell实现其语法结构,故所有内置命令在任何语境下都是会正常运作的。

例如,下述bash脚本会因为子shell而导致循环内部给found赋的值在退出循环后即消失

而需要用另一种方式来规避这个问题:如下的fish脚本则无需担心子shell会影响副作用。

== 有用的错误信息 ==
fish会在发生错误时清晰地指出出错的位置并给出修正的方法。

== 通用变量 ==
Fish有一个名为通用变量的功能。通过利用通用变量,用户可以在多个同时运行的fish实例之间共享一个变量。即使用户注销或者计算机重启,通用变量的值也不会丢失。

== 其它功能 ==
高级tab补全
带完备的错误检查的语法高亮
支持X Window系统的剪贴板
基于terminfo的智能终端处理
可搜索的命令行历史记录
第二版还加入了如下功能:

自动补全
支持256色
基于网页的配置功能
能够提升性能的更多的内置命令

== 参考… ==

热门推荐