1.本文知識結構
2.文件的查詢與檢索
2.1. cd 目錄切換
- 找到文件/目錄位置:cd
- 切換到上一個工作目錄: cd -
- 切換到home目錄: cd or cd ~
- 顯示當前路徑: pwd
- 更改當前工作路徑爲path: $cd path
2.2. locate 查找目錄及文件
- find 實時查找
- locate 爲文件系統建立索引數據庫,如果有文件更新,需要定期執行更新命令來更新索引庫,在查找文件之前要先更新數據庫
# 搜尋文件或目錄:
$find ./ -name "core*" | xargs file
# 查找目標文件夾中是否有obj文件:
$find ./ -name '*.o'
# 遞歸當前目錄及子目錄刪除所有.o文件
$find ./ -name "*.o" -exec rm {} \;
# 尋找包含有string的路徑
$updatedb
$locate string
2.3. chown 文件與目錄權限修改
- 改變文件的擁有者 chown
- 改變文件讀、寫、執行等屬性 chmod
- 遞歸子目錄修改: chown -R tuxapp source/
- 增加腳本可執行權限: chmod a+x myscript
2.4. 管道和重定向
- 批處理命令連接執行,使用 |
- 串聯: 使用分號 ;
- 前面成功,則執行後面一條,否則,不執行:&&
- 前面失敗,則後一條執行: ||
- 重定向: >
3.文本處理
3.1. find 文件查找
find命令用來在指定目錄下查找文件。如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件,並且將查找到的子目錄和文件全部進行顯示。
一般來說,其語法格式爲:
find path -option [ -print ] [ -exec -ok command ] {} \;
find 後分爲兩部分: path 和 expression ,以 第一個 - 爲分隔線。如果 path 是空字串則使用目前路徑,如果 expression 是空字串則使用 -print 爲預設 expression。
常用的expression選項
選項 | 含義 |
---|---|
-mount, -xdev | 只檢查和指定目錄在同一個文件系統下的文件,避免列出其它文件系統中的文件 |
-amin n | 在過去 n 分鐘內被讀取過 |
-anewer file | 比文件 file 更晚被讀取過的文件 |
-atime n | 在過去 n 天內被讀取過的文件 |
-cmin n | 在過去 n 分鐘內被修改過 |
-cnewer file | 比文件 file 更晚被更新過的文件 |
-ctime n | 在過去 n 天內被修改過的文件 |
-empty | 空的文件 |
-gid n , -group name | gid 是 n 或是 group 名稱是 name的文件 |
-ipath p , path p | 路徑名稱符合 p 的文件,ipath 會忽略大小寫 |
-name name , -iname name | 文件名稱符合 name 的文件。iname 會忽略大小寫 |
-size n | 文件大小 是 n 單位。b 代表 512 位元組的區塊,c 表示字元數,k 表示 kilo bytes,w 是二個位元組 |
-type c | 文件類型是 c 的文件。d 代表目錄,c 代表字型裝置文件,b 代表區塊裝置文件,p 代表具名貯列,f 代表一般文件,l 代表符號連結,s 代表socket |
-pid n | process id 是 n 的文件 |
另外,在find查找文件也是可以使用正則表達式的。
使用正則表達式查詢需要的選項有兩個:-regextype 和 -regex。----regextype 指定正則匹配的類型,可用的選項有很多,常見的有:'awk' , 'egrep' , 'ed', 'emacs', 'grep', 'sed' 等,不同匹配模式匹配的結果不一樣。默認是emacs。
-regex pattern 表示文件名與正則表達式 pattern 匹配。這是對整個路徑的匹配,不是搜索文件。即書寫正則表達式時要考略前面的路徑。
3.2. grep 文本搜索
grep 指令用於查找內容包含指定的範本樣式的文件,如果發現某文件的內容符合所指定的範本樣式,預設 grep 指令會把含有範本樣式的那一列顯示出來。
其一般語法爲:
grep [ options ] pattern [file]
常見的 options 選項
短命令 | 長命令 | 含義 |
---|---|---|
-a | --text | 不要忽略二進制的數據 |
-A | --after-context = 行數 | 除了顯示符合範本樣式的那一行之外,並顯示該行之後的內容 |
-b | --byte-offset | 在顯示符合樣式的那一行之前,標示出該行第一個字符的編號 |
-c | --count | 計算符合樣式的列數 |
-C | --context = 行數 | 除了顯示符合樣式的那一行之外,並顯示該行之前後的內容 |
-d | --directories = 動作 | 當指定要查找的是目錄而非文件時,必須使用這項參數,否則grep指令將回報信息並停止動作 |
-e | --regexp = 範本樣式 | 指定字符串做爲查找文件內容的樣式 |
-E | --extended-regexp | 將樣式爲延伸的正則表達式來使用 |
-f | --file = 規則 | 指定規則文件,其內容含有一個或多個規則樣式,讓grep查找符合規則條件的文件內容,格式爲每行一個規則樣式 |
-F | --fixed-regexp | 將樣式視爲固定字符串的列表 |
-G | --basic-regexp | 將樣式視爲普通的表示法來使用 |
-h | --no-filename | 在顯示符合樣式的那一行之前,不標示該行所屬的文件名稱 |
-H | --with-filename | 在顯示符合樣式的那一行之前,表示該行所屬的文件名稱 |
-i | --ignore-case | 忽略字符大小寫的差別 |
-l | --file-with-match | 列出文件內容符合指定的樣式的文件名稱 |
-L | --file-without-match | 列出文件內容不符合指定的樣式的文件名稱 |
-n | --line-number | 在顯示符合樣式的那一行之前,標示出該行的列數編號 |
-o | --only-matching | 只顯示匹配 pattern 部分 |
-q | --quiet , --silent | 不顯示任何信息 |
-r | --recursive | 此參數的效果和指定"-d recurse"參數相同 |
-s | --no-messages | 不顯示錯誤信息 |
-v | --revert-match | 顯示不包含匹配文本的所有行 |
-V | --version | 顯示版本信息 |
-w | --word-regexp | 只顯示全字符合的列 |
-x | --line-regexp | 只顯示全列符合的列 |
-y | 此參數的效果和指定 -i 參數相同 |
3.3. xargs 命令行參數轉換
xargs 是給命令傳遞參數的一個過濾器,也是組合多個命令的一個工具。xargs 可以將管道或標準輸入(stdin)數據轉換成命令行參數,也能夠從文件的輸出中讀取數據。之所以能用到這個命令,關鍵是由於很多命令不支持|管道來傳遞參數,而日常工作中有有這個必要,所以就有了 xargs 命令。xargs 一般是和管道一起使用。
其一般語法爲:
somecommand | xargs -item command
常見的item選項
選項 | 含義 |
---|---|
-a file | 從文件中讀入作爲sdtin |
-e flag | 當xargs分析到含有flag這個標誌的時候就停止,默認爲'_' |
-p | 當每次執行一個argument的時候詢問一次用戶 |
-n num | 後面加次數,表示命令在執行的時候一次用的argument的個數,默認是用所有的 |
-t | 先打印命令,然後再執行 |
-r | no-run-if-empty 當xargs的輸入爲空的時候則停止xargs,不用再去執行了 |
-s num | 命令行的最大字符數,指的是 xargs 後面那個命令的最大命令行字符數 |
-L num | 從標準輸入一次讀取 num 行送給 command 命令 |
-d delim | 分隔符,默認的xargs分隔符是回車,argument的分隔符是空格,這裏修改的是xargs的分隔符 |
-x | exit的意思,主要是配合-s使用 |
-P | 修改最大的進程數,默認是1,爲0時候爲as many as it can |
3.4. uniq 刪除重複
uniq 命令用於檢查及刪除文本文件中重複出現的行列,一般與 sort 命令結合使用。
# 消除重複行
$ sort unsort.txt | uniq
# 統計各行在文件中出現的次數
$ sort unsort.txt | uniq -c
# 找出重複行
$ sort unsort.txt | uniq -d
3.5. tr 字符轉換
tr 命令用於轉換或刪除文件中的字符。它從標準輸入設備讀取數據,經過字符串轉譯後,將結果輸出到標準輸出設備。
其一般語法爲:
tr [options] SET1 [SET2]
常見options選項
短命令 | 長命令 | 含義 |
---|---|---|
-c | --complement | 反選設定字符。也就是符合 SET1 的部份不做處理,不符合的剩餘部份才進行轉換 |
-d | --delete | 刪除指令字符 |
-s | --squeeze-repeats | 縮減連續重複的字符成指定的單個字符 |
-t | --truncate-set1 | 削減 SET1 指定範圍,使之與 SET2 設定長度相等 |
常見SET字符含義
字符 | 含義 |
---|---|
\NNN | 八進制值爲NNN的字符 |
\\ | 反斜槓 |
\a | 終端鳴響 |
\b | 退格 |
\f | 換頁 |
\n | 換行 |
\r | 回車 |
\t | 水平製表符 |
\v | 垂直製表符 |
char1-char2 | 從char1到char2的升序遞增過程中經歷的所有字符 |
[:alnum:] | 所有的字母和數字 |
[:alpha:] | 所有的字母 |
[:blank:] | 所有呈水平排列的空白字符 |
[:cntrl:] | 所有的控制字符 |
[:digit:] | 所有的數字 |
[:graph:] | 所有的可打印字符,不包括空格 |
[:lower:] | 所有的小寫字母 |
[:print:] | 所有的可打印字符,包括空格 |
[:punct:] | 所有的標點字符 |
[:space:] | 所有呈水平或垂直排列的空白字符 |
[:upper:] | 所有的大寫字母 |
[:xdigit:] | 所有的十六進制數 |
[=char=] | 所有和指定char相等的字符 |
3.6. cut、paste 裁剪與拼接
cut命令用於顯示每行從開頭算起 num1 到 num2 的文字。
-
cut 取的範圍
N- 第N個字段到結尾
-M 第1個字段爲M
N-M N到M個字段
-
cut 取的單位
-b 以字節爲單位
-c 以字符爲單位
-f 以字段爲單位(使用定界符)
paste 指令會把每個文件以列對列的方式,一列列地加以合併。
其一般語法爲:
$ paste [-s] [-d <間隔字符>] [文件...]
參數:
- -d<間隔字符>或--delimiters=<間隔字符> 用指定的間隔字符取代跳格字符。
- -s或--serial 串列進行而非平行處理。
- --help 在線幫助。
- --version 顯示幫助信息。
- [文件…] 指定操作的文件路徑
3.7. sed 文本替換
sed 命令可依照腳本的指令來處理、編輯文本文件,它主要用來自動編輯一個或多個文件、簡化對文件的反覆操作、編寫轉換程序等。sed 命令是一行一行的處理文件內容的,一般在動作前加數字以確定對應的行。
其一般語法爲:
$ sed [-hnV][-e<script>][-f<script文件>][文本文件]
參數說明:
- -e script 或--expression=script 以選項中指定的script來處理輸入的文本文件。
- -f script文件 或--file=script文件 以選項中指定的script文件來處理輸入的文本文件。
- -h或--help 顯示幫助。
- -n或--quiet或--silent 僅顯示script處理後的結果。
- -V或--version 顯示版本信息。
- -r或--regexp-extended 在腳本中使用擴展的正則表達式
動作說明:
- a :新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)
- c :取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行
- d :刪除,因爲是刪除啊,所以 d 後面通常不接任何東西
- i :插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);
- p :打印,亦即將某個選擇的數據印出。通常 p 會與參數 sed -n 一起運行
- s :取代,可以直接進行字符級的替換的工作
# sed 命令需要多練習,可參考菜鳥教程實例
3.8. awk 數據流處理
awk 是一種處理文本文件的語言,是一個強大的文本分析工具。
其一般語法爲:
awk [選項參數] 'script' var=value file(s)
或
awk [選項參數] -f scriptfile var=value file(s)
選項參數說明:
- -F fs or --field-separator fs 指定輸入文件折分隔符,fs是一個字符串或者是一個正則表達式,如-F:。
- -v var=value or --asign var=value 賦值一個用戶定義變量。
- -f scripfile or --file scriptfile 從腳本文件中讀取awk命令。
- -mf nnn and -mr nnn 對nnn值設置內在限制,-mf選項限制分配給nnn的最大塊數目;-mr選項限制記錄的最大數目。這兩個功能是Bell實驗室版awk的擴展功能,在標準awk中不適用。
- -W compact or --compat, -W traditional or --traditional 在兼容模式下運行awk。所以gawk的行爲和標準的awk完全一樣,所有的awk擴展都被忽略。
- -W copyleft or --copyleft, -W copyright or --copyright 打印簡短的版權信息。
- -W help or --help, -W usage or --usage 打印全部awk選項和每個選項的簡短說明。
- -W lint or --lint 打印不能向傳統unix平臺移植的結構的警告。
- -W lint-old or --lint-old 打印關於不能向傳統unix平臺移植的結構的警告。
- -W posix 打開兼容模式。但有以下限制,不識別:/x、函數關鍵字、func、換碼序列以及當fs是一個空格時,將新行作爲一個域分隔符;操作符和=不能代替^和^=;fflush無效。
- -W re-interval or --re-inerval 允許間隔正則表達式的使用,參考(grep中的Posix字符類),如括號表達式[[:alpha:]]。
- -W source program-text or --source program-text 使用program-text作爲源代碼,可與-f命令混用。
- -W version or --version 打印bug報告信息的版本。
4.進程管理
4.1. lsof 查看進程狀態
lsof 命令的全稱是 list open files ,它是一個列出當前系統打開文件的工具。在 Linux 環境中,所有的事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件。
其一般語法爲:
$ lsof [options] filename
常用參數列表:
選項 | 含義 |
---|---|
lsof filename | 顯示打開指定文件的所有進程 |
lsof -a | 表示兩個參數都必須滿足時才顯示結果 |
lsof -c string | 顯示COMMAND列中包含指定字符的進程所有打開的文件 |
lsof -u username | 顯示所屬user進程打開的文件 |
lsof -g gid | 顯示歸屬gid的進程情況 |
lsof +d /DIR/ | 顯示目錄下被進程打開的文件 |
lsof +D /DIR/ | 顯示目錄下被進程打開的文件,它會搜索目錄下的所有目錄,時間相對較長 |
lsof -d FD | 顯示指定文件描述符的進程 |
lsof -n | 不將IP轉換爲hostname,缺省是不加上-n參數 |
lsof -i | 用以顯示符合條件的進程情況 |
$ lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
# 46 –> IPv4 or IPv6
# protocol –> TCP or UDP
# hostname –> Internet host name
# hostaddr –> IPv4地址
# service –> /etc/service中的 service name (可以不只一個)
# port –> 端口號 (可以不只一個)
4.2. pmap 分析線程棧
Pmap 提供了進程的內存映射,pmap命令用於顯示一個或多個進程的內存狀態。其報告進程的地址空間和內存狀態信息
其一般語法爲:
$ pmap [options] PID
常見的options選項爲:
- -x:顯示擴展格式;
- -d:顯示設備格式;
- -q:不顯示頭尾行;
- -V:顯示指定版本。
5.性能監控
5.1. sar 性能監控
sar 命令是系統維護的重要工具,主要幫助我們掌握系統資源的使用情況,特別是內存和CPU 的使用情況。
其一般語法爲:
$ sar [options] [-A] [-o file] t [n]
其中:t爲採樣間隔,n爲採樣次數,默認值是1;-o file表示將命令結果以二進制格式存放在文件中,file 是文件名。
常見的options選項有:
選項 | 含義 |
---|---|
-A | 所有報告的總和 |
-u | 輸出CPU使用情況的統計信息 |
-v | 輸出inode、文件和其他內核表的統計信息 |
-d | 輸出每一個塊設備的活動信息 |
-r | 輸出內存和交換空間的統計信息 |
-b | 顯示I/O和傳送速率的統計信息 |
-a | 文件讀寫情況 |
-c | 輸出進程統計信息,每秒創建的進程數 |
-R | 輸出內存頁面的統計信息 |
-y | 終端設備活動情況 |
-w | 輸出系統交換活動信息 |
參考材料:
Linux教程|菜鳥教程 Linux Tools Quick Tutorial Linux 命令幫助文檔
原文出處:https://www.cnblogs.com/fang-ren/p/11647675.html