筆者已看文章校稿多次,文章內容難免會有些錯誤,若有發現任何錯誤,歡迎來筆者的 GitHub 開 issue。
3-13 頁
最下面備註有提到「GIF 動畫是使用 fish shell」,但實際上並沒有動畫,這是因為後來把動畫移除,但沒有同步更新文章的關係。
錄動畫很痛苦,所以下面改用說明的方法解釋 Bash 和 Fish 的差異:
echo `pwd`
上面這段指令是 Bash 或 Zsh 可以用的,它會把 pwd 指令執行過後的內容,置換進指令反引號的位置。比方說 pwd 執行結果為 /home/miles
,則最後執行的指令會像下面這樣:
echo /home/miles
Fish 的替代寫法如下:
echo (pwd)
Fish 在 3.4 版開始支援
$()
的寫法。
Bash 還有另一個類似的寫法如下:
echo $(pwd)
若輸出結果有換行的話,則會被換成空白,比方說,目錄裡有 file1 和 file2 兩個檔案,那下面兩個指令結果會是一樣的:
echo $(ls)
echo file1 file2
這可以應用在 for 迴圈,或是多參數的指令。比方說使用 docker rm
指令無差別清除所有的 container:
下指令前請三思,會真的直接把所有 container 全部移除
# Bash / Zsh
docker rm -vf `docker ps -qa`
# 或這個寫法也行
docker rm -vf $(docker ps -qa)
# Fish
docker rm -vf (docker ps -qa)
docker rm
的 -v
參數指的是順便把 volume 砍掉;另外可以試著執行 docker ps -qa
指令,就會理解上面範例的全貌了。