在當今快速發展的技術環境中,掌握命令列可以簡化開發人員的開發過程。可以透過各種 shell 環境(如 Bash 和 PowerShell)存取命令列。本文探討了 shell 環境,展示了它在執行複雜操作、導航檔案、處理資料和文字操作中的作用。
shell 是一種使用者介面,允許使用者使用基於文字的命令與電腦作業系統進行互動。將其視為使用者和作業系統之間的轉換器。
shell 接受使用者輸入的人類可讀指令,並將其轉換為作業系統瞭解和執行的指令,也將這些指令的結果或輸出顯示給使用者。與圖形使用者介面 (GUI) 相比,這種類型的互動稱為命令列介面 (CLI),可讓您更直接地控制系統。
使用命令列介面,您可以執行程式、管理文件和執行各種任務。
有多種可用的 shell,每種都有其獨特的功能和語法。一些最廣泛使用的 shell 包括:
Bourne-Again Shell(BASH) :這是 Linux 發行版和 macOS 上的 shell 之一。它的語法與原始的 Unix shell 相容,使其成為流行的選擇。
PowerShell: PowerShell是Windows系統預設預先安裝的shell環境,它是物件導向的。
Z Shell(ZSH): Zsh 以其廣泛的客製化選項和高級功能而聞名。它提供了改進的選項卡補全、歷史管理和插件支援。
本文使用 Bash shell 來取得程式碼範例和命令。如果您不熟悉 Bash,請考慮使用適用於 Windows 的 Git Bash 或 macOS 上的內建終端應用程式。兩者都提供了類似 Bash 的體驗,您可以在本文中了解。
透過命令列瀏覽檔案系統是掌握 shell 環境的基本技能之一。更改目錄、管理檔案和理解路徑名的能力對於有效的命令列操作至關重要。目錄在 Windows 系統中稱為資料夾。
用於導航檔案系統的各種命令是:
命令 | 功能 |
---|---|
cd(更改目錄) | 此命令用於更改您的工作目錄。您可以鍵入 cd 後接目錄名稱或路徑來變更到其他目錄。例如: cd newfile. |
pwd(列印工作目錄) | 此命令顯示您正在使用的目前目錄的路徑。 |
ls | 此指令用於列出目錄的內容。 |
某些命令具有修改其功能的元件。這些元件稱為選項和參數。
選項用於調整指令的操作,而參數則用於指令的操作。例如:
ls -l myfile
-l 是選項,而 myfile 是參數。
這是一個包含命令選項及其功能的表:
命令 | 功能 |
---|---|
ls -a | 列出所有文件內容,包括隱藏內容 |
ls -t | 按上次修改時間列出所有文件內容 |
cd - | 這將帶您到上一個目錄 |
cd .. | 這將帶您到父目錄 |
cd ~用戶名 | 這將帶您到指定使用者名稱的目錄 |
rm -r | 這將刪除目錄及其內容。 |
ls -l | 以長格式列出所有文件內容 |
ls-al | 列出所有文件內容,包括長格式的隱藏內容。 |
mkdir:此指令用於建立目錄,例如: mkdir newDirectory
touch:這個指令會建立一個空文件,例如: touch Mynewfile
建立一個名為「Mynewfile」的文件
mv:此指令既可以移動檔案/目錄,也可以重新命名它們,例如: mv oldfile newfile
,該指令將 oldfile 移動或重新命名為 newfile。
cp:此指令用於複製檔案和目錄,例如: cp Myfile backup
將「Myfile」複製到「backup」目錄中。
rm:此指令刪除文件,例如: rm unwanted.txt
rmdir:指令刪除空目錄,例如:rmdir emptydir
有些文字編輯器可讓您直接從命令列建立、檢視和修改文字檔案。其中一些流行的文本編輯器包括:
cat: cat指令在終端機中顯示檔案的全部內容,例如: cat filename
less: less 指令可讓您一次一屏查看文件的內容,從而實現導航和搜尋。
head 和 tail:這些指令分別顯示檔案的第一行或最後幾行。
範例: grep "keyword" myFile
範例: sed 's/old/new/' myfile
,這將在名為“myfile”的檔案中用“new”替換“old”
語法: awk 'pattern { action }' file
pattern
指定執行操作的條件。
action
是模式匹配時要執行的程式碼區塊。
file
是要處理的輸入檔。如果未指定,awk 從標準輸入讀取。
範例: awk '{sum += $1} END {print sum}' myfile
,這將計算列中數字的總和並列印它們的總和。
遠端系統的 Shell 存取是透過 Secure Shell (SSH) 等協定實現的。 SSH 是一個私鑰,使您能夠存取遠端伺服器;它透過加密用戶電腦和遠端伺服器之間的通訊來確保安全連接。
要建立 SSH 連接,管理員需要提供遠端伺服器的位址和身份驗證憑證,例如使用者名稱和密碼或金鑰對
ssh your_username@remote-machine-address
將“your_username”替換為您的實際使用者名,將“remote-machine-address”替換為提供的位址。
如果您使用基於金鑰的身份驗證,它可能如下所示:
ssh -i /path/to/your/private/key your_username@remote-machine-address
如果您在鍵入時沒有看到字符,請不要擔心;這是一項安全功能。
一旦完成,管理員就可以在遠端電腦上執行命令、管理檔案並執行各種管理任務。
作業系統提供對 shell 環境中的檔案和目錄的存取權限。這決定了可以對文件和目錄執行哪些操作。這允許遠端工作人員從不同的系統存取檔案。您可以使用ls -l
指令查看檔案的權限設定。
共有三種基本權限類型:
Read(r):這允許使用者查看目錄或檔案內容。
Write(w):這允許使用者修改或刪除文件,以及在目錄中建立或刪除文件。
執行(x):這授予檔案執行權限。
檔案權限為三類使用者設定:
擁有者:建立檔案或目錄的使用者。
群組:指定的使用者群組。
其他:不屬於所有者或群組類別的任何人。
chmod
指令用於修改檔案權限。您可以透過數字或符號方式變更權限。
數值範例:chmod 774 myfile
符號範例:chmod u+rwx myfile
chown
指令用於變更檔案或目錄的擁有者和群組。
chown username filename
這會將filename
的擁有權分配給名為username
用戶
chown username:groupname filename
這會將filename
的擁有權指派給名為username
用戶,並將群組擁有權設定為groupname
chown -R username:groupname directory
這會遞歸地將directory
中所有檔案和子目錄的所有權變更為username
和groupname
。
重定向是操作命令輸入和輸出的基本技術。
重定向允許您重定向命令輸出的位置以及命令獲取輸入的位置。
輸出重定向: >
符號用於將指令的輸出重定向到檔案。如果文件不存在,則建立它;如果存在,則會被覆蓋。範例: cat myfile > newfile
將把 myfile 的內容重新導向到 newfile。
追加重定向: >>
符號與輸出重定向類似,但它不會覆蓋文件,而是將輸出加入到現有文件的末尾。範例: cat myfile >> newfile
將把 myfile 的內容加入 newfile 內容的末端。
### 輸入重定向
管道 (|)
一根管子|
用於將一個命令的輸出作為另一個命令的輸入發送。這用於連接命令。
例如: ls -l | grep "file"
在此範例中,ls -l 命令以詳細格式列出文件,然後透過 grep 過濾輸出以僅顯示包含單字「file」的行。
管道和重定向可以結合起來執行複雜的操作。
例如: ls -l | grep "file" | sort > sorted_file_list.txt