(fishshell) - 比 bash 更好用的 shell

fishshell

比 bash 更好用的 shell

安装

# Ubuntu 和 Debian 的安装方法。
sudo apt-get install fish
# Mac 的安装方法。
brew install fish

启动与帮助

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

# 安装完成后,就可以启动 Fish。
$ fish
# 使用过程中,如果需要帮助,可以输入 help 命令
$ help

彩色显示

# 无效命令为红色
$ mkd
# 有效命令为蓝色
$ mkdir
# 有效路径会有下划线。如果没有下划线,你就知道这个路径不存在。
$ cat ~/somefi 

自动建议

Fish 会自动在光标后面给出建议,表示可能的选项,颜色为灰色。如果采纳建议,可以按下 Control + F 。如果只采纳一部分,可以按下 Alt + →

$ /bin/hostname # 命令建议
$ grep --ignore-case # 参数建议
$ ls node_modules # 路径建议

自动补全

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

Fish 还可以自动补全 Git 分支。

脚本语法

if 语句

if grep fish /etc/shells
    echo Found fish
else if grep bash /etc/shells
    echo Found bash
else
    echo 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 循环

while true
    echo "Loop forever"
end

for 循环

for file in *.txt
    cp $file $file.bak
end

函数

Fish 的函数用来封装命令,或者为现有的命令起别名。

function ll
    ls -lhG $argv
end

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

function ls
    command ls -hG $argv
end

上面的代码重新定义 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 还提供 Web 界面配置该文件。

$ fish_config # 浏览器打开 Web 界面配置

