提升你的命令列技能:Bash 和 Linux 符號與命令的完整指南
本指南將帶領您去探索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 inapple)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:用於顯示和設定網路介面。
- netstat:用於顯示網路統計資訊和活動連線數。
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使用者和命令列專員。
以上是提升你的命令列技能:Bash 和 Linux 符號與命令的完整指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

CentOS 和 Ubuntu 的關鍵差異在於:起源(CentOS 源自 Red Hat,面向企業;Ubuntu 源自 Debian,面向個人)、包管理(CentOS 使用 yum,注重穩定;Ubuntu 使用 apt,更新頻率高)、支持週期(CentOS 提供 10 年支持,Ubuntu 提供 5 年 LTS 支持)、社區支持(CentOS 側重穩定,Ubuntu 提供廣泛教程和文檔)、用途(CentOS 偏向服務器,Ubuntu 適用於服務器和桌面),其他差異包括安裝精簡度(CentOS 精

CentOS 安裝步驟:下載 ISO 映像並刻錄可引導媒體;啟動並選擇安裝源;選擇語言和鍵盤佈局;配置網絡;分區硬盤;設置系統時鐘;創建 root 用戶;選擇軟件包;開始安裝;安裝完成後重啟並從硬盤啟動。

CentOS將於2024年停止維護,原因是其上游發行版RHEL 8已停止維護。該停更將影響CentOS 8系統,使其無法繼續接收更新。用戶應規劃遷移,建議選項包括CentOS Stream、AlmaLinux和Rocky Linux,以保持系統安全和穩定。

Docker利用Linux內核特性,提供高效、隔離的應用運行環境。其工作原理如下:1. 鏡像作為只讀模板,包含運行應用所需的一切;2. 聯合文件系統(UnionFS)層疊多個文件系統,只存儲差異部分,節省空間並加快速度;3. 守護進程管理鏡像和容器,客戶端用於交互;4. Namespaces和cgroups實現容器隔離和資源限制;5. 多種網絡模式支持容器互聯。理解這些核心概念,才能更好地利用Docker。

CentOS 已停止維護,替代選擇包括:1. Rocky Linux(兼容性最佳);2. AlmaLinux(與 CentOS 兼容);3. Ubuntu Server(需要配置);4. Red Hat Enterprise Linux(商業版,付費許可);5. Oracle Linux(與 CentOS 和 RHEL 兼容)。在遷移時,考慮因素有:兼容性、可用性、支持、成本和社區支持。

CentOS 停止維護後,用戶可以採取以下措施應對:選擇兼容髮行版:如 AlmaLinux、Rocky Linux、CentOS Stream。遷移到商業發行版:如 Red Hat Enterprise Linux、Oracle Linux。升級到 CentOS 9 Stream:滾動發行版,提供最新技術。選擇其他 Linux 發行版:如 Ubuntu、Debian。評估容器、虛擬機或云平台等其他選項。

如何使用 Docker Desktop? Docker Desktop 是一款工具,用於在本地機器上運行 Docker 容器。其使用步驟包括:1. 安裝 Docker Desktop;2. 啟動 Docker Desktop;3. 創建 Docker 鏡像(使用 Dockerfile);4. 構建 Docker 鏡像(使用 docker build);5. 運行 Docker 容器(使用 docker run)。

VS Code擴展安裝失敗的原因可能包括:網絡不穩定、權限不足、系統兼容性問題、VS Code版本過舊、殺毒軟件或防火牆干擾。通過檢查網絡連接、權限、日誌文件、更新VS Code、禁用安全軟件以及重啟VS Code或計算機,可以逐步排查和解決問題。
