可怕的 Linux Link to heading

需多人對 Linux 的第一印象莫過於底下吧,全部都是終端機,甚至還有駭客任務的 matrix 在跑。

Linux like hacker

雖然標題是克服 Linux 恐懼,但其實是要接受終端機的便利。我沒有要在這邊戰作業系統的優劣,只是就開發的角度來說,Unix-like 系統使用終端命令管理開發套件較為容易,這也是很多開發者使用 Linux 也好 Mac OS 也罷,因為他們都歸根於 Unix-like 系統。

何謂 Unix like OS Link to heading

這邊沒有要深入探討作業系統的演化史,有興趣的可以去翻閱計算機概論相關的書籍。以不嚴謹但好理解的角度來說, Unix-like OS 最底層是 kernal , kernal 用來管理電腦處理資料,像是行程規劃、記憶體管理……等,這邊不做詳細說明,可以把它想成指揮電腦裡面工作程序的程式。接著再往外一層會是 Utility 公用程式以及應用程式,像 Google Chrome 、 Steam 、 Firefox…..等應用程式就是放在這裡,接著最外層是介面程式,而CLI (Command Line Interface) 就是屬於介面程式的一種,或是以後會介紹的桌面管理套件 (Window Manager) 以下為結構示意圖, User 為最上層。

Unix-like-os-structure

入坑 Linux Link to heading

要怎麼停止畏懼一樣未知的東西?「玩」,建議第一次接觸 Linux 可以使用虛擬機,反正玩壞了就再開一個新的虛擬空間就好,不用害怕把電腦格式化。對新手較友善的大概就是 Ubuntu 和 Mint,這兩個都是以 Linux 為基礎寫的作業系統,而他們的名字是發行版的名字,以初學者來說這兩個都可以玩玩看,而不同的發行版各有優缺,像是效能、穩定度諸如此類的,這些可以等到摸索完基本指令後再做選擇。

基礎的指令 Link to heading

接下來我會介紹最基礎的終端指令,至於這些東西到底要不要記,其實沒有一定的答案,但只要用久了,自然就會記起來,而且他的語言邏輯也很好理解,基本上會英文就可以推出來了。

變更當前檔案目錄(Change Directory) Link to heading

這個指令可以用來變更終端機當前工作目錄,因為英文是 change dierctory ,因此取首兩個字母「cd」當作指令。然後在 Linux 終端中,使用者的家(home)目錄以「」來表示,因此以下的指令就是「cd」變更當前工作目錄到「」家目錄。

cd ~

除了「~」外還有兩個特殊符號。

  1. 「.」這是一個英文句點,它代表的意思是當前目錄,這會在之後「open」的指令講解。
  2. 「..」這是兩個英文據點,它代表上一個層級的目錄,因此如果想要回到上一層目錄,就跟電腦在檔案總管時按下上一步那個按鈕一樣,可以回到上一層資料夾,以下為示範回到上一步目錄。
cd ..

介紹完特殊用法,接下來講個通則。基本上只要知道一個檔案夾的路徑,就可以用 「cd」變換終端機的目錄到那個檔案夾。

列出當前目錄的檔案(List) Link to heading

當學會變更目錄有什麼用,還是不能像檔案總管一樣點兩下資料夾就可以看到檔案夾底下的檔案啊。此時可使用『ls』指令,取自 list,用於列出當前目錄的檔案。可以列出當前檔案夾下的檔案,以下為示範指令。

ls

這樣一來就可以查看當前檔案夾的內容了。但!還不是所有內容,有個檔案命名很奇怪可能會長這樣「.filename」filename 會是那個檔案的名字,但前面會多一個英文句點,它是一種預設隱藏的檔案,用單純的「ls」是無法看到他的,要使用「ls -a」a 就是 all 的意思,要列出當前目錄的「所有」檔案,以下為示範。

ls -a

建立檔案或資料夾 Link to heading

當學會怎麼進出以及查看檔案目錄之後,就會想要建立檔案或資料夾。建立資料夾不像在檔案總管按個右鍵,選取新增資料夾一樣,而是有個專門的指令「mkdir」乍看之下沒什麼規則的亂碼,他其實是 make a directory ,就是創建檔案目錄的縮寫,然後在「mkdir」後面打上想要取的檔案名稱,以下面指令為例,在當前檔案目錄創建一個名為 folder 的資料夾。

mkdir folder

建立完資料夾就需要建立一個檔案吧,**注意!**創建檔案的時候一定要加上副檔名,副檔名會決定這個檔案的屬性,這很重要,因為通常不會是預設。以下我會用 txt 純文字檔為例。而創建檔案的指令是「touch」而這個單字跟創建檔案有什麼關係,至今我也是不明白,不過我是用一隻手可以接觸到檔案目錄裡的檔案這個畫面記憶的,有需要的可以參考一下。以下是我建立了「pure-text-file」的純文字檔。

touch pure-text-file.txt 

刪除檔案或資料夾 Link to heading

講完創建之後,要怎麼刪除不要的檔案呢?若要刪除「」資料夾的可以使用「rmdir」意思是 remove directory,後面接上要刪除的「」資料夾名稱。以下為示範刪除上面創建名為「folder」的資料夾名稱。

rmdir folder

若要刪除檔案可以用「rm」後面接上檔案名稱,它就是 remove 指定的檔案,以下示範上面所創建的「pure-text-file.txt」

rm pure-text-file.txt

「rm」也可以用來刪除「」資料夾,只要在後面加上「-d」d 就是 directory,以下一樣示範「folder」這個資料夾。

rm -d folder/

若要刪除有檔案的檔案目錄可以使用「rm -ri」後面的「r」是代表遞迴(recursive)刪除目錄裡的檔案,請小心使用,他會把資料夾的檔案都刪光,所以要再加上「i」會比較安全,「i」會在刪除前再詢問一次,這樣可以避免誤刪,以下示範當「folder」不是空資料夾時的刪除。

rm -ri folder/

注意危險,在 「rm」後面加上「-f」可以強制刪除,不會有任何警告,千萬千萬不要使用以下指令加上檔名,它會強制刪除那個資料夾。

rm -rf

最最最危險不要使用,除非你不要這台電腦的資料了,不准在 rm -rf 後面加上 /,像下面這個指令,通常,一般電腦應該會擋,但為了安全起見不要嘗試,他會把你整台電腦跟目錄全刪了,而且不會警告。

rm -rf /

總結 Link to heading

這次先介紹了基本的創建刪除列出以及變換檔案目錄,上面那些指令還有很多詳細的功能可以用一篇慢慢介紹,接下來會針對開發者的部分開始介紹一些工具,而不是只圍繞在指令上,畢竟指令只是個操作的媒介,真正強大的是工具。