python 阮一峰_阮一峰:Fish shell 入门教程

原标题:阮一峰:Fish shell 入门教程

作者: 阮一峰

命令行是程序员的必备技能。图形界面虽然好看,解决问题还是要靠命令行。

命令行由 Shell 提供。各种命令通过 Shell,传递给操作系统的内核。学习命令行就是在学习 Shell。

Shell 有好几种,目前最常用是 Bash 和 zsh。但是,在我看来,它们都不如 Fish Shell 好用。

五年前,我第一次尝试 Fish,感到很惊艳,一直用到现在。本文介绍 Fish 的主要特点,希望你也来尝试它。 一、简介

Fish 是”the friendly interactive shell”的简称,最大特点就是方便易用。很多其他 Shell 需要配置才有的功能,Fish 默认提供,不需要任何配置。

如果你想拥有一个方便好用的 Shell,又不想学习一大堆语法,或者花费很多时间配置,那么你一定要尝试一下 Fish。

二、安装

Ubuntu 和 Debian 的安装方法。 $ sudoapt-getinstall fish

Mac 的安装方法。 $ brew install fish

其他系统的安装请参考官方网站。 三、启动与帮助

安装完成后,就可以启动 Fish。 $ fish

由于 Fish 的语法与 Bash 有很大差异,Bash 脚本一般不兼容。因此,我建议不要将 Fish 设为默认 Shell,而是每次手动启动它。

使用过程中,如果需要帮助,可以输入help命令。浏览器就会自动打开,显示在线文档。 $ help 四、彩色显示

进入 Fish 以后,你注意到的第一件事,可能就是它默认彩色显示。 # 无效命令为红色$ mkd# 有效命令为蓝色$ mkdir

有效路径会有下划线。 $ cat ~/somefi

上面代码表示,存在以~/somefi开头的路径。如果没有下划线,你就知道这个路径不存在。 五、自动建议

Fish 会自动在光标后面给出建议,表示可能的选项,颜色为灰色。 # 命令建议$ /bin/hostname# 参数建议$ grep --ignore-case# 路径建议$ ls node_modules

如果采纳建议,可以按下→或Control + F。如果只采纳一部分,可以按下Alt + →。 六、自动补全

输入命令时,Fish 会自动显示匹配的上一条历史记录。 $ git commit -m "feat: first commit"

如果没有匹配的历史记录,Fish 会猜测可能的结果,自动补全各种输入。比如,输入pyt再按下Tab,就会自动补全为python命令。

如果有多个可能的结果,Fish 会把它们都列出,还带有简要介绍。 $ vi[按下 Tab 键]vi(Executable link, 2.7MB)view (Vi IMproved, 一个程序员的文本编辑器)viewer.py (Executable, 967B)viewres (Graphical class browser for Xt)...and 12 more rows

这时,再按一次tab,就可以在这些命令之中选择。

除了补全命令,Fish 还可以补全参数。比如,ls命令的-l参数后面按下Tab键,就会显示可以连用的其他参数。 $ ls -l[按下 Tab 键]-l1 (List one file per line)-lA (Show hidden except . and ..) -la (Show hidden)-lB (Ignore files ending with ~)...and 16 more rows```

Fish 还可以自动补全 Git 分支。 $ git checkout master 七、易懂的语法

Fish 的语法非常自然,一眼就能看懂。

if语句。 ifgrep fish /etc/shells echo Found fishelseifgrepbash /etc/shells echo Found bashelseecho Got nothing end

switch语句。 switch (uname)case Linux echo Hi Tux!case Darwin echo Hi Hexley!case FreeBSD NetBSD DragonFly echo Hi Beastie!case'*'echo Hi, stranger!end

while循环。 whiletrueecho"Loop forever"end

for循环。 forfilein *.txt cp$file$file.bak end 八、函数

Fish 的函数用来封装命令,或者为现有的命令起别名。 function ll ls -lhG $argvend

上面代码定义了一个ll函数。命令行执行这个函数以后,就可以用ll命令替代ls -lhG。其中,变量$argv表示函数的参数。

下面是另一个例子。 functionlscommandls -hG $argvend

上面的代码重新定义ls命令。注意,函数体内的ls之前,要加上command,否则会因为无限循环而报错。 九、提示符

fish_prompt函数用于定义命令行提示符(prompt)。 function fish_prompt set_color purple date"+%m/%d/%y" set_color FF0 echo(pwd)'>' set_color normal end

执行上面的函数以后,你的命令行提示符就会变成下面这样。 02/06/13 /home/tutorial > 十、配置

Fish 的配置文件是~/.config/fish/config.fish,每次 Fish 启动,就会自动加载这个文件。

我们可以在这个文件里面写入各种自定义函数,它们会被自动加载。比如,上面的fish_prompt函数就可以写在这个文件里面,这样每次启动 Fish,就会出现自定义的提示符。

Fish 还提供 Web 界面配置该文件。 $ fish_config

输入上面的命令以后,浏览器就会自动打开本机的 8000 端口,用户可以在网页上对 Fish 进行配置,比如选择提示符和配色主题。

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值