Linux小白學習法寶-命令大全第一部分
命令後帶(Mac)標記的,表示該命令在Mac OSX下測試,其它的在Debian下測試。
1. grep命令
文本查找命令, 能夠使用正則表達式的方式搜索文本,其搜索對象可以是單個或則多個文件
基本格式 grep [option] [regex] [path]
- -o 只按行顯示匹配的字元
- -c 只輸出匹配行的數目
- -n 顯示匹配行的行號
- -v 顯示不包含匹配文本的行
- -i 不區分大小寫 (grep是大小寫敏感的)
- -R 文件夾下遞歸搜索
- -l 只顯示匹配的文件名
- -H 顯示文件名
- -A NUM(after)顯示匹配的後幾行
- -B NUM(before)顯示匹配的前幾行
- -C NUM顯示匹配的前後幾行
- –color 標出顏色
範例一:man grep | grep --color=always -n search帶顏色的文本搜索,並同時輸出行號
範例二:man grep | grep --color=always -n "<search>"正則表達式模式的搜索
範例三:grep -nR --color=always a ./*.yml在文件夾下的yml文件中搜索,並標註行號和對應行
範例四:grep -lR a ./*.yml 在文件夾下的yml文件中搜索,但只輸出匹配的文件名
2. ls命令
ls是命令行中用的最多的命令之一了,用於顯示目錄下的文件
基本格式 ls [option]
- -a 列出所有文件,包括』.』開頭的隱藏文件
- -h 使列印結果易於使用者查看(human readable)
- -l 列出文件的詳細信息:創建者,創建時間,讀寫許可權等
- -s 顯示文件大小
- -t 按時間進行文件的排序
- -S 以大小進行排序
- -r 當前條件逆序
- -L 顯示文件鏈接名
- -R 將目錄中所有文件都遞歸顯示出來
範例一:ls -lharts輸出文件信息,並時間從舊到新排列
範例二:ls -R遞歸輸出目錄下的所有文件
3. find命令
文件查找命令,find命令將遞歸的搜索目錄下符合要求的所有文件
基本格式 find [path] [option] [expression]
- -name 查找名為filename的文件
- -perm 查找符合執行許可權 -user 按照文件的所屬主查找
- -mtime -n +n 按照文件的更改時間查找文件,n代表天數
- -ctime -n +n 按照創建時間查找
- -newer f1 !f2 查更改時間在f1和f2之間的文件
- -size n 查找長度為n塊的文件,一塊為512 bytes
- -depth 使得查找在進入子目錄前先行查找完本目錄
- -prune 查找時忽略某個目錄 -type 按文件類型查找,b為塊設備,d為目錄,f為普通文檔
範例一:find ~ -name "*.yml" | grep ".yml" --color=always在用戶目錄下查找文件名後綴為.yml的文件
範例二:find . -perm 644查找當前目錄下許可權為644的所有文件
範例三:find . -path "./_site*" -a -prune -o -name "feed.xml" -print整個語句是在當前目錄下查找名為feed.xml的文件,同時需要忽略./_site*路徑的文件。-a -o實際為邏輯與和邏輯或,當路徑匹配時將執行-prune,那麼將不會查找匹配路徑中的文件,當路徑不匹配時則不執行-prune,-o後的語句始終執行。
範例四:find . -maxdepth 2 -size 3 控制查找的深度
補充:Linux的許可權模式為三元組「owner」,「group」,「other」,許可權對應表如下
4. wc命令
用於統計輸入中的位元組數,字數,行數並輸出
基本格式 wc [option] [filename]
- -c 統計位元組數
- -l 統計行數
- -m 統計字元數
- -w 統計字數,一個字為由空白,跳格或換行字元分隔的字元串
範例一:wc -l _config.yml統計行數,-c實際上可以查看文件的大小
5. cat命令
連結命令(Concatenation),連結多個文本,或者以標準輸出形式列印文件的內容
基本格式 cat [option] [filename]
- -n 隊輸出的所有行編號
- -b 與-n類似,但空行不編號
範例一:cat -b testColumn(cat -n testColumn)顯示文件內容
範例二:cat testColumn testCat同時顯示兩個文件內容
範例三:cat testColumn testCat>merge將兩個內容連結並輸出到一個文件中,>為重新創建,>>為追加
6. tail命令
文本查看命令,可以看文本的最後幾行。tail命令的優點在於其內容能夠與輸入同步更新,非常適用於查看實時日誌。
基本格式 tail [option] [filename]
- -n number 定位參數,+5表示從第五行開始顯示,10或-10表示顯示最後10行
- -f 監控文本變化,更新內容
- -k number 從number所指的KB處開始讀取
範例一:tail -n -5 catalina.out 輸出最後5行
範例二:tail -f catalina.out 監聽catalina.out最後行的變化並顯示
7. head命令
該命令與tail命令類似,默認顯示文件前兩行的內容
基本格式 head [option] [filename]
- -n number 顯示前幾行,-5表示文件中除了最後5行之外的所有內容
- -c number 顯示前幾個位元組
範例一:head -n 5 server.xml和head -n -5 server.xml
8. du命令
該命令用於查看系統中文件和目錄所佔用的空間
基本格式 du [option] [name]
- -h 用human readable的方式顯示
- --max-depth=number 最大的查詢層次
- -a 顯示所有文件的大小,默認只顯示目錄的大小
範例一:du -h 顯示目錄下所有文件夾的大小
範例二:du -h catalina.out和du -h ../logs 顯示文件或目錄的大小
範例三:du -ah --max-depth=1顯示遞歸的層次為1,顯示所有文件和文件夾大小
9. which和whereis
which命令的作用是在PATH變數制定的路徑中,查找系統命令的位置。
whereis命令用於程序名的搜索,且只能搜索{二進位文件,man說明文件,源代碼文件}。whereis的查詢時通過查詢系統的資料庫文件記錄,所以速度比find更快,但由於資料庫的更新頻率較為緩慢,其結果與實際狀況並不一定一致。- -m 只查找說明文件
- -b 只查找二進位文件
範例一:which命令
範例二:whereis命令
10. sort命令
sort命令用於對文本進行排序,並將結果輸出。其以文本的每一行為單位,從首字元向後,依次按照ascii碼值進行比較,最後升序排列。(默認是忽略每行前面空格的)
基本格式 sort [option] [filename]
- -u 忽略重複行
- -n 按照數字大小排序
- -r 逆序
- -k start,endstart為比較的起始位置,end為結束位置
範例一:sort sort.txt 排序
範例二:sort -nk 2 -t - sort.txt 以-進行分割,對分割後的第二個域進行排序;sort -nrk 2 -t - sort.txt 逆序排序
範例三:sort -t - -k 1.7 -nk 3,3 sort_k.txt -k start,end中end可以省略,上面的1.7表示分割後第一個域的第7個字元,由於沒有end,則表示對第一個域中第7字元及其之後的字元排序。而3,3則表示在前面排序的基礎上,再對第三個域進行排序。
11. netstat命令
netstat用於輸出linux系統的網路情況信息,以前面試的時候還被問過:「如何查看佔用某個埠的程序的pid?」,這個問題實際用netstat -anp輸出,然後再grep一下即可。
基本格式 netstat [option]
- -a 顯示所有socket連接
- -l 顯示監控中(listening)的socket連接
- -n 直接使用ip地址,而不使用域名伺服器
- -p 顯示正在使用socket的程序的pid和名稱
- -r 列印路由表
- -t 顯示TCP傳輸協議的連線狀況
- -u 顯示UDP傳輸協議的連線狀況
- -s 顯示網路工作信息統計表
範例一:netstat -anp 顯示程序的pid和名稱
範例二:netstat -r 輸出本機路由表
範例三:netstat -lts 輸出監聽狀態中的tcp協議統計信息
12. more命令
more命令用於顯示文件的內容,與cat和tail等命令不同的是,more命令是按頁顯示文件內容,同時具有搜尋字元串的功能。(由於more具有向前翻頁功能,因此該命令會載入整個文件)
基本格式 more [option] [filename]
- +n 從第n行開始顯示
- -n 定義屏幕大小為n行
- +/pattern 再顯示前按pattern匹配子串並顯示
- -s 把連續的多個空行顯示為一行
常用操作命令:
- Enter 向下n行,默認為1行
- Ctrl+F 跳過一屏
- Ctrl+B 返回上一屏
- 空格鍵 向下滾動一屏
- = 輸出當前行的行號
- 在more模式中回車,輸入/pattern可以持續向下搜索
範例一:more +/Deploy catalina.out在catalina.out文件中查找「Deploy字元第一次出現的位置」,並從該處的前兩行開始顯示輸出
範例二:more +10 -10 catalina.out從第10行開始,每頁10行
13. less命令
less命令與more命令對應,既可以前後翻看文件,同時還有前後搜索功能,除此之外,less在查看前不會載入整個文件。
基本格式 less [option] [filename]
- -N 顯示每行的行號
- -i 忽略搜索時的大小寫
- -s 將連續空行顯示為一行
- -m 顯示百分比
常用操作命令:
- /字元串 向下搜索「字元串」功能
- ?字元串 向上搜索「字元串」功能
- n 重複前一個搜索
- 空格鍵 滾動一頁
- d 滾動半頁
- b 回溯一頁
- y 回溯一行
- q 退出less命令
範例一:less -Nm catalina.out顯示行號和百分比
範例二:/detail或者?detail 向前向後搜索」detail」
14. ps命令
ps命令用來在Linux系統中顯示進程的狀態快照,其參數選項可謂非常之多。
基本格式 ps [option]
- -a 顯示所有用戶的進程
- -x 顯示沒有控制終端的進程
- -u 按照用戶名稱查詢進程
- -f 列出全部信息,常和其它選項聯用
- -j 用任務格式來顯示進程
- -e 顯示所有進程
範例一:ps -ef 用標準格式顯示所有進程顯示的項目有:UID, PID, PPID(父進程ID), C(CPU資源百分比), STIME, TTY, TIME, CMD
範例二:ps aux顯示的項目有:USER, PID, %CPU, %MEM, VSZ(虛擬內存量KB), RSS(固定內存量), TTY(進程所運行在的終端機), STAT, START, TIME, COMMAND
15. tmux命令(Mac)
tmux(Terminal Multiplexer)命令是一個頗為炫酷的命令,其特點與screen命令類似。tmux通過開出窗口,分拆面板,接管和分離會話,能夠讓使用者在一個窗口內同時進行多項操作。
tmux在osx的安裝方式:brew install tmux基本格式 tmux [option]
- tmux new -s sessionName 創建新的session會話
- tmux attach -t sessionName 重新連接上某一個session
- tmux kill-session -t sessionName 殺死某個session
- tmux ls 顯示所有會話
範例一:tmux new -s mySession 創建一個名為mySession的會話輸入CTRL+b d將從此會話脫離,如果要重新連接,則使用tmux attach -t mySession
範例二:在範例一的mySession中按下CTRL+b c則會在mySession中創建一個新的窗口可以通過CTRL+b w來查看窗口列表,CTRL+b <窗口號>來切換窗口CTRL+b f來查找窗口,exit來退出窗口
為了便於穿窗口的識別,還可以通過CTRL+b ,來重命名窗口
範例三:tmux還支持把窗口分割成多個面板,CTRL+b "為水平分割,CTRL+b %為垂直分割通過CTRL+b <游標鍵>來進行窗口移動
16. ack命令(Mac)
ack(better than grep)命令的作用和grep類似,但效果更好。
基本格式 ack [option] [pattern]
- -w 按單詞匹配
- --ingore-dir 忽略某些目錄
範例一:ack -w 測試 與grep搜索的對比
17. kill命令
kill命令用於終止指定的進程,其工作原理是通過向進程發送指定的信號。
基本格式 kill [params] [pid]
常用的是:
kill -9 pid //強制終止
- -1 Hup 終端斷線
- -2 INT 中斷(同Ctrl+c)
- -3 QUIT 退出(同Ctrl+)
- -15 TERM 終止,是默認的信號,如果應用本身會捕獲該信號,則不能終止
- -9 KILL 強制終止
- -18 CONT 繼續
- -19 STOP 暫停(同Ctrl+z)
本文由馬哥Linux運維推出。
為了方便大家交流學習,我們特地組建了馬哥Linux運維學習的交流群,方便大家交流學習,目前已經有300個小夥伴在裡面學習了,QQ群號碼:576095618
你想更深入了解學習Linux知識體系,你可以看一下我們花費了一個多月整理了上百小時的幾百個知識點體系內容:
【超全整理】《Linux雲計算從入門到精通》系列實戰筆記全放送
推薦閱讀:
※用R語言修改一個工具包,做並行計算上的優化應該怎麼入手?
※普通用戶沒有root許可權,如何在自己的home目錄安裝Perl模塊?
※Ubuntu 系統下有哪些整理硬碟的工具?
※如何正確為 Noto Sans CJK 配置 fontconfig 使中文不會被顯示為日文字型?