还觉得linux命令难吗,看这篇2w多字的linux命令详解,通俗易懂
?
序言
?本篇文章主要講解了一些linux常用命令,主要講解模式是,命令介紹、命令參數格式、命令參數、命令常用參數示例。由于linux命令較多,我還特意選了一些日常使用較為頻繁的命令進行講解,但還是免不了文章很長,建議大家收藏起來,用到的時候不會了再來閱讀。當然學習linux命令最好的方法是學會使用linux自帶的man手冊,所有linux命令規范和使用細則都會在該手冊中講解的很清楚,我在書寫的過程中也是參考該手冊和日常使用情況。
如果還有哪些是大家希望再補充的命令,可以留言給我,我會持續更新該文章,同時也作為我學習和工作的手冊。
Linux初級指令
ls ——List
ls 介紹
?這是我學Linux的第一個命令,相信也是很多人學習Linux的第一個命令。ls全稱list.
列出有關文件的信息(默認為當前目錄)。如果沒有指定-cftuvSUX或——Sort,則按字母順序排序。
?官方的說的很清楚,默認列出當前目錄,所以可以列出其他目錄或者路徑下的文件信息或者目錄信息。
?ls還可以列出指定目錄下的文件列表。
?
ls命令參數
- -a 列出指定目錄下的所有文件,包括隱藏文件
- -c 使用最后一次更改文件狀態以進行排序(-t)或長時間打印(-l)的時間
- -h 與-l選項一起使用時,請使用單位后綴:Byte、Kilobyte、mete、gb、tb和Petabyte,以便使用以2為基數的大小將數字減少到3或更少
- -l 長格式列表。(見下文)。如果輸出到終端,則所有文件大小的總和將輸出到長清單前面的一行中
- -n 以數字形式顯示用戶和組id,而不是在長(-l)輸出中轉換為用戶或組名。這個選項默認打開-l選項
- -o 以長格式列出,但省略組id
- -s 顯示每個文件實際使用的文件系統塊的數量,以512字節為單位,其中部分單元四舍五入為下一個整數值
- -t 在按照字典順序對操作數排序之前,先按修改的時間排序(最近修改的是first)
- -u 使用最后一次訪問的時間,而不是最后一次修改文件進行排序
pwd介紹
?打印當前工作目錄的完整路徑名。
touch (change file timestamps)
touch介紹
?將每個文件的訪問和修改時間更新為當前時間。除非提供-c或-h,否則將不存在的FILE參數創建為空。
touch命令參數
- -a 或--time=atime或--time=access或--time=use 只更改存取時間。
- -c 或--no-create 不建立任何文檔。
- -d 使用指定的日期時間,而非現在的時間。
- -f 此參數將忽略不予處理,僅負責解決BSD版本touch指令的兼容性問題。
- -m 或--time=mtime或--time=modify 只更改變動時間。
- -r 把指定文檔或目錄的日期時間,統統設成和參考文檔或目錄的日期時間相同。
- -t 使用指定的日期時間,而非現在的時間。cat介紹
將FILE或標準輸入連接到標準輸出。
cat命令參數
- -A, --show-all 等價于 -vET
- -b, --number-nonblank 對非空輸出行編號
- -e 等價于 -vE
- -E, --show-ends 在每行結束處顯示
- -n, --number 對輸出的所有行編號,由1開始對所有輸出的行數編號
- -s, --squeeze-blank 有連續兩行以上的空白行,就代換為一行的空白行
- -t 與 -vT 等價
- -T, --show-tabs 將跳格字符顯示為 ^I
- -u (被忽略)
- -v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
mkdir —— Make Directory
mkdir介紹
如果目錄不存在,則創建目錄。
mkdir命令參數
- -m, --mode=模式,設定權限<模式> (類似 chmod),而不是 rwxrwxrwx 減 umask
- -p, --parents 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項后,系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄;
- -v, --verbose 每次創建新目錄都顯示信息
- --help 顯示此幫助信息并退出
- --version 輸出版本信息并退出
cd介紹
?切換當前目錄至指定目錄
?cd命令沒什么參數就是切換目錄到指定路徑下,較為簡單,但是使用評率極高。
rm&rmdir —— Remove Directory
rm介紹
rm實用程序嘗試刪除命令行上指定的非目錄類型文件。 如果文件的權限不允許寫入,并且標準輸入設備是終端,則會提示用戶(在標準錯誤輸出上)進行確認。
?rm命令使用時還是需要注意的,他的刪除恢復比較麻煩,有些系統會自帶-i參數,輸入命令之后還有一個確認步驟,有些是直接刪掉了,是真刪掉,從內存抹掉那種(其實底層是讓該文件指針不指向該文件的內存塊,內存上的內容原則上是存在的,但是恢復會比較復雜,需要掃描整塊內存塊才能拿到內容)。不要輕易刪掉你寫的重要代碼,hh。
rm命令參數
- -f, --force 忽略不存在的文件,從不給出提示。
- -i, --interactive 進行交互式刪除
- -r, -R, --recursive 指示rm將參數中列出的全部目錄和子目錄均遞歸地刪除。
- -d, --dir 刪除空目錄
mv —— Move
mv介紹
就是移動目錄或者文件到置頂目錄下,同時具有重命名的功能。
mv命令參數
- -b :若需覆蓋文件,則覆蓋前先行備份。
- -f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;
- -i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋
- -n:不要覆蓋現有文件。 (-n選項將覆蓋以前的任何-f或-i選項。)
- -u :若目標文件已經存在,且 source 比較新,才會更新(update)
?這個命令在寫makefile文件的時候用起來很舒服,可以把編譯的結果移到指定目錄并重命名。
cp —— Copy
cp介紹
cp實用程序將source_file的內容復制到target_file。 在第二個大綱格式中,每個命名的source_file的內容都復制到目標target_directory。 文件本身的名稱不會更改。 如果cp檢測到嘗試將文件復制到自身的嘗試,則復制將失敗。
命令參數
- -a, --archive 等于-dR --preserve=all
- --backup[=CONTROL 為每個已存在的目標文件創建備份
- -b 類似--backup 但不接受參數
- --copy-contents 在遞歸處理是復制特殊文件內容
- -d 等于--no-dereference --preserve=links
- -f, --force 如果目標文件無法打開則將其移除并重試(當 -n 選項存在時則不需再選此項)
- -i, --interactive 覆蓋前詢問(使前面的 -n 選項失效)
- -H 跟隨源文件中的命令行符號鏈接
- -l, --link 鏈接文件而不復制
- -L, --dereference 總是跟隨符號鏈接
- -n, --no-clobber 不要覆蓋已存在的文件(使前面的 -i 選項失效)
- -P, --no-dereference 不跟隨源文件中的符號鏈接
- -p 等于--preserve=模式,所有權,時間戳
- --preserve[=屬性列表 保持指定的屬性(默認:模式,所有權,時間戳),如果
- ? 可能保持附加屬性:環境、鏈接、xattr 等
- -R, -r, --recursive 復制目錄及目錄內的所有項目
echo
echo介紹
echo實用程序將任何指定的操作數寫入標準輸出,這些操作數由單個空格()字符分隔,后跟換行符(\ n')字符。
這條命令較為簡單,常用來打印變量、文本內容到
$PWD 是取當前路徑,然后echo到標準輸出,一般echo $name 用來查看某個環境變量的值
head&tail
head介紹
此過濾器顯示每個指定文件或標準輸入(如果未指定文件)的前幾行或字節。
如果省略count,則默認為10.如果指定了多個文件,則每個文件的頭均由字符串==> XXX <==''組成,其中XXX''為文件名 文件。
tail命令完全和他相反,是從尾部開始展示文本,但是他的參數用法更多。
- -f 循環讀取
- -q 不顯示處理信息
- -v 顯示詳細的處理信息
- -c<數目> 顯示的字節數
- -n<行數> 顯示行數
- --pid=PID 與-f合用,表示在進程ID,PID死掉之后結束.
- -q, --quiet, --silent 從不輸出給出文件名的首部
- -s, --sleep-interval=S 與-f合用,表示在每次反復的間隔休眠S秒
tail和head命令經常用來查看日志,像我現在基本每天都會用,我的日志文件沒辦法用vim或者cat這樣去看(因為我負責的業務日志量每天都是幾十個G),要么用tail,要么用more&less(下面會講)。
more&less
more介紹
more每次打開文件不是全部把文件讀入內存而是流式讀取,不會因為vi|vim某個大文件而造成系統oom。
more&less最重要的一點就是流式讀取,支持翻頁,像cat命令是全部讀取輸出到標準輸出,如果文件太大會把屏幕刷滿的,根本沒辦法看。
more命令參數
- +n 從笫n行開始顯示
- -n 定義屏幕大小為n行
- +/pattern 在每個檔案顯示前搜尋該字串(pattern),然后從該字串前兩行之后開始顯示
- -c 從頂部清屏,然后顯示
- -d 提示“Press space to continue,’q’ to quit(按空格鍵繼續,按q鍵退出)”,禁用響鈴功能
- -l 忽略Ctrl+l(換頁)字符
- -p 通過清除窗口而不是滾屏來對文件進行換頁,與-c選項相似
- -s 把連續的多個空行顯示為一行
- -u 把文件內容中的下劃線去掉
less 與 more 類似,但使用 less 可以隨意瀏覽文件,而 more 僅能向前移動,卻不能向后移動,而且 less 在查看之前不會加載整個文件
wc
wc介紹
wc實用程序顯示每個輸入文件或標準輸入(如果未指定文件)中每個輸入文件中包含的行數,字數和字節數。 一行定義為由字符分隔的字符串。 最后一個字符之后的字符將不包括在行數中。
這條命令對我來說還是比較深刻的,我剛學習編程不久的時候,我感覺我寫的代碼很多了,那個時候我就很想知道我寫了多少行代碼了,一時興起,說干就干,直接寫了個程序去統計了一把,寫完之后還感覺自己蠻厲害的,誰知道之后學習到這個wc,然后就覺得自己還是嫩了點,還是要多學習。
wc命令參數
- -c 統計字節數。
- -l 統計行數。
- -m 統計字符數。這個標志不能與 -c 標志一起使用。
- -w 統計字數。一個字被定義為由空白、跳格或換行字符分隔的字符串。
- -L 打印最長行的長度。
date & cal
date介紹
當不帶參數調用時,date實用程序將顯示當前日期和時間。 否則,根據指定的選項,日期將設置日期和時間或以用戶定義的方式打印日期和時間。
date實用程序顯示從內核時鐘讀取的日期和時間。 當用于設置日期和時間時,內核時鐘和硬件時鐘都將更新。
只有超級用戶可以設置日期,并且如果系統安全級別(請參閱securelevel(7))大于1,則時間更改不得超過1秒。
date命令參數
- %H 小時(以00-23來表示)。
- %I 小時(以01-12來表示)。
- %K 小時(以0-23來表示)。
- %l 小時(以0-12來表示)。
- %M 分鐘(以00-59來表示)。
- %P AM或PM。
- %r 時間(含時分秒,小時以12小時AM/PM來表示)。
- %s 總秒數。起算時間為1970-01-01 00:00:00 UTC。
- %S 秒(以本地的慣用法來表示)。
- %T 時間(含時分秒,小時以24小時制來表示)。
- %X 時間(以本地的慣用法來表示)。
- %Z 市區。
- %a 星期的縮寫。
- %A 星期的完整名稱。
- %b 月份英文名的縮寫。
- %B 月份的完整英文名稱。
- %c 日期與時間。只輸入date指令也會顯示同樣的結果。
- %d 日期(以01-31來表示)。
- %D 日期(含年月日)。
- %j 該年中的第幾天。
- %m 月份(以01-12來表示)。
- %U 該年中的周數。
- %w 該周的天數,0代表周日,1代表周一,異詞類推。
- %x 日期(以本地的慣用法來表示)。
- %y 年份(以00-99來表示)。
- %Y 年份(以四位數來表示)。
- %n 在顯示時,插入新的一行。
- %t 在顯示時,插入tab。
MM 月份(必要)
DD 日期(必要)
hh 小時(必要)
mm 分鐘(必要)
ss 秒(選擇性)
-d<字符串> 顯示字符串所指的日期與時間。字符串前后必須加上雙引號。
-s<字符串> 根據字符串來設置日期與時間。字符串前后必須加上雙引號。
-u 顯示GMT。
cal介紹
cal命令可以用來顯示公歷(陽歷)日歷。
cal命令參數
- -1 顯示一個月的月歷
- -3 顯示系統前一個月,當前月,下一個月的月歷
- -s 顯示星期天為一個星期的第一天,默認的格式
- -m 顯示星期一為一個星期的第一天-j 顯示在當年中的第幾天(一年日期按天算,從1月1號算起,默認顯示當前月在一年中的天數)-y 顯示當前年份的日歷
which
which介紹
which命令的作用是,在PATH變量指定的路徑中,搜索某個系統命令的位置,并且返回第一個搜索結果。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。
whereis
whereis介紹
whereis命令只能用于程序名的搜索,而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。
whereis參數格式
whereis [program ...]
whereis命令參數
- -b 定位可執行文件。
- -m 定位幫助文件。
- -s 定位源代碼文件。
- -u 搜索默認路徑下除可執行文件、源代碼文件、幫助文件以外的其它文件。
- -B 指定搜索可執行文件的路徑。
- -M 指定搜索幫助文件的路徑。
- -S 指定搜索源代碼文件的路徑。
nl
nl介紹
nl命令在linux系統中用來計算文件中行號。nl 可以將輸出的文件內容自動的加上行號!其默認的結果與 cat -n 有點不太一樣, nl 可以將行號做比較多的顯示設計,包括位數與是否自動補齊 0 等等的功能。
nl命令參數
- -b :指定行號指定的方式,主要有兩種:
- -b a :表示不論是否為空行,也同樣列出行號(類似 cat -n);
- -b t :如果有空行,空的那一行不要列出行號(默認值);
- -n :列出行號表示的方法,主要有三種:
- -n ln :行號在螢幕的最左方顯示;
- -n rn :行號在自己欄位的最右方顯示,且不加 0 ;
- -n rz :行號在自己欄位的最右方顯示,且加 0 ;
- -w :行號欄位的占用的位數。
- -p 在邏輯定界符處不重新開始計算。
ps
ps介紹
ps實用程序顯示標題行,其后是包含有關具有控制終端的所有進程的信息的行。
ps命令參數
- a 顯示所有進程
- -a 顯示同一終端下的所有程序
- -A 顯示所有進程
- c 顯示進程的真實名稱
- -N 反向選擇
- -e 等于“-A”
- e 顯示環境變量
- f 顯示程序間的關系
- -H 顯示樹狀結構
- r 顯示當前終端的進程
- T 顯示當前終端的所有程序
- u 指定用戶的所有進程
- -au 顯示較詳細的資訊
- -aux 顯示所有包含其他使用者的行程
- -C<命令> 列出指定命令的狀況
- --lines<行數> 每頁顯示的行數
- --width<字符數> 每頁顯示的字符數
kill&killall
kill介紹
命令kill將指定的信號發送到指定的進程或進程組。 如果未指定信號,則發送TERM信號。 TERM信號將殺死不捕獲該信號的進程。 對于其他過程,可能需要使用KILL(9)信號,因為無法捕獲該信號。
kill命令參數
- -l 信號,若果不加信號的編號參數,則使用“-l”參數會列出全部的信號名稱
- -a 當處理當前進程時,不限制命令名和進程號的對應關系
- -p 指定kill 命令只打印相關進程的進程號,而不發送任何信號
- -s 指定發送信號
- -u 指定用戶
解釋
HUP 1 終端斷線INT 2 中斷(同 Ctrl + C)QUIT 3 退出(同 Ctrl + \)TERM 15 終止KILL 9 強制終止CONT 18 繼續(與STOP相反, fg/bg命令)STOP 19 暫停(同 Ctrl + Z)
kill -9 是我們使用的最多的信號,其實這種方式一點也不優雅,應該使用kill -15信號,大部分程序接收到SIGTERM信號后,會先釋放自己的資源,然后再停止。但是也有程序可能接收信號后,做一些其他的事情(如果程序正在等待IO,可能就不會立馬做出響應,等到io完成后在結束),也就是說,SIGTERM多半是會被阻塞的。
講到這里,linux基本指令差不多了夠用了,差不多可以上你的服務器上隨便搞搞了。但是也只是簡單看看,更多的操作指令請看進階部分。
Linux進階指令
find
find介紹
find實用程序對列出的每個路徑遞歸地遍歷目錄樹,根據樹中的每個文件計算表達式(由下面列出的“初選”和“操作數”組成)。
這個命令使用頻率極高,如果對這個命令了解很透徹,在日常工作中可以事半功倍。這個命令的參數較多,常用的參數我會在下面常用參數示例講清楚
find命令參數
- -print: find命令將匹配的文件輸出到標準輸出。
- -exec: find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式為'command' { } \;,注意{ }和\;之間的空格。
- -name 按照文件名查找文件。
- -perm 按照文件權限來查找文件。
- -prune 使用這一選項可以使find命令不在當前指定的目錄中查找,如果同時使用-depth選項,那么-prune將被find命令忽略。
- -user 按照文件屬主來查找文件。
- -group 按照文件所屬的組來查找文件。
- -mtime -n +n 按照文件的更改時間來查找文件, - n表示文件更改時間距現在n天以內,+ n表示文件更改時間距現在n天以前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。
- -nogroup 查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。
- -nouser 查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。
- -newer file1 ! file2 查找更改時間比文件file1新但比文件file2舊的文件。
- -type 查找某一類型的文件,諸如:
b - 塊設備文件。
d - 目錄。
c - 字符設備文件。
p - 管道文件。
l - 符號鏈接文件。
f - 普通文件。
- -size n:[c] 查找文件長度為n塊的文件,帶有c時表示文件長度以字節計。-depth:在查找文件時,首先查找當前目錄中的文件,然后再在其子目錄中查找。
- -fstype:查找位于某一類型文件系統中的文件,這些文件系統類型通常可以在配置文件/etc/fstab中找到,該配置文件中包含了本系統中有關文件系統的信息。
- -mount:在查找文件時不跨越文件系統mount點。
- -follow:如果find命令遇到符號鏈接文件,就跟蹤至鏈接所指向的文件。
- -cpio:對匹配的文件使用cpio命令,將這些文件備份到磁帶設備中。
- 另外,下面三個的區別:
- -amin n 查找系統中最后N分鐘訪問的文件
- -atime n 查找系統中最后n*24小時訪問的文件
- -cmin n 查找系統中最后N分鐘被改變文件狀態的文件
- -ctime n 查找系統中最后n*24小時被改變文件狀態的文件
- -mmin n 查找系統中最后N分鐘被改變文件數據的文件
- -mtime n 查找系統中最后n*24小時被改變文件數據的文件
find常用參數示例
-name參數常用參數示例?查找/user目錄下所有以.log結尾的文件
?
-exec 參數后面跟的是command,它的終止是以;為結束標志的,所以這句命令后面的分號是不可缺少的,考慮到各個系統中分號會有不同的意義,所以前面加反斜杠。
舉一個我在工作中經常用到的例子,我有個日志目錄,我系統的所有日志都會打到這個目錄,目錄的日志文件命名很隨意,我沒辦法說根據名字刪除,于是我想到用日期的方式刪除,保存一個月的日志即可。
其實我把這個命令放在我的一個系統crontab文件里面,每天執行一次,這樣我的日志目錄就不用了手動清理。corntab使用詳解在后面的命令中會講到。
?-exec 后面可以接任何命令,你可以靈活運用,再結合到前面的-name參數,可以玩出花來。
grep
grep介紹
grep實用程序搜索任何給定的輸入文件,選擇與一個或多個模式匹配的行。 默認情況下,如果模式中的正則表達式(RE)匹配輸入行而沒有尾隨換行符,則該模式會匹配輸入行。 空表達式匹配每行。 與至少一種模式匹配的每條輸入線均寫入標準輸出
?這是個我每天都會用到的命令,我是做基礎服務的,用我服務的人不免會遇到問題,這時候我就去要去看日志了,日志都是G級別的,當然不能用vim打開去搜索,會把系統掛掉,vim是全部文檔加載到內存。這時候就需要使用grep命令去根據一些關鍵信息匹配查找了。(當然有些同學可能會說,既然經常查日志的話,就不能把日志接入到ElasticSearch這種可搜索的組建中,很好,用技術去解決實際問題。我們也是這樣做的,但總免不了還是會去服務器上查一下日志,學會這個命令沒錯的)
grep命令參數
- -a --text 不要忽略二進制的數據。
- -A<顯示行數> --after-context=<顯示行數> #除了顯示符合范本樣式的那一列之外,并顯示該行之后的內容。
- -b --byte-offset #在顯示符合樣式的那一行之前,標示出該行第一個字符的編號。
- -B<顯示行數> --before-context=<顯示行數> #除了顯示符合樣式的那一行之外,并顯示該行之前的內容。
- -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-matches #列出文件內容符合指定的樣式的文件名稱。
- -L --files-without-match #列出文件內容不符合指定的樣式的文件名稱。
- -n --line-number #在顯示符合樣式的那一行之前,標示出該行的列數編號。
- -q --quiet或--silent #不顯示任何信息。
- -r --recursive #此參數的效果和指定“-d recurse”參數相同。
- -s --no-messages #不顯示錯誤信息。
- -v --revert-match #顯示不包含匹配文本的所有行。
- -V --version #顯示版本信息。
- -w --word-regexp #只顯示全字符合的列。
- -x --line-regexp #只顯示全列符合的列。
- -y 此參數的效果和指定“-i”參數相同。
?掌握grep的常用參數,會讓你查找日志或者內容非常輕松。特別是當你數據量很大的時候,沒辦法使用vi或者vim打開的情況下。
cut
cut介紹
?這個命令對我來說很有故事,當時我在學完C語言,簡單了解了些linux上的基本命令,有次實習面試,面試官問我linux系統用過么,我斬釘截鐵的說用過,面試官簡單的用vim寫了一行hello world。對我說,你怎樣通過linux命令吧這個文本里面的hello world搞成十行,并且取出每一列的第七個字符。
當時的我真的是心里一群草泥馬跑過,這可難道我了,我沉思了片刻,說只要十行么?多點行么?。當然不行,只要十行,取每行的第七個字符續沉思了片刻,拿起面試官的電腦就是一頓操作,于是有了我記憶深刻的下面這一行命令。
?面試官一看,微微點了下頭(肯定在心里默念,小伙子,不錯啊)。所以這個命令我印象蠻深刻的。當然還要其他方式實現面試官的要求,比如cut第七個地府,寫個循環重定向到管道,再到原文件。
cut實用程序從每個文件中剪切出每行的選定部分(由列表指定),并將它們寫入標準輸出。 如果未指定文件參數,或者文件參數為單破折號(-),則從標準輸入中讀取內容。 列表指定的項目可以是列位置,也可以是由特殊字符分隔的字段。 列編號從1開始。
cut命令參數
- -b:僅顯示行中指定直接范圍的內容;
- -c:僅顯示行中指定范圍的字符;
- -d:指定字段的分隔符,默認的字段分隔符為“TAB”;
- -f:顯示指定字段的內容;
- -n:與“-b”選項連用,不分割多字節字符;
- --complement:補足被選擇的字節、字符或字段;
- --out-delimiter=<字段分隔符>:指定輸出內容是的字段分割符;
diff
diff介紹
比較兩個文件的不同
diff命令參數
- -b或--ignore-space-change 不檢查空格字符的不同。
- -B或--ignore-blank-lines 不檢查空白行。
- -c 顯示全部內文,并標出不同之處。
- -C或--context 與執行"-c-"指令相同。
- -d或--minimal 使用不同的演算法,以較小的單位來做比較。
- -D或ifdef 此參數的輸出格式可用于前置處理器巨集。
- -e或--ed 此參數的輸出格式可用于ed的script文件。
- -f或-forward-ed 輸出的格式類似ed的script文件,但按照原來文件的順序來顯示不同處。
- -H或--speed-large-files 比較大文件時,可加快速度。
- -l或--ignore-matching-lines 若兩個文件在某幾行有所不同,而這幾行同時都包含了選項中指定的字符或字符串,則不顯示這兩個文件的差異。
- -i或--ignore-case 不檢查大小寫的不同。
- -l或--paginate 將結果交由pr程序來分頁。
- -n或--rcs 將比較結果以RCS的格式來顯示。
- -N或--new-file 在比較目錄時,若文件A僅出現在某個目錄中,預設會顯示:Only in目錄:文件A若使用-N參數,則diff會將文件A與一個空白的文件比較。
- -p 若比較的文件為C語言的程序碼文件時,顯示差異所在的函數名稱。
- -P或--unidirectional-new-file 與-N類似,但只有當第二個目錄包含了一個第一個目錄所沒有的文件時,才會將這個文件與空白的文件做比較。
- -q或--brief 僅顯示有無差異,不顯示詳細的信息。
- -r或--recursive 比較子目錄中的文件。
- -s或--report-identical-files 若沒有發現任何差異,仍然顯示信息。
- -S或--starting-file 在比較目錄時,從指定的文件開始比較。
- -t或--expand-tabs 在輸出時,將tab字符展開。
- -T或--initial-tab 在每行前面加上tab字符以便對齊。
- -u,-U或--unified= 以合并的方式來顯示文件內容的不同。
- -v或--version 顯示版本信息。
- -w或--ignore-all-space 忽略全部的空格字符。
- -W或--width 在使用-y參數時,指定欄寬。
- -x或--exclude 不比較選項中所指定的文件或目錄。
- -X或--exclude-from 您可以將文件或目錄類型存成文本文件,然后在=中指定此文本文件。
- -y或--side-by-side 以并列的方式顯示文件的異同之處。
tar&gzip
tar介紹
用來壓縮和解壓文件。tar本身不具有壓縮功能。它是調用壓縮功能實現的
tar命令參數
- -A 新增壓縮文件到已存在的壓縮
- -B 設置區塊大小
- -c 建立新的壓縮文件
- -d 記錄文件的差別
- -r 添加文件到已經壓縮的文件
- -u 添加改變了和現有的文件到已經存在的壓縮文件
- -x 從壓縮的文件中提取文件
- -t 顯示壓縮文件的內容
- -z 支持gzip解壓文件
- -j 支持bzip2解壓文件
- -Z 支持compress解壓文件
- -v 顯示操作過程
- -l 文件系統邊界設置
- -k 保留原有文件不覆蓋
- -m 保留文件不被覆蓋
- -W 確認壓縮文件的正確性
- -b 設置區塊數目
- -C 切換到指定目錄
- -f 指定壓縮文件
du
du介紹
du實用程序顯示每個文件自變量以及以每個目錄自變量為根的文件層次結構中每個目錄的文件系統塊使用情況。如果未指定文件,則顯示以當前目錄為根的層次結構的塊使用情況。
du命令參數
- -a或-all 顯示目錄中個別文件的大小。
- -b或-bytes 顯示目錄或文件大小時,以byte為單位。
- -c或--total 除了顯示個別目錄或文件的大小外,同時也顯示所有目錄或文件的總和。
- -k或--kilobytes 以KB(1024bytes)為單位輸出。
- -m或--megabytes 以MB為單位輸出。
- -s或--summarize 僅顯示總計,只列出最后加總的值。
- -h或--human-readable 以K,M,G為單位,提高信息的可讀性。
- -x或--one-file-xystem 以一開始處理時的文件系統為準,若遇上其它不同的文件系統目錄則略過。
- -L<符號鏈接>或--dereference<符號鏈接> 顯示選項中所指定符號鏈接的源文件大小。
- -S或--separate-dirs 顯示個別目錄的大小時,并不含其子目錄的大小。
- -X<文件>或--exclude-from=<文件> 在<文件>指定目錄或文件。
- --exclude=<目錄或文件> 略過指定的目錄或文件。
- -D或--dereference-args 顯示指定符號鏈接的源文件大小。
- -H或--si 與-h參數相同,但是K,M,G是以1000為換算單位。
- -l或--count-links 重復計算硬件鏈接的文件。
df
df介紹
df實用程序顯示有關指定文件系統或其中一部分文件的文件系統上的可用磁盤空間量的統計信息。 值以每塊計數512字節的形式顯示。 如果未指定文件或文件系統操作數,則將顯示所有已掛載文件系統的統計信息(受下面的-t選項約束)。
df命令參數
- -a 全部文件系統列表
- -h 方便閱讀方式顯示
- -H 等于“-h”,但是計算式,1K=1000,而不是1K=1024
- -i 顯示inode信息
- -k 區塊為1024字節
- -l 只顯示本地文件系統
- -m 區塊為1048576字節
- --no-sync 忽略 sync 命令
- -P 輸出格式為POSIX
- --sync 在取得磁盤信息前,先執行sync命令
- -T 文件系統類型
- --block-size=<區塊大小> 指定區塊大小
- -t<文件系統類型> 只顯示選定文件系統的磁盤信息
- -x<文件系統類型> 不顯示選定文件系統的磁盤信息
lsof
lsof介紹
lsof(list open files)是一個列出當前系統打開文件的工具。(在linux環境下,任何事物都以文件的形式存在)
lsof可以打開的文件包括:
1.普通文件
2.目錄
3.網絡文件系統的文件
4.字符或設備文件
5.(函數)共享庫
6.管道,命名管道
7.符號鏈接
8.網絡文件(例如:NFS file、網絡socket,unix域名socket)
9.還有其它類型的文件,等等
這個命令在我日常工作中使用場景很多,使用范圍很廣。
lsof命令參數
- -a 列出打開文件存在的進程
- -c<進程名> 列出指定進程所打開的文件
- -g 列出GID號進程詳情
- -d<文件號> 列出占用該文件號的進程
- +d<目錄> 列出目錄下被打開的文件
- +D<目錄> 遞歸列出目錄下被打開的文件
- -n<目錄> 列出使用NFS的文件
- -i<條件> 列出符合條件的進程。(4、6、協議、:端口、 @ip )
- -p<進程號> 列出指定進程號所打開的文件
- -u 列出UID號進程詳情
lsof輸出各列信息的意義如下:
COMMAND:進程的名稱
PID:進程標識符
PPID:父進程標識符(需要指定-R參數)
USER:進程所有者
PGID:進程所屬組
FD:文件描述符,應用程序通過文件描述符識別該文件。如cwd、txt等
ping
ping介紹
將ICMP ECHO_REQUEST數據包發送到網絡主機
ping命令參數
- -d 使用Socket的SO_DEBUG功能。
- -f 極限檢測。大量且快速地送網絡封包給一臺機器,看它的回應。
- -n 只輸出數值。
- -q 不顯示任何傳送封包的信息,只顯示最后的結果。
- -r 忽略普通的Routing Table,直接將數據包送到遠端主機上。通常是查看本機的網絡接口是否有問題。
- -R 記錄路由過程。
- -v 詳細顯示指令的執行過程。
- -c 數目:在發送指定數目的包后停止。
- -i 秒數:設定間隔幾秒送一個網絡封包給一臺機器,預設值是一秒送一次。
- -I 網絡界面:使用指定的網絡界面送出數據包。
- -l 前置載入:設置在送出要求信息之前,先行發出的數據包。
- -p 范本樣式:設置填滿數據包的范本樣式。
- -s 字節數:指定發送的數據字節數,預設值是56,加上8字節的ICMP頭,一共是64ICMP數據字節。
- -t 存活數值:設置存活數值TTL的大小。
ping,在日常工作中都是簡單的用來測試本機與其他機器之間的網絡通信,當然如果了解這些參數的話,會有更多的用法。
ping命令參數
netstat
netstat介紹
netstat命令以符號形式顯示各種與網絡相關的數據結構的內容。有多種輸出格式,具體取決于顯示信息的選項。該命令的第一種形式顯示每個協議的活動套接字列表。第二種形式根據選擇的選項顯示其他網絡數據結構之一的內容。使用第三種形式,并指定等待間隔,netstat將在配置的網絡接口上連續顯示有關數據包流量的信息。第四種形式顯示指定協議或地址族的統計信息。如果指定了等待間隔,將顯示最近間隔秒的協議信息。第五種形式顯示指定協議或地址族的每個接口的統計信息。第六種形式顯示mbuf(9)統計信息。第七種形式顯示指定地址系列的路由表。第八種形式顯示路由統計信息。
netstat命令參數
- -a或–all 顯示所有連線中的Socket。
- -A<網絡類型>或–<網絡類型> 列出該網絡類型連線中的相關地址。
- -c或–continuous 持續列出網絡狀態。
- -C或–cache 顯示路由器配置的快取信息。
- -e或–extend 顯示網絡其他相關信息。
- -F或–fib 顯示FIB。
- -g或–groups 顯示多重廣播功能群組組員名單。
- -h或–help 在線幫助。
- -i或–interfaces 顯示網絡界面信息表單。
- -l或–listening 顯示監控中的服務器的Socket。
- -M或–masquerade 顯示偽裝的網絡連線。
- -n或–numeric 直接使用IP地址,而不通過域名服務器。
- -N或–netlink或–symbolic 顯示網絡硬件外圍設備的符號連接名稱。
- -o或–timers 顯示計時器。
- -p或–programs 顯示正在使用Socket的程序識別碼和程序名稱。
- -r或–route 顯示Routing Table。
- -s或–statistice 顯示網絡工作信息統計表。
- -t或–tcp 顯示TCP傳輸協議的連線狀況。
- -u或–udp 顯示UDP傳輸協議的連線狀況。
- -v或–verbose 顯示指令執行過程。
- -V或–version 顯示版本信息。
- -w或–raw 顯示RAW傳輸協議的連線狀況。
- -x或–unix 此參數的效果和指定”-A unix”參數相同。
- –ip或–inet 此參數的效果和指定”-A inet”參數相同。
ifconfig
ifconfig介紹
Ifconfig用于配置內核駐留的網絡接口。 它在引導時用于根據需要設置接口。 之后,通常僅在調試或需要系統調整時才需要它。
ifconfig命令參數
up 啟動指定網絡設備/網卡。
down 關閉指定網絡設備/網卡。該參數可以有效地阻止通過指定接口的IP信息流,如果想永久地關閉一個接口,我們還需要從核心路由表中將該接口的路由信息全部刪除。
arp 設置指定網卡是否支持ARP協議。
- -promisc 設置是否支持網卡的promiscuous模式,如果選擇此參數,網卡將接收網絡中發給它所有的數據包
- -allmulti 設置是否支持多播模式,如果選擇此參數,網卡將接收網絡中所有的多播數據包
- -a 顯示全部接口信息
- -s 顯示摘要信息(類似于 netstat -i)
add 給指定網卡配置IPv6地址
del 刪除指定網卡的IPv6地址
<硬件地址> 配置網卡最大的傳輸單元
mtu<字節數> 設置網卡的最大傳輸單元 (bytes)
netmask<子網掩碼> 設置網卡的子網掩碼。掩碼可以是有前綴0x的32位十六進制數,也可以是用點分開的4個十進制數。如果不打算將網絡分成子網,可以不管這一選項;如果要使用子網,那么請記住,網絡中每一個系統必須有相同子網掩碼。
tunel 建立隧道
dstaddr 設定一個遠端地址,建立點對點通信
-broadcast<地址> 為指定網卡設置廣播協議
-pointtopoint<地址> 為網卡設置點對點通訊協議
multicast 為網卡設置組播標志
address 為網卡設置IPv4地址
txqueuelen<長度> 為網卡設置傳輸列隊的長度
解釋
- eth0 表示第一塊網卡, 其中 HWaddr 表示網卡的物理地址
- inet addr 用來表示網卡的IP地址
- lo 是表示主機的回壞地址,這個一般是用來測試一個網絡程序,但又不想讓局域網或外網的用戶能夠查看,只能在此臺主機上運行和查看所用的網絡接口。
第一行:連接類型:Ethernet(以太網)HWaddr(硬件mac地址)
第二行:網卡的IP地址、子網、掩碼
第三行:UP(代表網卡開啟狀態)RUNNING(代表網卡的網線被接上)MULTICAST(支持組播)MTU:1500(最大傳輸單元):1500字節
第四、五行:接收、發送數據包情況統計
第七行:接收、發送數據字節數統計信息。
hostname
hostname介紹
主機名用于顯示系統的DNS名稱,并顯示或設置其主機名或NIS域名。
hostname命令參數
traceroute
traceroute介紹
traceroute跟蹤從IP網絡獲取到給定主機的路由信息包。 它利用IP協議的生存時間(TTL)字段并嘗試從每個網關到主機的路徑引發ICMP TIME_EXCEEDED響應。
traceroute命令參數
- -d 使用Socket層級的排錯功能。
- -f 設置第一個檢測數據包的存活數值TTL的大小。
- -F 設置勿離斷位。
- -g 設置來源路由網關,最多可設置8個。
- -i 使用指定的網絡界面送出數據包。
- -I 使用ICMP回應取代UDP資料信息。
- -m 設置檢測數據包的最大存活數值TTL的大小。
- -n 直接使用IP地址而非主機名稱。
- -p 設置UDP傳輸協議的通信端口。
- -r 忽略普通的Routing Table,直接將數據包送到遠端主機上。
- -s 設置本地主機送出數據包的IP地址。
- -t 設置檢測數據包的TOS數值。
- -v 詳細顯示指令的執行過程。
- -w 設置等待遠端主機回報的時間。
- -x 開啟或關閉數據包的正確性檢驗。
解釋
記錄按序列號從1開始,每行紀錄就是一跳 ,每跳表示一個網關,我們看到每行有三個時間,單位是 ms,其實就是-q的默認參數。探測數據包向每個網關發送三個數據包后,網關響應后返回的時間;如果您用 traceroute -q 10 www.baidu.com,表示向每個網關發送10個數據包。
有時我們traceroute 一臺主機時,會看到有一些行是以星號表示的。出現這樣的情況,可能是防火墻封掉了ICMP的返回信息,所以我們得不到什么相關的數據包返回數據。
route
route介紹
Route操縱內核的IP路由表。 它的主要用途是在使用ifconfig(8)程序對其進行配置后,通過接口設置到特定主機或網絡的靜態路由。
?
route命令參數
- -c 顯示更多信息
- -n 不解析名字
- -v 顯示詳細的處理信息
- -F 顯示發送信息
- -C 顯示路由緩存
- -f 清除所有網關入口的路由表。
- -p 與 add 命令一起使用時使路由具有永久性。
- add:添加一條新路由。
- del:刪除一條路由。
- -net:目標地址是一個網絡。
- -host:目標地址是一個主機。
wget
wget介紹
GNU Wget是一個免費實用程序,用于從Web非交互式下載文件。 它支持HTTP,HTTPS和FTP協議,以及通過HTTP代理進行檢索。
wget命令參數
參數有點多,沒關系,常用的掌握,其他的用的時候再查
vmstat
vmstat介紹
vmstat報告有關進程,內存,頁面調度,塊IO,陷阱,磁盤和cpu活動的信息。
vmstat命令參數
- -a:顯示活躍和非活躍內存
- -f:顯示從系統啟動至今的fork數量 。
- -m:顯示slabinfo
- -n:只在開始時顯示一次各字段名稱。
- -s:顯示內存相關統計信息及多種系統活動數量。
- delay:刷新時間間隔。如果不指定,只顯示一條結果。
- count:刷新次數。如果不指定刷新次數,但指定了刷新時間間隔,這時刷新次數為無窮。
- -d:顯示磁盤相關統計信息。
- -p:顯示指定磁盤分區統計信息
- -S:使用指定單位顯示。參數有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576字節(byte)。默認單位為K(1024 bytes)
解釋
Procs(進程)
r: 運行隊列中進程數量
b: 等待IO的進程數量
Memory(內存)
swpd: 使用虛擬內存大小
free: 可用內存大小
buff: 用作緩沖的內存大小
cache: 用作緩存的內存大小
si: 每秒從交換區寫到內存的大小
so: 每秒寫入交換區的內存大小
IO:(現在的Linux版本塊的大小為1024bytes)
bi: 每秒讀取的塊數
bo: 每秒寫入的塊數
系統:
in: 每秒中斷數,包括時鐘中斷。
cs: 每秒上下文切換數。
CPU(以百分比表示)
us: 用戶進程執行時間(user time)
sy: 系統進程執行時間(system time)
id: 空閑時間(包括IO等待時間),中央處理器的空閑時間 。以百分比表示。
wa: 等待IO時間
free
free介紹
free顯示系統中可用和可用的物理內存和交換內存的總量,以及內核使用的緩沖區和高速緩存。
free命令參數
- -b 以Byte為單位顯示內存使用情況。
- -k 以KB為單位顯示內存使用情況。
- -m 以MB為單位顯示內存使用情況。
- -g 以GB為單位顯示內存使用情況。
- -o 不顯示緩沖區調節列。
- -s<間隔秒數> 持續觀察內存使用狀況。
- -t 顯示內存總和列。
解釋
total:總計物理內存的大小。
used:已使用多大。
free:可用有多少。
Shared:多個進程共享的內存總額。
Buffers/cached:磁盤緩存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
top
top介紹
? top程序提供正在運行的系統的動態實時視圖。 它可以顯示系統摘要信息以及Linux內核當前正在管理的進程或線程的列表。 所顯示的系統摘要信息的類型以及為進程顯示的信息的類型,順序和大小都是用戶可配置的,并且可以使配置在重新啟動后保持不變。? 該程序為流程操作提供了一個有限的交互式界面,并為個人配置提供了更為廣泛的界面-涵蓋了其操作的各個方面。 盡管在本文檔中始終引用top,但是您可以隨意為程序命名。 然后,該新名稱(可能是別名)將反映在頂部的顯示屏上,并在讀寫配置文件時使用。
top命令參數
- -b 批處理
- -c 顯示完整的治命令
- -I 忽略失效過程
- -s 保密模式
- -S 累積模式
- -i<時間> 設置間隔時間
- -u<用戶名> 指定用戶名
- -p<進程號> 指定進程
- -n<次數> 循環顯示的次數
解釋
第一行,任務隊列信息,同 uptime 命令的執行結果,具體參數說明情況如下:
00:56:07 — 當前系統時間
up 149 days, 14:40 — 系統已經運行了149天14小時40分鐘(在這期間系統沒有重啟過的)
1users — 當前有1個用戶登錄系統
load average: 0.00, 0.02, 0.05 — load average后面的三個數分別是1分鐘、5分鐘、15分鐘的負載情況。
load average數據是每隔5秒鐘檢查一次活躍的進程數,然后按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高于5的時候就表明系統在超負荷運轉了。
第二行,Tasks — 任務(進程)
系統現在共有254個進程,其中處于運行中的有1個,253個在休眠(sleep),stoped狀態的有0個,zombie狀態(僵尸)的有0個。
第三行,cpu狀態信息
%Cpu(s): 1.4 us, 0.3 sy, 0.0 ni, 98.3 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
1.4 us — 用戶空間占用CPU的百分比。
0.3 sy — 內核空間占用CPU的百分比。
0.0 ni — 改變過優先級的進程占用CPU的百分比
98.3 id — 空閑CPU百分比
0.1 wa — IO等待占用CPU的百分比
0.0 hi — 硬中斷(Hardware IRQ)占用CPU的百分比
0.0 si — 軟中斷(Software Interrupts)占用CPU的百分比
第四行,內存狀態
65808884 total 物理內存總量
23749772 free 使用中的內存總量
4586160 used 空閑內存總量
37472952 buff/cache 緩存的內存量
第五行,swap交換分區信息
0 total 交換區總量
0 use 使用的交換區總量
0 free 空閑交換區總量
60909608 avail Mem 可用交換區總量
第七行以下:各進程(任務)的狀態監控
PID — 進程id
USER — 進程所有者
PR — 進程優先級
NI — nice值。負值表示高優先級,正值表示低優先級
VIRT — 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES — 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR — 共享內存大小,單位kb
S — 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵尸進程
%CPU — 上次更新到現在的CPU時間占用百分比
%MEM — 進程使用的物理內存百分比
TIME+ — 進程使用的CPU時間總計,單位1/100秒
COMMAND — 進程名稱(命令名/命令行)
sar
sar介紹
sar(System Activity Reporter系統活動情況報告)是目前 Linux 上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告,包括:文件的讀寫情況、 系統調用的使用情況、磁盤I/O、CPU效率、內存使用狀況、進程活動及IPC有關的活動等。
sar命令參數
- -A:所有報告的總和
- -u:輸出CPU使用情況的統計信息
- -v:輸出inode、文件和其他內核表的統計信息
- -d:輸出每一個塊設備的活動信息
- -r:輸出內存和交換空間的統計信息
- -b:顯示I/O和傳送速率的統計信息
- -a:文件讀寫情況
- -c:輸出進程統計信息,每秒創建的進程數
- -R:輸出內存頁面的統計信息
- -y:終端設備活動情況
- -w:輸出系統交換活動信息
總結
以上是生活随笔為你收集整理的还觉得linux命令难吗,看这篇2w多字的linux命令详解,通俗易懂的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pytorch基础函数学习
- 下一篇: JMeter初探-安装与使用