在本指南中,我們將探索linux和Bash符號與命令的廣闊世界。從文件系統導航到文本處理、網絡、系統管理等,我們將涵蓋各種主題,并提供每個命令的實際示例。無論你是經驗豐富的Linux用戶還是剛剛入門,本指南都能幫助你提升命令行技能,在日常工作中變得更加高效。所以打開你的終端,讓我們開始吧!
重定向
Bash 最基本但最強大的功能之一是能夠重定向命令的輸入和輸出。以下是一些可用于重定向的符號:
- >:將命令的輸出重定向到文件,如果文件已存在則覆蓋其內容。例如,ls > linuxmi.txt將命令的輸出寫入ls名為linuxmi.txt.
- >>:將命令的輸出重定向到文件,如果文件已存在,則將其附加到文件末尾。例如,echo "Hello, world!www.linuxmi.com" >> linuxmi.txt將附加字符串“Hello, world!www.linuxmi.com” 到文件末尾。
- <:將命令的輸入從鍵盤改為從文件中獲取。例如,sort < linuxmi.txt將對 linuxmi.txt 的內容進行排序。
- 2>:用于將命令的錯誤輸出重定向到文件。
- 2>>:用于將命令的錯誤輸出附加到文件。
- &>:用于將命令的輸出和錯誤輸出都重定向到文件。
- &>>:用于將命令的輸出和錯誤輸出附加到文件。
管道
管道允許您將多個命令鏈接在一起,以便一個命令的輸出成為另一個命令的輸入。管道的符號是|。以下是一個例子:
ls -l | grep "linuxmi"
此命令以長格式 ( ) 列出當前目錄的內容ls -l,然后將輸出傳遞給grep命令,命令在輸出中搜索字符串“linuxmi”。
- tee:用于拆分命令的輸出并將其發送到文件和標準輸出。
通配符和通配符
Bash 支持稱為通配符的強大功能,它允許您使用通配符來匹配文件名模式。以下是 globbing 中最常用的一些符號:
- *: 匹配文件名中任意數量的字符。例如,ls *.txt將列出當前目錄中所有以.txt.
- ?: 匹配文件名中的任何單個字符。例如,ls file?.txt將列出當前目錄中所有以 開頭file且后面只有一個字符的文件,后跟.txt.
- [ ]: 匹配一組字符中的任何一個。例如,ls file[123].txt將列出當前目錄中以、或開頭file和結尾的所有文件,后跟.123.txt
常用表達
- grep:用于在文件或流中搜索模式。
- sed:用于對文件或流執行文本轉換。
- awk:用于圖形掃描和處理。
- egrep:用于擴展的正則表達式。
- fgrep:用于固定字符串正則表達式。
- regex:使用特殊字符和運算符指定文本模式的符號。
變量擴展和環境變量
- $:用于引用變量的值。
- export:用于在 Bash 中創建或修改環境變量。
- ${}:用于進行變量擴展。
- $(()):用于進行算術展開。
- env:用于顯示當前環境變量。
- echo:用于顯示環境變量的文本或值。
通配符和通配符
- *: 匹配文件名中任意數量的字符。
- ?: 匹配文件名中的任何單個字符。
否定
- !:與其他命令結合使用,執行取反。
算術運算
- +:算術表達式中的加法運算符。例如,echo $((2+3))將輸出5.
- -:算術表達式中的減法運算符。例如,echo $((16-5))將輸出11.
- *:算術表達式中的乘法運算符。例如,echo $((4*5))將輸出20.
- /: 算術表達式中的除法運算符。例如,echo $((20/2))將輸出10.
- $((expression)):用于在 Bash 中執行算術運算。例如,echo $((2 + 6))將打印值 8。
- expr:用于執行算術運算。
比較
- ==:用于比較條件表達式中兩個值是否相等。例如,if [ "$name" == "linuxmi" ]; then echo "Hello, linuxmi!"; fi將輸出“Hello, linuxmi!” 如果變量的name值為“linuxmi”。
- !=:用于比較條件表達式中的兩個值是否不相等。例如,if [ "$name" != "linuxmi" ]; then echo "You're not linuxmi!"; fi將在變量name的值不為“John”輸出“You’re not linuxmi!”。
條件執行
- &&:用于僅在前一個命令成功執行時執行后續命令。例如,command1 && command2 會僅在 command1 成功執行后才執行command2。
- ||:用于僅在前一個命令失敗時執行后續命令。例如,command1 || command2會僅在 command1 失敗后才執行 command2。
條件語句
- if:用于檢查條件是否為真并相應地執行命令。例如,if [[ $foo == "bar" ]]; then echo "foo is bar"; fi將檢查變量是否foo等于“bar”,如果為真則打印“foo is bar”。
- elifif:如果語句中的先前條件為假,則用于檢查其他條件。例如,if [[ $foo == "bar" ]]; then echo "foo is bar"; elif [[ $foo == "baz" ]]; then echo "foo is baz"; else echo "foo is something else"; fi將檢查是否foo等于“bar”并在為真時打印“foo is bar”,否則檢查是否foo等于“baz”并在為真時打印“foo is baz”,最后打印“foo is something else”如果前面兩個條件都為假。
- [[ ]]:用于在 Bash 中執行條件測試。
- case:用于將變量與模式列表進行匹配并相應地執行命令。例如:
case $fruit in
Apple)
echo "It's an apple"
;;
banana)
echo "It's a banana"
;;
*)
echo "It's something else"
;;
esac
將檢查變量的值fruit,如果等于“apple”則打印“It’s an apple”,如果等于“banana”則打印“It’s a banana”,對于任何其他值則打印“It’s something else”。
循環
- for: 用于創建一個遍歷項目列表的循環。例如,for fruit in apple banana orange; do echo $fruit; done將在不同的行中輸出“apple”、“banana”和“orange”。
- while:用于創建一個循環,只要條件為真,該循環就會繼續執行命令。例如,while true; do echo "Hello"; sleep 1; done會重復輸出“Hello”,直到腳本被中斷。
- until:用于執行命令,直到條件為真。
函數
- function:用于在 Bash 中定義一個函數。例如,function hello { echo "Hello, $1!"; }定義一個名為hello的函數,它接受一個參數并打印“Hello,”后跟參數。
- $1, $2, 等:用于指代傳遞給函數的第一個、第二個、第三個等參數。例如,在上面定義的函數中hello,$1指的是傳遞給函數的第一個參數。
數組
- []:用于在 Bash 中定義一個數組。例如,my_array=(apple banana orange)定義一個名為my_array“apple”、“banana”和“orange”的數組。
- ${array[@]}:用于引用 Bash 中數組中的所有元素。例如,echo ${my_array[@]}將在一行中輸出“apple banana orange”。
過程控制和管理
- &:用于在后臺運行命令。
- ctrl-c:用于終止正在運行的命令。
- ctrl-z:用于暫停正在運行的命令。
- ps:用于顯示有關正在運行的進程的信息。
- kill:用于終止正在運行的進程。
- nohup:用于在后臺運行命令,即使終端已關閉。
- nice:用于設置進程的優先級。
- renice:用于修改已經運行的進程的優先級。
文件系統操作
- cp:用于復制文件。
- mv:用于移動或重命名文件。
- rm:用于刪除文件。
- mkdir:用于創建目錄。
- rmdir:用于刪除目錄。
- ln:用于創建文件或目錄之間的鏈接。
文件和文本操作
- head: 用于顯示文件的前幾行。
- tail:用于顯示文件的最后幾行。
- sort:用于按字母或數字對文本行進行排序。
- uniq:用于刪除重復的文本行。
- cut:用于從文本行中提取特定的列或字段。
- paste:用于合并來自多個文件的行。
權限
- chmod:用于更改文件和目錄的權限。
- chown:用于更改文件或目錄的所有者。
- chgrp:用于更改文件或目錄的組。
- umask:用于設置新建文件和目錄的默認權限。
字符串操作、搜索和比較
- cut:用于從文件或流中提取特定列。
- tr:用于翻譯或刪除字符。
- sort:用于對文本行進行排序。
- uniq:用于從文件或流中刪除重復行。
- grep:用于在文件或流中搜索模式。
- sed:用于對文件或流執行文本轉換。
- awk:用于圖形掃描和處理。
- diff: 用于逐行比較兩個文件。
- cmp:用于逐字節比較兩個文件。
網絡
- ping:用于測試與網絡主機的連接。
- curl:用于向服務器傳輸數據或從服務器傳輸數據。
- wget:用于從互聯網下載文件。
- ssh:用于安全地連接到遠程計算機。
- nslookup:用于查詢 DNS 服務器以將主機名解析為 IP 地址。
- ifconfig:用于顯示和配置網絡接口。
SSH 和加密
- ssh-keygen:用于生成和管理用于安全遠程訪問的 SSH 密鑰。
- scp:用于通過 SSH 連接在系統之間安全地傳輸文件。
- openssl:用于加密功能,例如生成和管理 SSL/TLS 證書、加密和解密。
- gpg:用于加密、解密和數字簽名驗證。
系統信息、維護和管理
- sudo:用于運行具有提升權限的命令。
- su:用于切換到不同的用戶帳戶。
- systemctl:用于管理基于 systemd 的 Linux 發行版中的系統服務。
- uptime:用于顯示系統運行了多長時間。
- journalctl:用于查看系統日志。
- fdisk:用于創建和操作磁盤分區。
- mount:用于在系統上掛載文件系統。
- top:用于顯示系統資源使用情況。
- htoptop:提供實時系統監控和資源使用信息的更高級版本。
- ps:用于顯示有關正在運行的進程的信息。
- df:用于顯示磁盤空間使用情況。
- du:用于顯示文件或目錄的大小。
- apt-get:用于安裝、刪除和更新軟件包的包管理工具。
- dpkg:用于安裝和管理軟件包的包管理工具。
- shutdown:用于關閉或重啟系統。
- free:用于顯示系統內存使用情況。
- uname:用于顯示內核版本、主機名等系統信息。
- lscpu:用于顯示CPU信息。
- lsusb:用于顯示系統連接的USB設備。
- nmon:用于顯示詳細的系統性能信息,包括CPU、內存、磁盤I/O和網絡使用情況。
- sar:用于收集和報告一段時間內的系統性能數據。
- lshw:用于顯示系統硬件信息。
- dmidecode:用于顯示系統的BIOS和硬件信息。
- lsblk:用于顯示系統中塊設備(如硬盤)的信息。
- lspci:用于顯示系統連接的PCI設備信息。
- lsusb:用于顯示系統連接的USB設備信息。
用戶輸入
- read:用于從命令行讀取用戶輸入。
- select:用于向用戶顯示選項菜單。
命令行編輯
- ctrl-a:用于將光標移動到行首。
- ctrl-e:用于將光標移動到行尾。
- ctrl-k:用于刪除從光標位置到行尾的文本。
- ctrl-u:用于刪除從光標位置到行首的文本。
文本編輯
- nano:一個簡單的命令行文本編輯器。
- vi或vim:具有許多功能的更高級的文本編輯器。
- cat:用于在終端上顯示文件的內容。
- head: 用于顯示文件的前幾行。
- tail:用于顯示文件的最后幾行。
作業控制
- jobs:用于顯示后臺作業列表。
- fg:用于將后臺作業帶到前臺。
- bg:用于將暫停或停止的作業移至后臺。
- kill:用于終止正在運行的進程。
用戶和組管理
- useradd:用于創建新的用戶帳戶。
- usermod:用于修改現有用戶帳戶。
- userdel:用于刪除用戶帳戶。
- groupadd:用于創建新的用戶組。
- groupmod:用于修改已有的用戶組。
- groupdel:用于刪除用戶組。
- passwd:用于更改用戶密碼。
調試和故障排除
- strace:用于跟蹤進程發出的系統調用和信號。
- ltrace:用于跟蹤進程進行的庫調用。
- gdb: 一個強大的調試器,用于調試 C 和 C++ 程序。
- tcpdump:用于捕獲和分析網絡流量。
- wireshark: 用于分析網絡流量的基于 GUI 的工具。ellaneous
- echo:用于在終端上顯示消息。
- printf:用于格式化和顯示數據。
- date:用于顯示或設置系統日期和時間。
- tar:用于創建或提取壓縮檔案。
各種各樣的
- cal:用于顯示日歷。
- date:用于顯示或修改系統日期和時間。
- sleep:用于將腳本或命令的執行延遲指定的時間量。
- tee:用于將輸出重定向到屏幕和文件。
- history:用于顯示當前shell會話的命令歷史。
- echo:用于將文本打印到終端或輸出到文件。
注意:請注意,本指南中提供的符號分類并非絕對,它基于一種可能的分類方式。某些符號可能適用于多個類別,并且可能存在一些重疊或重復。提供的符號列表也并非詳盡無遺,可能因Linux發行版和版本的不同而有所變化。我們鼓勵讀者參考其系統文檔獲取更多信息。本指南旨在提供關于Linux和Bash符號和命令的全面概述,但并不意味著是權威資源。
感謝閱讀我們關于Linux和Bash符號和命令的全面指南。希望您發現本指南對掌握命令行非常有幫助。為了及時了解有關在日常工作中使用這些命令的最新技巧、技巧和最佳實踐,請務必長期關注Linux迷www.linuxmi.com以獲取未來的文章。我們將提供深入的示例和用例,幫助您成為更熟練的Linux用戶和命令行專家。