欧美激情aaaa_伊人久久久大香线蕉综合直播_日韩在线卡一卡二_亚洲成人人体

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 下定義的函數

參考資料

欧美激情aaaa_伊人久久久大香线蕉综合直播_日韩在线卡一卡二_亚洲成人人体
精品不卡在线视频| 国产精品美女久久福利网站| 久久国产福利国产秒拍| 亚洲欧美偷拍另类a∨色屁股| 日韩精品在线看片z| 宅男在线国产精品| 精品国产一区二区亚洲人成毛片 | 精品国产麻豆免费人成网站| 日韩片之四级片| 国产农村妇女精品| 亚洲国产精品影院| 精品亚洲aⅴ乱码一区二区三区| 激情五月播播久久久精品| 大陆成人av片| 欧美肥妇毛茸茸| 中文成人综合网| 青娱乐精品在线视频| av激情成人网| 精品国精品国产尤物美女| 夜夜嗨av一区二区三区网页| 青草av.久久免费一区| 一本色道久久综合狠狠躁的推荐 | 国内外成人在线视频| 日本韩国欧美在线| 中文字幕av免费专区久久| 日日噜噜夜夜狠狠视频欧美人| 成年人午夜久久久| 精品国产露脸精彩对白| 日韩激情av在线| 欧美日韩精品三区| 亚洲国产精品一区二区www在线| av在线不卡免费看| 中文字幕亚洲一区二区av在线| 精品一区二区综合| 久久嫩草精品久久久精品| 国产专区欧美精品| 久久午夜老司机| 国产高清精品在线| 国产精品素人视频| 不卡的av在线播放| 亚洲一区二区三区四区不卡| 91久久香蕉国产日韩欧美9色| 亚洲伦理在线精品| 欧美精品久久久久久久久老牛影院| 亚洲狠狠丁香婷婷综合久久久| 99re热视频精品| 亚洲精品一二三四区| 欧美视频精品在线观看| 婷婷国产在线综合| 精品国产乱码久久久久久老虎| 狠狠色丁香久久婷婷综合_中 | 国产不卡视频一区| 亚洲免费视频中文字幕| 欧美高清性hdvideosex| 国产精品18久久久| 亚洲午夜激情av| 337p日本欧洲亚洲大胆精品| 91免费国产视频网站| 中文字幕第一区二区| 成人综合激情网| 日韩av网站在线观看| 国产精品免费久久久久| 欧美一区二区视频在线观看| 国产成人综合在线观看| 亚洲午夜久久久久久久久电影网| 精品国产一区二区三区忘忧草| 91麻豆免费看| 成人美女视频在线观看| 久久精品二区亚洲w码| 亚洲成人av中文| 亚洲自拍偷拍综合| 亚洲色大成网站www久久九九| 久久久久久久一区| 精品国产免费人成在线观看| 欧美电影在哪看比较好| 欧美日韩一区精品| 91麻豆精品国产91久久久久久久久 | 在线一区二区视频| 91免费版在线| 成人激情小说乱人伦| 国产精品1区2区3区在线观看| 欧美bbbbb| 精品一区免费av| 国产主播一区二区三区| 国产成人av电影在线播放| 捆绑紧缚一区二区三区视频| 日本少妇一区二区| 久久成人免费电影| 国产精品一区二区无线| 国内精品第一页| 99国产精品久久| 99精品黄色片免费大全| 欧美性色欧美a在线播放| 欧美午夜一区二区三区| 日韩精品一区二区三区视频在线观看| 欧美日韩高清影院| 2021久久国产精品不只是精品 | 免费黄网站欧美| 成人手机电影网| 91久久精品一区二区| 日韩欧美久久久| 国产精品久久久久久福利一牛影视| 亚洲日本青草视频在线怡红院| 成人av网在线| 精品国产伦一区二区三区免费| 国产欧美精品一区aⅴ影院| 一区二区三区日韩欧美精品| 日本不卡一区二区三区高清视频| 韩国精品主播一区二区在线观看| 福利一区二区在线| 精品久久一二三区| 一区二区三区成人在线视频| 国产盗摄精品一区二区三区在线 | 日本网站在线观看一区二区三区| 高清成人在线观看| 欧美精品一区二区三区蜜臀| 亚洲欧美激情小说另类| 成人性生交大合| 亚洲精品一线二线三线| 日本人妖一区二区| 3d成人h动漫网站入口| 午夜不卡av免费| 欧美视频在线一区| 午夜激情一区二区三区| 欧美午夜精品理论片a级按摩| 中文字幕亚洲一区二区av在线 | 精品国产亚洲在线| 蜜桃一区二区三区在线| 日韩一区二区精品葵司在线| 亚洲一区二区精品视频| 91蜜桃网址入口| 五月激情六月综合| 欧美人妖巨大在线| 天堂av在线一区| 日韩精品一区二区三区在线观看 | 亚洲激情在线播放| 欧美日韩一区二区在线视频| 天天影视网天天综合色在线播放| 色综合久久天天| 亚洲大型综合色站| 欧美不卡一区二区三区四区| 国产精品18久久久久| 久久久精品tv| 色综合激情久久| 精品亚洲国内自在自线福利| 国产日韩v精品一区二区| 色婷婷国产精品| 久热成人在线视频| 亚洲一区二区三区国产| 精品国产自在久精品国产| 在线观看日韩av先锋影音电影院| 日韩精品一级二级| 亚洲精品乱码久久久久久久久 | 福利91精品一区二区三区| 亚洲乱码国产乱码精品精98午夜 | 欧美一区二区三区四区久久 | 中文字幕在线观看一区| 制服.丝袜.亚洲.中文.综合| 91色乱码一区二区三区| 国产最新精品精品你懂的| 天天色综合成人网| 亚洲欧美日韩国产手机在线 | 欧美日韩国产小视频| 99久久精品免费| 成人免费看片app下载| 精品一区二区三区视频在线观看 | 91视频免费观看| 丰满放荡岳乱妇91ww| 国产一区在线精品| 国产在线精品一区二区不卡了 | 精品国内片67194| 精品伦理精品一区| 精品久久99ma| 久久综合狠狠综合| 亚洲国产成人午夜在线一区| www欧美成人18+| 精品国产91九色蝌蚪| 国产偷v国产偷v亚洲高清| 久久久99久久精品欧美| 国产欧美一区二区精品久导航 | www.综合网.com| 91久久精品一区二区| 欧美日韩国产影片| 日韩欧美一区在线观看| 国产色综合一区| 中文字幕一区在线| 日韩精品一二三四| 国产成人aaa| 欧美日韩久久久久久| 日韩美女主播在线视频一区二区三区 | 在线成人小视频| 国产视频一区二区在线观看| 一区二区三区中文字幕电影| 天天色综合成人网| a在线欧美一区| 精品国产一区二区三区忘忧草| 中文字幕亚洲综合久久菠萝蜜| 日韩精品一二三| 色综合久久中文字幕综合网| 精品粉嫩超白一线天av|