Skip to main content

筆者已看文章校稿多次,文章內容難免會有些錯誤,若有發現任何錯誤,歡迎來筆者的 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 指令,就會理解上面範例的全貌了。