Running Commands: 兼容 bash 等shell的命令执行方式 Getting Help: help/man cmd -> browser/terminal Syntax Highlighting: 实时检查命令是否正确 Wildcards: 支持缩写 * 递归 匹配 Pipes and Redirections: 使用 ^ 代表 stderr Autosuggestions: 自动建议, 可以使用 Ctrl-f / -> 来补全 Tab Completions: 更强大的 tab 补全 Variables: 使用 set 设置 Exit Status: 使用 echo $status 替代 $? Exports (Shell Variables) Lists: all variables in fish are really lists Command Substitutions: 使用 (cmd) 来执行命令, 而不是 反引号、$() Combiners (And, Or, Not): 不支持使用符合来表示逻辑运算 Functions:使用 $argv 替代 $1 Conditionals (If, Else, Switch) / Functions / Loops: 更人性化的写法(参考 py) Prompt: function fish_prompt 实现 Startup (Where's .bashrc?): ~/.config/fish/config.fish,更好的方式是 autoloading-function、universal-variables Autoloading Functions: ~/.config/fish/functions/. Universal Variables:a variable whose value is shared across all instances of fish

set name 'czl' # 设置变量,替代 name=czl
echo $name
echo $status # exit status,替代 $?
env # 环境变量
set -x MyVariable SomeValue # 替代 export
set -e MyVariable
set PATH $PATH /usr/local/bin # 使用 lists 记录 PATH
set -U fish_user_paths /usr/local/bin $fish_user_paths # 永久生效
touch "testing_"(date +%s)".txt" # command subtitution,替代 `date +%s`
cp file.txt file.txt.bak; and echo 'back success'; or echo 'back fail' # combiner
functions # 列出 fish 下定义的函数

参考资料

热点新闻

受疫情影响 Booking.com宣布最多裁员25%

全球酒店预订平台Booking.com母公司Booking Holdings今日宣布,由于新冠病毒疫情继续对旅游造成广泛影响,该公司计划在全球范围内最多裁员25%。目前,Booking.com拥有逾1.7万名员工。 阅读全文

发布于:2020-08-04T23:15:13Z  |  103次阅读  |  详细内容 »

抖音在美业务威胁再升级 特朗普要禁止TikTok运营?

美国对中国科技公司的威胁再度升级!特朗普当地时间7月31日在其专机“空军一号”上对媒体记者表示,他将禁止TikTok在美国运营,最早于周六(即8月1日)实施,并且暗示他不会支持美国公司去收购TikTok。这是TikTok一周内在美国遭遇的第二次政府打压,本周美国财政部刚刚提交审查建议。 阅读全文

发布于:2020-08-01T21:14:31Z  |  103次阅读  |  详细内容 »

不惜一切坚持生产 特斯拉成为疫情下汽车业最大赢家

疫情危机之中,由于前期“种下的种子”渐渐长成,特斯拉逆势迎来大丰收。面对疫情冲击,全球传统车企遭受重创,销量和利润暴跌之时,特斯拉却仍保持盈利,股价由三月低点至今已飙升了约4倍。这使得它7月初市值超越大众和丰田后,始终稳坐全球第一大车企宝座。 阅读全文

发布于:2020-08-02T17:46:01Z  |  86次阅读  |  详细内容 »

互联网平台侵权屡禁不止 微信读书被判赔偿用户6600元

“微信读书”App因默认开放读书记录遭用户起诉,该案于7月30日落槌,法院认定腾讯公司侵犯用户个人信息权益,判决赔偿用户6600元。“我们尊重法院判决。”微信读书方面向《证券日报》记者表示,保障用户信息安全是微信读书一直坚守的首要原则。 阅读全文

发布于:2020-08-01T08:14:45Z  |  77次阅读  |  详细内容 »

CDC预测:未来30天 美国每天将有1000人死于新冠肺炎

美国疫情现况有多严峻?美疾控中心(CDC)预测,未来30天,美国每天将有1000人死于新冠肺炎。据美国有线电视新闻网(CNN)消息,过去一周,美国27个州的疫情逐渐趋缓,这是一个好消息,但对全美来说,疫情还是相当严重。根据CDC发布的一份综合预测数据,到8月22日,美国新冠肺炎死亡病例将达到17.3万例,在未来30天,平均每天就有1000个美国人死于新冠肺炎。 阅读全文

发布于:2020-08-03T12:15:09Z  |  74次阅读  |  详细内容 »

特斯拉Model Y在6月份销售7500辆 是Model X两倍多

特斯拉在去年3月份推出了跨界运动型多用途电动汽车Model Y,并在今年一季度开始向消费者交付,不过在Model Y开始交付之后,特斯拉在每一季度,将其与Model 3的产量及交付量合并公布,因而目前还无法知晓Model Y的具体销量。 阅读全文

发布于:2020-08-01T17:44:30Z  |  74次阅读  |  详细内容 »

腾讯建国内首个综合电竞体验馆:《头号玩家》沉浸体验成真

上海聚集了全国80%以上的电竞公司、俱乐部和明星资源,每年有近一半的电竞赛事在上海举办。在上海,腾讯电竞携手中央广播电视总台,建立了世界级的电竞赛事远程制播中心。在2020 ChinaJoy上,腾讯宣布,国内第一个综合电竞体验馆——腾讯电竞V-Station体验馆,将在2020年”十一黄金周”正式落地上海。 阅读全文

发布于:2020-08-01T16:14:51Z  |  70次阅读  |  详细内容 »

字节跳动回应TikTok易主:不对谣言或猜测发表评论

此前彭博社报道,美国政府即将颁布行政命令,以国家安全为由,迫使字节跳动出售短视频应用TikTok的美国业务。据知情人士透露,微软正在与字节跳动商谈收购TikTok的事宜,但谈判进展和具体条款尚未可知。如果美国科技巨头微软成功收购,则可以化解TikTok的监管风险。 阅读全文

发布于:2020-08-01T12:44:51Z  |  70次阅读  |  详细内容 »

字节跳动同意剥离TikTok美国业务 提出微软等两家公司接管

路透社消息,两名知情人士周六(1日)表示,在美国总统特朗普周五表示他已决定禁用该应用后后,字节跳动已同意完全剥离TikTok在美国的业务,以挽救与白宫的一笔交易。字节跳动此前曾试图在TikTok的美国业务中持有少数股权,但遭到了白宫的拒绝。 阅读全文

发布于:2020-08-01T22:45:42Z  |  69次阅读  |  详细内容 »

中国联通推出PLUS会员:联合12家互联网公司 最低99元/年

8月1日上午消息,中国联通今日宣布推出首款付费会员类产品——联通PLUS会员。该产品是中国联通在自有资源基础上,联合12家互联网公司共同打造,覆盖用户吃喝玩乐各类优惠特权。即日起,该产品在联通手厅App、中国联通营业厅微信公众号、10010短信及实体营业厅等线上线下全渠道正式发售。 阅读全文

发布于:2020-08-01T11:15:18Z  |  69次阅读  |  详细内容 »

即将推出的Apple Watch Series 6的电池现身监管机构

即将到来的Apple Watch Series 6的电池很可能已经在韩国测试研究院完成备案,并被Twitter用户@yabhishekhd发现。6月23日,韩国监管机构KTR为一块容量为303.8mAh的1.17Wh电池颁发了认证,该机构负责在公开销售前对新硬件进行审批和测试。 阅读全文

发布于:2020-08-01T22:45:43Z  |  68次阅读  |  详细内容 »

微信支付亲属卡被当成诈骗工具 官方详解正确打开方式

既能方便老人操作支付,又能避免熊孩子无度消费,亲属卡成为了越来越多用户兼顾家庭的好帮手。但同时,还是有少数用户因为不了解这一功能、“误赠”亲属卡导致了资金损失。近日,有媒体报道称,广州的吴某冒充贷款中介人员,诱导受害人与其建立微信亲属卡,盗刷对方微信账户中的资金。 阅读全文

发布于:2020-08-01T14:44:34Z  |  68次阅读  |  详细内容 »

小伙落水失踪 10天内微信余额却被多次提现

8月2日,据媒体报道,7月19日晚,四川宜宾一男子在救落入江中的弟弟时不慎失踪,但随后却不断收到其微信余额提现和消费的提示信息。报道称,7月19日晚9点左右,男子姜某成和女友带着9岁的弟弟到江边游玩,结果弟弟不慎失足落水,姜某成急忙扑入水中营救,却不料双双遇险。最终弟弟被路人救起送医,姜某成却下落不明,目前搜寻工作仍在继续。 阅读全文

发布于:2020-08-02T17:51:19Z  |  66次阅读  |  详细内容 »

微软发布新的Windows Insider计划网站

微软今日发布了改版后的Windows Insider计划网站。新网站经过重新设计,更加方便用户访问和参与,新的Windows Insider网站将为测试者了解该计划提供一站式服务。Windows Insider计划是一个由数百万Windows最忠实的粉丝组成的社区,他们可以第一时间看到Windows接下来的变化。 阅读全文

发布于:2020-08-02T00:14:38Z  |  66次阅读  |  详细内容 »

福奇对新冠阴谋论作出回应 敦促民众 “遵循科学”

据外媒BGR报道,无论是被问及疫苗时间表还是新冠病毒阴谋论,白宫卫生顾问安东尼·福奇博士说,他试图总是以同样的方式回应。福奇称他只想继续敦促民众 “遵循科学”。这是福奇最近在接受MSNBC的Andrea Mitchell采访时的内容。 阅读全文

发布于:2020-08-01T12:44:59Z  |  64次阅读  |  详细内容 »

热门Linux命令