美文网首页
简单优雅的shell–fish~

简单优雅的shell–fish~

作者: 刀尖红叶 | 来源:发表于2017-03-11 17:49 被阅读238次

Fish—a friendly interactive shell

fish刚出来时我就被它强大的命令参数补全和颜色高亮所吸引,一度作为我的默认shell,但由于语法不与bash兼容以及一些其他缺陷,还是放弃了,转投z shell,最近fish更新到了2.0,看了下,基本是个成熟的shell了,决定与它重修旧好~

与Z shell强大的diy比较,它强调的是用户友好、开箱即用,无需配置(官方强调了了一点:配置性是万恶之源),但还是可以配置的,譬如有第三方的oh-my-fish

下面对比bash给出fish除了命令参数补全和颜色高亮给我的一些的惊喜:

1.统一的变量定义
在bash里,变量定义混乱,一般定义是: var=value
也可以这样定义
declare var=value
如果希望子shell也能继承,还需export
export var=value
但在fish里,一个set命令搞定一切,譬如:
定义全局变量:
set -U var=value
export一个变量:
set -x var=value

2.类似高级语言的循环判断
bash语法被无数程序员吐槽的一个就是恶心的循环判断结尾:

if.......fi
case......esac
for .........done
while.......done

但在fish里,没了fi,esca,done没了,取而代之是高级语言通用的end

3.取消古怪变量
在bash里,哪些是古怪变量呢,譬如位置变量用$0,$1…..$#,$*;又譬如错误状态号$?,看起来实在很恶心~
但在fish里,全换为有意义的变量名:
譬如位置变量是数组变量$argv,这样当传递一个变量时:
fish test.fish var1
$argv就是var1
传递多个变量时:
fish test.fish v1 v2 v3 v4
$argv 就是数组[v1 v2 v3 v4],当需要取出特定的位置变量,可以使用$argv[n]来取 fish里错误状态也用$status来替代$?

4.DRY原则的函数体现
fish里虽然也有alias,但那是为了兼容posix,官方建议舍用alias,why?因为函数可以实现alias,为什么还需alias一个单独命令?
定义一个ls -al的别名ll很简单: 4.二元逻辑判断
command1 && command2 || command3
这种简洁的二元判断是bash的一大特色,但在fish稍显麻烦:
command1; and command 2; or command 3
其实就是&&换成and,||换成or,fish牺牲语法的简洁换来语义的简单,哪个好?仁者见仁,智者见智吧~

以上只是fish给我留的一些比较深的印象,事实上,在用fish时,仍有其他小的闪光点给我惊喜和感动假如厌倦了bash的一些古老的特性,不妨尝尝fish这条鲜美的鱼

相关文章

  • 简单优雅的shell–fish~

    Fish—a friendly interactive shell fish刚出来时我就被它强大的命令参数补全和颜...

  • 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...

  • Hello fish shell

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

  • 安装 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...

网友评论

      本文标题:简单优雅的shell–fish~

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