目錄
Linux命令總結
文件操作相關命令
ls
cd
pwd
cp
mv
rm
cat
mkdir
rmdir
touch
文本處理操作命令
grep
awk
sed
進程管理操作相關命令
ps
top
htop
kill
pkill
killall
chmod
chown
網絡操作相關命令
ping
ifconfig
netstat
ss
lsof
curl
wget
ssh
端口操作相關命令
nmap
系統信息查看相關命令
uname
df
du
free
查看CPU和內存使用相關命令
top
htop
ps
vmstat
free
gcc/g++編譯器選項總結
編譯鏈接選項
調優選項
警告和錯誤選項
其他選項
Linux命令總結
文件操作相關命令
ls
1. ls:列出目錄中的文件和目錄。
常用選項:
-a????????顯示包括隱藏文件在內的所有文件;
-l????????以長格式顯示文件信息,包括文件權限、所有者、大小等;
-t????????按修改時間排序。
示例:ls -al列出當前目錄下所有文件的詳細信息,包括隱藏文件。
cd
??2. cd :切換目錄。
常用選項:
..????????返回上一級目錄;
~????????返回當前用戶的主目錄。
示例:cd /home/user切換到 /home/user目錄;cd ..返回上一級目錄。
pwd
??3. pwd:顯示當前工作目錄。
cp
??4. cp :復制文件或目錄。
常用選項:
-r????????復制目錄時遞歸復制子目錄。
示例:cp file1.txt file2.txt復制/拷貝 file1.txt為 file2.txt;cp -r dir1 dir2復制/拷貝目錄 dir1到 dir2。
mv
??5. mv :移動或重命名文件或目錄。
示例:mv file1.txt /home/user?將 file1.txt?移動到 /home/user目錄;mv oldname.txt newname.txt將文件 oldname.txt重命名為 newname.txt。
rm
??6.rm :刪除文件或目錄。
常用選項:
-r????????遞歸刪除目錄及其內容。
示例:rm file.txt刪除文件 file.txt;rm -r dir刪除目錄 dir及其內容。
cat
??7. cat?:查看文件內容。
示例:cat file.txt?顯示 file.txt的內容。
mkdir
??8.mkdir:創建目錄。
示例:mkdir dir?創建一個名為 dir的目錄。
rmdir
??9. rmdir?:刪除空白目錄。
示例:rmdir dir刪除空白的 dir目錄。
touch
??10. touch?:創建空文件或更新文件的訪問和修改時間。
示例:touch file.txt創建一個名為 file.txt的空文件。
文本處理操作命令
grep
grep:在文件中搜索特定的字符串。
awk
awk:強大的文本處理工具。
sed
sed:流編輯器,用于文本的替換、插入、刪除等操作。
進程管理操作相關命令
ps
??1.ps:顯示當前系統中的進程信息。
常用選項:
aux????????顯示所有進程,包括其他用戶的進程;
-eo pid,ppid,%cpu,%mem,cmd????????指定顯示的列,如進程 ID、父進程 ID、CPU 使用率、內存使用率和命令等。
示例:ps aux顯示系統中所有進程的信息;ps -eo pid,ppid,%cpu,%mem,cmd指定顯示特定的列。
top
??2.top:動態顯示系統中進程的資源使用情況,包括 CPU 和內存使用情況等。
常用選項:
-d????????后跟時間間隔,以秒為單位指定兩次屏幕刷新之間的間隔時間。
示例:top -d 2每 2 秒刷新一次屏幕,動態顯示進程信息。
htop
??3. htop:類似于 top,但提供了更直觀的界面和更多的功能。
常用選項:
可以通過方向鍵和各種快捷鍵來操作,如 F5以樹形視圖顯示進程,F6按內存使用排序等。
示例:直接輸入 htop?啟動該命令。
kill
4. kill?:終止進程。
常用選項:
-9(信號)? ? ? ? 強制終止進程。
示例:kill 1234終止進程 ID 為 1234 的進程;kill -9 1234強制終止進程 ID 為 1234 的進程。
pkill
??5. pkill:通過進程名或其他屬性終止進程。
示例:pkill firefox終止所有名為 firefox 的進程。
killall
??6. killall:通過進程名終止所有匹配的進程。
示例:killall firefox終止所有名為 firefox 的進程。
chmod
? 7.? chmod:更改文件或目錄的權限。
chmod基本語法
chmod [選項] 權限模式 文件/目錄
- 權限模式:定義了文件的權限,可以使用數字表示(如 755 或 644),也可以使用符號表示(如 +rw 或 +x)。
- 文件/目錄:要更改權限的文件或目錄的路徑。
數字表示法
在數字表示法中,每個權限用一個數字表示:讀權限(r)為 4,寫權限(w)為 2,執行權限(x)為 1。通過將這些數字相加,可以為文件設置所需的權限。例如:
7
:讀、寫、執行權限(4+2+1)5
:讀、執行權限(4+1)4
:只讀權限6
:讀、寫權限(4+2)數字權限模式通常是三個數字的組合,分別代表用戶(文件所有者)、組和其他用戶的權限。例如:
755
:用戶有讀、寫、執行權限,組和其他用戶有讀、執行權限。644
:用戶有讀、寫權限,組和其他用戶有只讀權限。符號表示法
符號表示法使用操作符(
+
、-
、=
)和權限字母(r
、w
、x
)來更改權限。例如:
chmod +x filename
:為文件?filename
?添加執行權限。chmod -w filename
:移除文件?filename
?的寫權限。chmod u=rw filename
:設置文件?filename
?的用戶權限為讀和寫。常用選項
-R, --recursive
:遞歸更改目錄及其內容的權限。示例
- 更改文件的權限
chmod 755 script.sh
將?
script.sh
?文件的權限設置為用戶有讀、寫、執行權限,組和其他用戶有讀、執行權限。
- 為文件添加執行權限
chmod +x script.sh
為?
script.sh
?文件添加執行權限。
- 移除文件的寫權限
chmod -w file.txt
移除?
file.txt
?文件的寫權限。
- 遞歸更改目錄及其內容的權限
chmod -R 755 myproject
遞歸地將?
myproject
?目錄及其所有子目錄和文件的權限設置為用戶有讀、寫、執行權限,組和其他用戶有讀、執行權限。
- 設置文件的具體權限
chmod u=rw,g=rx,o=rx file.txt
設置?
file.txt
?文件的用戶權限為讀和寫,組權限為讀和執行,其他用戶權限為讀和執行。這也可以簡寫為?chmod u=rw,g+rx,o+rx file.txt
?或使用數字表示法?chmod 655 file.txt
(但注意,數字表示法無法直接表達只添加或移除特定權限,它總是設置完整的權限模式)。注意事項
- 使用?
chmod
?命令時需要確保具有足夠的權限,通常只有文件的所有者或超級用戶(root)才能修改權限。- 謹慎操作,避免不小心修改了文件的權限,導致數據丟失或其他安全問題。特別是使用?
-R
?選項時,要確保遞歸更改的范圍是正確的。
chown
? ? 8.chown:更改文件或目錄的所有者。
chown基本語法
?chown [選項] [所有者][:[組]] 文件/目錄
- 所有者:指定新的文件所有者用戶名或用戶 ID。
- 組:可選,指定新的文件所屬組組名或組 ID。如果指定了組,它應該緊跟在所有者之后,并用冒號 (
:
) 分隔。如果只指定了組,前面應該加一個冒號。- 文件/目錄:要更改所有權的文件或目錄的路徑。
常用選項
使用如下:
-R, --recursive
:遞歸更改目錄及其內容的所有者和組。-v, --verbose
:顯示處理的每個文件的詳細信息。-c, --changes
:僅顯示更改的文件,對于未更改的文件不顯示任何信息。
- 更改文件的所有者
chown newowner filename
例如,將?
file.txt
?的所有者更改為?john
chown john file.txt
- 更改文件的所有者和組
chown newowner:newgrooup filename
例如,將?
file.txt
?的所有者更改為?john
,組更改為?staff
chown john:staff file.txt
- 僅更改文件的組
chown :staff file.txt
例如,將?
file.txt
?的組更改為?staff
chown :staff file.txt
- 遞歸更改目錄及其內容的所有者和組
chown -R newowner:newgroup directoryname
例如,將?
myproject
?目錄及其所有子目錄和文件的所有者更改為?john
,組更改為?staff
chown -R john:staff myproject
- 顯示更改的詳細信息
chown -v newowner filename
例如,詳細顯示?
file.txt
?所有者的更改信息chown -v john file.txt
- 僅顯示更改的文件
chown -c newowner filename
如果?
file.txt
?的所有者已經是?john
,則不會顯示任何信息;如果所有者被更改,則會顯示更改信息。注意事項
- 只有超級用戶(root)或當前文件的所有者才有權限使用?
chown
?命令更改文件的所有者。- 如果指定的用戶或組不存在,
chown
?命令會報錯。- 使用?
chown
?命令時要小心,特別是與?-R
?選項一起使用時,因為它會遞歸地更改目錄及其內容的所有權。假設你有一個目錄?
docs
,其中包含多個文件和子目錄,你想要將?docs
?目錄及其所有內容的所有者更改為?alice
,組更改為?developers
,并顯示詳細信息,你可以使用以下命令:chown -Rv alice:developers docs
這將遞歸地更改?
docs
?目錄及其所有子目錄和文件的所有者和組,并顯示每個被更改文件的詳細信息。
網絡操作相關命令
ping
??1. ping?:測試網絡連通性。
示例:ping google.com測試與 google.com 的網絡連通性。
ifconfig
??2. ifconfig?:配置和顯示網絡接口信息。
示例:ifconfig?查看當前網絡接口的配置信息。
netstat
??3. netstat?:顯示網絡連接、路由表等信息,可以查看端口的使用情況。
常用選項:
-an????????顯示所有監聽的和非監聽的端口;
-tuln????????顯示監聽的 TCP 和 UDP 端口。
示例:netstat -an顯示所有網絡連接和端口信息;netstat -tuln顯示監聽的 TCP 和 UDP 端口。
ss
??4. ss :類似于 netstat,用于查看套接字統計信息,可以更快速地顯示端口的使用情況。
常用選項:
-antlp? ? ? ? ?顯示所有監聽的 TCP 端口及其對應的進程信息;
-anu? ? ? ? ?顯示所有監聽的 UDP 端口。
示例:ss -antlp?顯示所有監聽的 TCP 端口及其對應的進程信息;ss -anu?顯示所有監聽的 UDP 端口。
lsof
??5. sof?:列出當前系統打開的文件和端口等信息。
常用選項:
-i ? ? ? ? ?后跟端口號,顯示指定端口的使用情況。
示例:lsof -i :80?顯示 80 端口的使用情況及對應進程信息。
curl
??6. curl :用于從服務器傳輸數據或向服務器發送數據,常用于測試和操作網絡請求。
示例:curl google.com獲取 google.com 的網頁內容;curl -X POST -d "key=value" google.com向 google.com 發送 POST 請求并攜帶數據。
wget
??7. wget :從網絡上下載文件。
示例:wget google.com下載 google.com 的網頁內容;wget -O output.html google.com將下載的內容保存為 output.html文件。
ssh
8.??ssh:用于遠程登錄到另一臺計算機。
端口操作相關命令
ss
使用方法同上!!!
lsof
使用方法同上!!!
netstat
使用方法同上!!!
nmap
nmap?命令
功能:網絡探測工具,可用于掃描端口開放情況等。
常用選項:
-p? ? ? ? ?后跟端口號或端口范圍,指定掃描的端口;
-sS? ? ? ? ?進行 TCP SYN 掃描。
示例:nmap -p 1-1000 192.168.1.1?掃描 192.168.1.1 主機的 1 到 1000 端口開放情況。
系統信息查看相關命令
uname
?1. uname:顯示系統信息。
常用選項:
-a? ? ? ?顯示所有系統信息,包括內核版本、主機名等;
-r????????僅顯示內核版本號。
示例:uname -a?顯示所有系統信息;uname -r顯示內核版本號。
df
??2. df:顯示文件系統的磁盤使用情況。
常用選項:
-h????????以人類可讀的格式顯示磁盤空間,如自動根據大小選擇合適的單位。
示例:df -h顯示文件系統的磁盤使用情況,包括每個文件系統的總空間、已用空間、可用空間等。
du
??3. du:顯示文件或目錄的磁盤使用情況。
常用選項:
-h????????以人類可讀的格式顯示磁盤空間;
-s????????僅顯示總計。
示例:du -h /home/user顯示 /home/user目錄及其子目錄的磁盤使用情況;du -sh /home/user僅顯示 /home/user目錄的總計磁盤使用情況。
free
??4. free:用于顯示系統中空閑、已用和交換的內存量,可以方便地查看內存的使用情況。
常用選項:
-m????????以 MB 為單位顯示內存信息;
-h?????????以人類可讀的格式顯示內存信息,如自動根據大小選擇合適的單位;
-s????????指定更新時間間隔,持續顯示內存信息。
示例:free -m表示以 MB 為單位顯示內存信息;free -h以人類可讀的格式顯示內存信息;free -s 2?表示每 2 秒更新一次內存信息。
查看CPU和內存使用相關命令
top
top命令
功能:提供了動態的實時系統進程信息,可以查看 CPU 和內存的使用情況以及其他相關信息,如進程的用戶、運行時間、命令等。
常用選項:
-d????????后跟時間間隔,以秒為單位指定兩次屏幕刷新之間的間隔時間。
示例:top -d 2,表示每 2 秒刷新一次屏幕。
htop
htop命令
功能:是一個更高級的進程瀏覽器,它提供了比 top更直觀的界面和更多的功能,可以方便地查看 CPU 和內存的使用情況,以及各個進程的信息。
常用選項:
可以通過方向鍵和各種快捷鍵來操作,如 F5以樹形視圖顯示進程,F6按內存使用排序等。
示例:直接輸入 htop即可啟動該命令。
ps
ps命令
功能:用于報告當前系統中的進程狀態,結合不同的選項可以查看進程的 CPU 和內存使用情況。
常用選項:
aux????????顯示所有進程的信息,包括其他用戶的進程。
eo pid,ppid,%cpu,%mem,cmd????????指定顯示的列,包括進程 ID、父進程 ID、CPU 使用率、內存使用率和命令等。
示例:ps aux | less,表示分頁顯示所有進程的信息;ps -eo pid,ppid,%cpu,%mem,cmd,指定顯示特定的列。
vmstat
vmstat命令
功能:報告虛擬內存的統計信息,包括進程、內存、分頁、塊設備、陷阱和 CPU 活動等信息,可以間接反映出 CPU 和內存的使用情況。
常用選項:
1????????表示每秒更新一次。
-s????????以更易讀的格式顯示統計信息。
示例:vmstat 1,表示每秒更新一次虛擬內存統計信息;vmstat -s,以更易讀的格式顯示統計信息。
free
free命令
功能:用于顯示系統中空閑、已用和交換的內存量,可以方便地查看內存的使用情況。
常用選項:
-m?????????以 MB 為單位顯示內存信息。
-h????????以人類可讀的格式顯示內存信息,如自動根據大小選擇合適的單位。
-s????????指定更新時間間隔,持續顯示內存信息。
示例:free -m,表示以 MB 為單位顯示內存信息;free -h,以人類可讀的格式顯示內存信息;free -s 2,表示每 2 秒更新一次內存信息。
gcc/g++編譯器選項總結
編譯鏈接選項
-c:只編譯,不鏈接。
示例:g++ -c main.cpp?將 main.cpp?編譯成目標文件 main.o。
-o?:指定輸出文件名。
示例:g++ -o myprogram main.cpp將編譯鏈接后的可執行文件命名為 myprogram。
-I:添加頭文件搜索路徑。(i大寫)
示例:g++ -I /usr/local/include main.cpp指定在 /usr/local/include目錄下搜索頭文件。
-L:添加庫文件搜索路徑。
示例:g++ -L /usr/local/lib main.cpp -lmylibc指定在 /usr/local/lib目錄下搜索庫文件 mylibc。
-l:鏈接庫文件。(L小寫)
示例:g++ main.cpp -lmylib?鏈接庫文件 mylib。
-shared:生成共享庫(動態庫)。
示例:g++ -shared -fPIC mylib.cpp -o libmylib.so?生成共享庫 libmylib.so。
? -static?:生成靜態庫。
示例:g++ -static mylib.cpp -o libmylib.a生成靜態庫 libmylib.a。
調優選項
-O1:啟用基本的優化。
示例:g++ -O1 main.cpp -o myprogram對生成的代碼進行基本的優化。
-O2:更高一級的優化,在 -O1的基礎上增加更多的優化。
示例:g++ -O2 main.cpp -o myprogram對生成的代碼進行更高級的優化。
-O3 :最高級別的優化,會在編譯時進行更充分的優化,但可能會增加編譯時間。
示例:g++ -O3 main.cpp -o myprogram對生成的代碼進行最高級別的優化。
-Os:優化代碼大小,在優化代碼執行效率的同時,盡可能減小生成的二進制文件大小。
示例:g++ -Os main.cpp -o myprogram優化代碼大小。
-g?:生成調試信息,便于使用調試器(如 GDB)進行調試。
示例:g++ -g main.cpp -o myprogram在生成的可執行文件中包含調試信息。
警告和錯誤選項
?-Wall:啟用所有常見的警告。
示例:g++ -Wall main.cpp -o myprogram啟用所有常見的警告。
-Wextra:啟用額外的警告,比 -Wall更嚴格。
示例:g++ -Wextra main.cpp -o myprogram啟用額外的警告。
-Werror:將所有警告視為錯誤,如果出現警告,編譯將失敗。
示例:g++ -Werror main.cpp -o myprogram將所有警告視為錯誤。
其他選項
-std=c++11:指定使用 C++11 標準。
示例:g++ -std=c++11 main.cpp -o myprogram指定使用 C++11 標準進行編譯。
-fPIC:生成位置無關代碼,通常用于生成共享庫。
示例:g++ -fPIC mylib.cpp -shared -o libmylib.so生成位置無關代碼并生成共享庫。
-pg:添加性能分析代碼,用于性能分析工具(如 gprof)。
示例:g++ -pg main.cpp -o myprogram添加性能分析代碼。
-v :顯示編譯器版本信息和編譯過程的詳細信息。
示例:g++ -v顯示編譯器版本信息。