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