命令列練習解答:從基礎導覽指令到 man page 的使用習慣
上一篇提到的目錄操作練習(切換到家目錄、建立並進入
temp、建立檔案、列出內容、刪除目錄),這一節逐步示範解答,並補充幾個實際操作時會用到的技巧。
練習的核心心態:知道去哪裡找答案
在動手示範解答之前,講師先提醒一個心態:不需要害怕上網查資料,講師自己在課堂上也會遇到記不住指令的狀況,這是正常的。軟體工程這麼多年下來,真正重要的能力不是把所有指令背下來,而是知道遇到問題時該往哪裡找解法。
導覽到家目錄
家目錄(home directory)可以用波浪符號 ~ 當作捷徑直接切換過去,比起輸入完整路徑 /users/你的帳號 快上許多。切換後可以用 pwd(print working directory)確認目前所在位置。
命令列還有一個很好用、但容易被忽略的功能:tab 自動補全。在切換路徑時輸入開頭幾個字母後按 tab,就能自動補完剩下的路徑,不需要整段打完。
建立目錄與檔案
用 mkdir temp 建立一個名為 temp 的目錄,ls 確認它已經存在。接著 cd temp 切換進去,此時目錄應該是空的。用 touch hello 建立一個名為 hello 的空檔案,再次 ls 就能看到它。
這個檔案目前沒有副檔名,也就是說它沒有型別,就只是硬碟上的一段資料。
用 man page 查指令,順便學會列出隱藏檔案
講師示範用 man ls 查詢 ls 的手冊頁,想看看能不能查到「為什麼這個指令叫做 ls」,但手冊頁並沒有解釋這件事。手冊頁的品質與風格取決於撰寫者,時而簡潔、時而帶點個人色彩,某種程度上也是軟體工程史的縮影。
手冊頁內容通常很長,若要快速找到需要的段落,可以在頁面中輸入 / 再接關鍵字(例如 /-a)進行搜尋,這個技巧同樣適用於 less、cat 等會分頁顯示內容的工具。查完後按 q 就能離開 man page。
透過這個方式,講師找到常用的 ls -la:-l 會顯示詳細資訊(權限、檔案大小、最後修改時間等),-a 則會顯示隱藏檔案。預設情況下,以 . 開頭的檔案(例如 .gitignore)不會出現在一般的 ls 結果中,容易讓人誤以為檔案不存在,這時就需要加上 -a 才看得到。
切換回上層目錄與根目錄
用 cd .. 可以切換回上一層目錄,可以連續疊加 ../../../ 往上移動多層,但終究有極限,因為檔案系統不是無限延伸的,最頂層是 /,也就是根目錄(root)。
在根目錄下 ls,可以看到組成整個作業系統與檔案系統的所有內容,但講師強調這裡通常不是平常會操作的地方,除非真的清楚自己在做什麼,否則不建議在根目錄底下亂動。
回到家目錄的方式,一樣是用 cd ~ 這個捷徑,比每次輸入完整路徑快得多。
刪除目錄:為什麼用 rm -rf 而不是 rmdir
rmdir 只有在目錄是空的時候才能刪除,一旦裡面有檔案就會失敗,這也是為什麼講師幾乎不用 rmdir,而是直接用 rm 搭配參數處理。
因為 rm 原本是設計來刪除檔案的,對目錄要加上 -rf:-f 代表強制(force),不論目標是檔案或目錄都會強制刪除;-r 代表遞迴(recursive),會遞迴走訪目錄底下的每一個檔案並逐一刪除,而不是只處理最上層,否則會讓目錄留在一個不上不下的狀態。
值得注意的是,這裡的 -r 剛好呼應前面提到的 man page 查詢技巧:講師自己也不是很確定 -r 是否等於遞迴,所以直接查了 man rm 來確認,而不是憑印象作答,這正是這一節一開始強調的心態。rm -rf 本身是一個很危險的指令,因為它會不經確認就強制刪除所有內容,使用時需要格外小心。
複習
印出目前所在工作目錄的指令是什麼?
pwd(print working directory)
cd ~ 這個指令的作用是什麼?
切換到家目錄
建立新目錄要用什麼指令?
mkdir(make directory)
ls 指令常搭配哪些旗標使用,各自的作用是什麼?
ls -la:-l 顯示檔案詳細資訊(權限、大小、最後修改時間),-a 顯示隱藏檔案
rm -rf 這個指令做了什麼事?
不論目標是檔案還是目錄,都會遞迴且強制刪除其中所有內容
小測驗
印出目前工作目錄的指令是什麼?
pwd`ls` 指令的哪個旗標可以顯示隱藏檔案?
-a從檔案系統中任何位置切換回家目錄,最快的捷徑指令是什麼?
cd ~建立新目錄要用什麼指令?
mkdir要遞迴且強制刪除目錄,`rm` 要搭配什麼旗標?
rm -rf此文章是 FrontendMasters 上的 Full Stack Fundamentals, v3 課程筆記
