宇宙第一shell——fish入门

作者: MountainKing | 来源:发表于2015-09-05 23:20 被阅读18004次

二逼青年用bash,普通青年用zsh,文艺青年用fish

首先郑重声明B人的两个技术癖好:

  1. Windows黑,以后推荐的所有工具都不会针对windows系统进行说明。
  2. 主流黑。凡是大部分人都知道的东西,我尽量不用,比如zsh,只为装逼。

安装以及配置

Linux和OS X基本都可以通过源来安装,实在不行就下载源码编译,不难的。

安装好第一步是修改OS默认shell:

sudo -u [user] chsh -s /usr/bin/fish

OS X系统要确认/etc/shells文件包含/usr/local/bin/fish。
然后就可以直接使用了,就是这么简单。你不需要面对zsh浩如烟海的配置文件,也不需要去github clone一个“Oh My Zsh”。

当然如果你实在想配置,输入fish_config命令会启动web管理界面。

什么?逼格太低,非要手动配置。OK, ~/.config/fish/config.fish这就是fish的配置文件,类似于bash的.bashrc。

我喜欢配置三件东西:

  1. 问候语(配置config.fish):

    set fish_greeting 'Talk is cheap. Show me the code.'

  2. X OS系统vs code命令行工具(配置config.fish)

    function code
    
      set location "$PWD/$argv"
    
      open -n -b "com.microsoft.VSCode" --args $location
    
    end
    
  3. 命令行提示(在web界面配置,完成后会生成~/.config/fish/functions/fish_prompt.fish):

    Selection_001.png
  4. 设置接受建议(第三条优势)的快捷键:

    修改fish_prompt.fish,增加一条语句:bind \ej accept-autosuggestion。同时按下alt和j将接受建议。

优势

  1. 语法高亮

    不存在的命令会显示为红色。

    Selection_001.png Selection_002.png
  2. 通配符

    集成find命令,递归搜索神器。

    Selection_003.png
  3. 智能建议

    当按下几个字母后,fish会有智能建议,按下向右箭头将接受建议。

    Selection_004.png
  4. Tab补全

    如果补全项超过1个,会列出全部以供选择。

    Selection_005.png
  5. 变量

    fish是通过set来代替“=”对变量赋值的。

    Selection_006.png

将某目录加入到PATH中也是用set(配置config.fish):

set PATH $PATH /home/mountain/shell

  1. Exports

    fish没有export命令,需要用set -x来代替。如果需要擦除变量,就执行set -e。

    Selection_007.png Selection_008.png
  2. 列表

    有些变量有多个值,例如$PATH,fish会把所有值组装成一个列表,可以迭代或者通过下标访问。

    Selection_001.png
  3. 命令替换

    用法很简单,把命令放在括号里即可。

    Selection_002.png
  4. 语法糖

    fish的常用关键字(if、switch、function等)比bash高端、实用很多,但是考虑到公司的生产环境根本不可能安装fish,导致脚本无法移植,所以对于这部分只能忍痛放弃。

总结

这篇文章虽然字数不多,但是凝结了我不少心血,基本把官方文档全翻译了一遍,然后提取了简单实用的功能分享给大家,还有很多牛逼的功能限于我能力有限就不在这班门弄斧了。

相关文章

  • 宇宙第一shell——fish入门

    二逼青年用bash,普通青年用zsh,文艺青年用fish。 首先郑重声明B人的两个技术癖好: Windows黑,以...

  • Hello fish shell

    什么是 fish shell ? 为什么用它? 可以参考 Fish shell 入门教程 和 量化计算中的技巧(一...

  • Fish Shell 3.0 新功能

    fish源码:https://github.com/fish-shell/fish-shell 今天Fish 宣布...

  • Mac开发必备工具—— Fish shell

    Fish shell 简介 Fish(英文全称是“Friendly Interactive Shell”),是一个...

  • Ubuntu 使用 Fish Shell

    1. Fish shell安装启动 1.1 Ubuntu 安装 Fish Shell 命令行运行代码:sudo a...

  • 安装 fish 并设为默认 shell

    安装 fish sudo apt-add-repository ppa:fish-shell/release-2s...

  • Fish shell

    可以根据输入自动匹配历史命令官网 安装 配置

  • Fish Shell

    今天看到阮一峰同学的一篇博客(Fish shell 入门教程),讲述的非常详细、清楚,有兴趣的可以直接转去查看此文...

  • Linux

    建议使用 fish shell iterm默认使用fish设置1.sudo vim /ect/shells 添加 ...

  • Linux上 fish 的安装配置

    安装 sudo apt-get install fish 配置 由于很多shell脚本都是bash写的,与fish...

网友评论

  • zenon:非常好的文章!尤其是后面对几个命令的区别说明,比现在网上的资料全。
    但我在 ~/.config/fish/config.fish里,转换原来用的export命令还是没用。
    可否请您帮看一看?
    原来的命令为:
    alias pon='export http_proxy=http://xxx.com:16658;export https_proxy=$http_proxy'
    alias poff='unset http_proxy;unset https_proxy'
    我再fish里的命令为:
    alias pon='set -x http_proxy http://xxx.com:16658;set -x https_proxy $http_proxy'
    alias poff='set -e http_proxy;set -e https_proxy'
    MountainKing:@土土土土土土 这个我也不太清楚,fish尚不能自成体系。
  • 氢电公敌:请问如何卸载?
  • hzqelf:第一个技术癖好和我一样,第二个就不敢恭维了。
  • 9fa602ff841e:pip install -r requirements.txt 像这句虽然它提示正确了,按tab没作用,还是一个个打
    MountainKing:@Gancl tab在各个shell里作用都是一样的弱,只能在cd命令里起点作用,你这种情况可以直接按→
  • IT程序狮:您好,能否转载本文到慕课网(www.imooc.com)呢?
    MountainKing:@程序员之家 转载后请把链接发给我
    IT程序狮:@MountainKing 好的
    MountainKing:@程序员之家 可以,请注明原文出处和本人id
  • Linux技术:您好, 可以转载到 LINUX.CN 么?
    MountainKing:@Linux中国 ok
    Linux技术:@MountainKing 那是自然,不过处于行文和传播的考虑,会稍作文字裁剪,可否?
    MountainKing:@Linux中国 可以免费转载,请注明本人id和原文连接就可以。

本文标题:宇宙第一shell——fish入门

本文链接:https://www.haomeiwen.com/subject/xzblcttx.html