Linux命令強基
Hello,一隻愛學習的魚
本期帶來linux命令強基,對於ls/pwd/chmod等基礎命令,操作簡單就略過,下面是我在學習linux命令匯總,命令在Ubuntu 20.4 lts虛擬機中可執行。
概述
1. grep/awk/sed
2. ps/top
1. grep/awk/sed
grep/awk/sed 可以對應 查找/分段/修改
在講解命令時,我會以選項+命令+說明形式呈現
grep使用方法:[options] pattern file
-An grep -A2 var abc.txt 顯示var一行及其後兩行 -Cn grep -C2 var abc.txt/grep -2 var abc.txt 顯示var一行及其前後兩行 -Bn grep -B2 var abc.txt 顯示var一行及其前兩行 -c grep -c var abc.txt var在abc.txt中出現的次數 -o grep -o var abc.txt 只查找var並單行輸出 -E grep -E 'var|bin' abc.txt 使用擴展正則表達式,在abc.txt文件中匹配var或bin,相當於執行egrep -z grep -o var -z abc.tar 先解包再搜索 -v grep -v var abc.txt 反向搜索 -R grep var -R --exclude='text.txt' 在當前目錄下遞歸查詢除text.txt的文件,內容含var --exclude --include grep var --include='abc.txt' 在當前目錄下查詢abc.txt文件,內容含var -L grep var -R -L 僅列印除含var文件的文件 -l(小寫l) grep var -R -l 僅列印含var文件的文件 -I(大寫i) grep var -RI 忽略二進位 -mn grep var -R -n -m2 僅顯示前2個結果 -b grep -b var abc.txt 顯示var第一個字元在文件中的編號 -r grep -r var /home/zhao -l 遞歸查詢/home/zhao下含var的文件 -i grep -i "v" abc.txt 忽略大小寫
awk使用方法:[options] ‘pattern{action}’ file
$0(內建變數) 完整的輸入記錄 $n(內建變數) 當前記錄的第n個欄位,欄位右FS分隔,第一個FS前是$1 FS(內建變數) 欄位分隔符,默認是任意空格 RS(內建變數) 記錄分隔符,默認是一個換行符 -F awk -F '/' '{print $1,$2}' abc.txt 文件abc.txt中每行以字元/分隔,輸出第一,第二欄位(若要分隔符為\,則選項為 -F\\) awk -F'[/:]' '{print $1,$2}' abc.txt 多分隔符,文件abc.txt中每行以字元/或字元:分隔,輸出第一,第二欄位 -v awk -va=1 '{print $1, $(1+a)}' abc.txt 定義一個變數a=1 == awk '$1 == "bin" {print $1, $2}' abc.txt 過濾第一列等於bin的行,輸出第一欄位和第二欄位 BEGIN 初始化程式碼塊,在對每一行進行處理之前,初始化程式碼,主要是引用全局變數,設置FS分隔符 FILENAME 當前文件名 FNR 各文件分別計數的行號 FS 欄位分隔符(默認是任何空格) NF 一條記錄的欄位的數目,最後一個變數 NR 已經讀出的記錄數,就是行號,從1開始 OFS 輸出欄位分隔符,默認值與輸入欄位分隔符一致。 ORS 輸出記錄分隔符(默認值是一個換行符) ARGC 命令行參數的數目 awk 'BEGIN{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n","FILENAME","ARGC","FNR","FS","NF","NR","OFS","ORS","RS";\
>printf "---------------------------------------------\n"}\
>{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n",FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}' abc.txt // awk '$1 ~ /re/ {print $2, $3}' abc.txt awk精準查詢,空格作為分隔符,第一個變數是re IGNORECASE awk 'BEGIN{IGNORECASE=1} /this/' abc.txt 忽略大小寫 ! awk '$2 !~ /th/ {print $2,$4}' log.txt 模式取反 -f awk -f cal.awk score.txt 執行cal.awk腳本,查找score.txt
sed [options] ‘command’ file(s)
-e sed -e 4a\newLine abc.txt 以選項中指定的script來處理輸入的文本文件。 d sed '2,5d' abc.txt 將 abc.txt 的內容列出並且列印行號,同時,請將第 2~5 行刪除! a sed '2a hhhhhhh' abc.txt 在文件abc.txt第二行後,亦即第三行加上hhhhhhh i sed '2i hhhhhhh' abc.txt 在文件abc.txt第二行前,亦即第二行加上hhhhhhh c sed '1,5c adfafsf' abc.txt 將文件1-5行的內容取代為adfafsf p sed '1,5p' abc.txt 列出文件1-5行 /p sed '/var/p' abc.txt 搜索文件中關鍵字var的行 -n sed -n '/bin/p' abc.txt 僅顯示包含bin的行 /d sed '/bin/d' abc.txt 搜索並刪除 /s sed -n '/bin/{s/bin/sbin/;p;q}' abc.txt 搜索bin,並將bin替換成sbin s///g sed 's/^.*var://g' abc.txt 搜索var並替換為空 -e sed - e '3,/4d' -e 's/bin/blue/g' abc.txt 多點編輯,刪除第三行,包括第三行後的內容,將剩餘的,bin替換為blue -i sed -i 's/\.$/\!/g' abc.txt 每一行以.結尾則轉!,直接修改源文件 sed -i '$a This is a test' abc.txt $代表最後一行,文件最後新增This is a test
2. ps/top
ps:report a snapshot of the current processes.將當前進程做一個「快照」並顯示
使用方法:ps目前有三個選項UNIX\BSD\GNU
ps axu【不建議使用ps -aux,因為它混淆了兩個不同的標準,官方文檔里有說明】
ps -ef 可以結合grep選擇性查看某個進程資訊
top:display Linux processes.顯示linux進程
動態顯示,類似Win下的任務管理器。介面可以輸入交互命令,非常強大
按f鍵,然後可以選擇要顯示的欄位
按c鍵,查看完整的命令欄位COMMAND
按s鍵,設置介面刷新時間,默認3s
等等欄位意思,文檔也有說明,非常詳細
ps和top命令,我在分享資料里有解說。其中top文檔雖然基本上全是英文,但是它裡面的交互命令占篇幅53%左右,不用慌
關注我的公眾號(一隻愛學習的鯉魚)
回復:1226。即可獲取「1226linux命令強基」的分享資料
最後,你的關注是我更新的最大動力,我們下期再見。