文件管理
1.mkdir
創(chuàng)建文件夾,已有文件夾不會重復創(chuàng)建,同時創(chuàng)建多個文件夾時,空格作間隔符
用法:mkdir [options] dirPath1 dirPath2 …
-p? 遞歸創(chuàng)建目錄??
-v? 顯示目錄創(chuàng)建過程
-m 創(chuàng)建目錄時設置目錄權限
-z 創(chuàng)建的目錄加上SELinux安全上下文
2.rm
刪除文件,刪除文件夾、目錄時需要使用參數-r,同時刪除多個文件夾時,空格作間隔符
用法:rm [options] filePath1 filePath2 …
-r 遞歸刪除目錄??
-v 顯示目錄刪除過程
-i 進行交互式刪除
-f 強制刪除
3.chmod
控制用戶對文件的權限的命令
用法:chmod [cfvR] mode filePath1 filePath2 …
chmod 777 file == chmod ugo+rwx file
-c: 若該文件權限確實已經更改,才顯示其更改動作
-f: 若該文件權限無法被更改也不要顯示錯誤訊息
-v: 顯示權限變更的詳細資料
-R: 對目前目錄下的所有文件與子目錄進行相同的權限變更(即以遞歸的方式逐個變更)
mode: 權限設定字串,格式:[ugoa...][[+-=][rwxX]...][,...]
u表示該文件的擁有者,g表示與該文件的擁有者屬于同一個群體(group)者,o表示其他以外的人,a表示這三者皆是。+表示增加權限、-表示取消權限、=表示唯一設定權限。r表示可讀取,w表示可寫入,x表示可執(zhí)行,X表示只有當該文件是個子目錄或者該文件已經被設定過為可執(zhí)行。
4.chown
用于設置文件所有者和文件關聯組,將指定文件的擁有者改為指定的用戶或組,用戶可以是用戶名或者用戶ID,組可以是組名或者組ID,文件是以空格分開的要改變權限的文件列表,支持通配符。
用法:chown [-cfhvR] user[:group] filePath1 filePath2 …
user: 新的文件擁有者的使用者 ID
group: 新的文件擁有者的使用者組(group)
-c: 顯示更改的部分的信息
-f: 忽略錯誤信息
-h:修復符號鏈接
-v: 顯示詳細的處理信息
-R: 處理指定目錄以及其子目錄下的所有文件
5.chgrp
用于變更文件或目錄的所屬群組,與?chown?命令不同,chgrp允許普通用戶改變文件所屬的組,只要該用戶是該組的一員
用法:chgrp [-cfhRv] [所屬群組] [文件或目錄...]
或 chgrp [-cfhRv] [--reference=<參考文件或目錄>] [文件或目錄...]
-c或 --changes:效果類似"-v"參數,但僅回報更改的部分。
-f或 --quiet或 --silent: 不顯示錯誤信息。
-h或 --no-dereference: 只對符號連接的文件作修改,而不改動其他任何相關文件。
-R或 --recursive: 遞歸處理,將指定目錄下的所有文件及子目錄一并處理。
-v或 --verbose: 顯示指令執(zhí)行過程。
--reference=<參考文件或目錄>:把指定文件或目錄的所屬群組全部設成和參考文件或目錄的所屬群組相同。
網絡管理
1.ping
ping命令用于檢測主機。執(zhí)行 ping指令會使用 ICMP傳輸協議,發(fā)出要求回應的信息,若遠端主機的網絡功能沒有問題,就會回應該信息,因而得知該主機運作正常。
用法:ping[-dfnqrRv][-c<完成次數>][-i<間隔秒數>][-I<網絡界面>][-l<前置載入>][-p<范本樣式>][-s<數據包大小>][-t<存活數值>][主機名稱或IP地址]
-d使用Socket的SO_DEBUG功能。
-c<完成次數>設置完成要求回應的次數。
-f極限檢測。
-i<間隔秒數>指定收發(fā)信息的間隔時間。
-I<網絡界面>使用指定的網絡接口送出數據包。
-l<前置載入>設置在送出要求信息之前,先行發(fā)出的數據包。
-n只輸出數值。
-p<范本樣式>設置填滿數據包的范本樣式。
-q不顯示指令執(zhí)行過程,開頭和結尾的相關信息除外。
-r忽略普通的Routing Table,直接將數據包送到遠端主機上。
-R記錄路由過程。
-s<數據包大小>設置數據包的大小。
-t<存活數值>設置存活數值TTL的大小。
-w<deadline> 在 deadline秒后退出。
-W<timeout> 在等待 timeout秒后開始執(zhí)行。
2.network
主要用于檢查服務接口是否正常
用法:network ip port
3.curl
curl用于網絡請求
用法:curl [options] url
-i 獲取目標網址的文本信息以及協議頭部信息: curl –i url
-I 僅返回請求頭部信息: curl -I curl
-x 使用代理獲取網頁文本信息:curl -x proxy url
-X 指定curl請求方式,默認為GET請求
-d 使用post請求(等效于-X post):curl -d ‘d=d’-d ‘s=s’url
-b 帶cookie訪問網站:curl -b ‘ccokie1=1’ -b ‘cookie2=2’url
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? or? curl -b cookie.txt? url
-c 把網站返回的cookie寫入指定文件:curl -c cookies.txt url
-H 設置header:curl -H 'Accept-Language: en-US' -H 'Accept: *'? url
-u 用來設置服務器認證的用戶名和密碼:curl -u ‘test:12345'? url
-f 上傳二進制文件:curl -F 'file=@test.png' url
-C switch是恢復我們文件傳輸的設備,但還要注意,它后面緊跟一個破折號(-)。這告訴cURL繼續(xù)文件傳輸,但是實現這一步,首先要查看已經下載的部分,找到下載的最后一個字節(jié)才可以確定從何處可以恢復:
? ? curl -C - download.zip --output my.zip
-L 跟隨目標網站自動重定向:curl –L url
-o 把response保存成文件,等同于wget命令:curl –o filename url
-O 把response保存成文件,將 URL 的最后部分當作文件名
? ? 如:curl -O http://www.fo.com/111.html? 存儲文件名為111.html
-s 不輸出錯誤和進度信息
-S 指定只輸出錯誤信息,通常與-o一起使用
4.查看ip信息
1).ifconfig
ifconfig是一個網絡管理工具,它用于配置和查看 Linux操作系統(tǒng)中網絡接口的狀態(tài),使用ifconfig,您可以分配 IP地址、啟用或禁用接口、管理 ARP緩存、路由等。非持久,重啟后恢復。
2).ip addr
查看本地IP地址
5.查看端口信息
1).netstat
提供有關網絡連接的信息。
用法:netstat
-tunlp
-t 顯示 TCP 端口。
-u 顯示 UDP 端口。
-n 顯示數字地址而不是主機名。
-l 僅顯示偵聽端口。
-p 顯示進程的 PID 和名稱
2).ss
ss是新的 netstat,命令選項大致相同。它缺少一些 netstat功能,但暴露了更多的 TCP狀態(tài),而且速度稍快
用法:ss -tunlp
3).lsof
lsof 是一個功能強大的命令行實用程序,它提供有關進程打開的文件的信息。
在Linux 中,一切都是文件,可以將套接字視為寫入網絡的文件。要使用lsof 獲取所有偵聽 TCP 端口的列表:lsof -nP -iTCP -sTCP:LISTEN使用的選項如下:-n – 不要將端口號轉換為端口名稱。-p – 不要解析主機名,顯示數字地址。-iTCP -sTCP:LISTEN – 僅顯示 TCP 協議狀態(tài)為 LISTEN 的網絡文件。
常規(guī)命令
1.df
用于顯示目前在Linux 系統(tǒng)上的文件系統(tǒng)磁盤使用情況統(tǒng)計
用法:df [options] path
2.du
會顯示指定的目錄或文件所占用的磁盤空間.
用法:du [options] path
3.ncdu
ncdu?是一個帶有?ncurses?接口的磁盤使用分析器。它旨在在您沒有完整圖形設置可用的遠程服務器上查找空間占用,但即使在常規(guī)桌面系統(tǒng)上它也是一個有用的工具。
用法:ncdu path
4.vi/vim
文本編輯器。存在3種模式:命令模式(Command mode),輸入模式(Insert mode)和底線命令模式(Last line mode)
5.tail
把文件里的最尾部的內容顯示在屏幕上,并且不斷刷新,只要filename 更新就可以看到最新的文件內容,默認顯示10行。
6.cat
命令用于連接文件并打印到標準輸出設備上
用法:cat [-AbeEnstTuv] filename
-n 或 --number:由 1 開始對所有輸出的行數編號。
-b 或 --number-nonblank:和 -n 相似,只不過對于空白行不編號。
7.less/more
more 命令類似 cat ,不過會以一頁一頁的形式顯示,更方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能(與 vi 相似)
less 可以隨意瀏覽文件,支持翻頁和搜索,支持向上翻頁和向下翻頁,不用加載整個文件,比more更快。
8.find
find 命令用于在指定目錄下查找文件和目錄
find [path] [expression]
-name pattern:按文件名查找,支持使用通配符 * 和 ?。
-type type:按文件類型查找,可以是 f(普通文件)、d(目錄)、l(符號鏈接)等。
-size [+-]size[cwbkMG]:按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,單位可以是 c(字節(jié))、w(字數)、b(塊數)、k(KB)、M(MB)或 G(GB)。
-mtime days:按修改時間查找,支持使用 + 或 - 表示在指定天數前或后,days 是一個整數表示天數。
-user username:按文件所有者查找。
-group groupname:按文件所屬組查找。
-amin n:查找在 n 分鐘內被訪問過的文件。
-atime n:查找在 n*24 小時內被訪問過的文件。
-cmin n:查找在 n 分鐘內狀態(tài)發(fā)生變化的文件(例如權限)。
-ctime n:查找在 n*24 小時內狀態(tài)發(fā)生變化的文件(例如權限)。
-mmin n:查找在 n 分鐘內被修改過的文件。
-mtime n:查找在 n*24 小時內被修改過的文件。
9.whereis
用于查找文件。該指令會在特定目錄中查找符合條件的文件。這些文件應屬于原始代碼、二進制文件,或是幫助文件。
該指令只能用于查找二進制文件、源代碼文件和man手冊頁,一般文件的定位需使用locate命令。
whereis [-bfmsu][-B <目錄>...][-M <目錄>...][-S <目錄>...][文件...]
-b? ? 只查找二進制文件。
-B? ? <目錄>只在設置的目錄下查找二進制文件。
-f 不顯示文件名前的路徑名稱。
-m? 只查找說明文件。
-M? <目錄>只在設置的目錄下查找說明文件。
-s 只查找原始代碼文件。
-S? ? <目錄>只在設置的目錄下查找原始代碼文件。
-u 查找不包含指定類型的文件。
10.創(chuàng)建鏈接 ln
命令是一個非常重要命令,它的功能是為某一個文件在另外一個位置建立一個同步的鏈接。
當我們需要在不同的目錄,用到相同的文件時,我們不需要在每一個需要的目錄下都放一個必須相同的文件,我們只要在某個固定的目錄,放上該文件,然后在其它的目錄下用ln命令鏈接(link)它就可以,不必重復的占用磁盤空間
--backup[=CONTROL] 備份已存在的目標文件
-b 類似 --backup ,但不接受參數
-d 允許超級用戶制作目錄的硬鏈接
-f 強制執(zhí)行
-i 交互模式,文件存在則提示用戶是否覆蓋
-n 把符號鏈接視為一般目錄
-s 軟鏈接(符號鏈接)
-v 顯示詳細的處理過程
軟連接和硬鏈接的區(qū)別:
Linux文件系統(tǒng)中,有所謂的鏈接(link),我們可以將其視為檔案的別名,而鏈接又可分為兩種 : 硬鏈接(hard link)與軟鏈接(symbolic link),硬鏈接的意思是一個檔案可以有多個名稱,而軟鏈接的方式則是產生一個特殊的檔案,該檔案的內容是指向另一個檔案的位置。硬鏈接是存在同一個文件系統(tǒng)中,而軟鏈接卻可以跨越不同的文件系統(tǒng)。
不論是硬鏈接或軟鏈接都不會將原本的檔案復制一份,只會占用非常少量的磁碟空間。
軟連接:
1.軟鏈接,以路徑的形式存在。類似于Windows操作系統(tǒng)中的快捷方式
2.軟鏈接可以 跨文件系統(tǒng) ,硬鏈接不可以
3.軟鏈接可以對一個不存在的文件名進行鏈接
4.軟鏈接可以對目錄進行鏈接
硬鏈接:
1.硬鏈接,以文件副本的形式存在。但不占用實際空間。
2.不允許給目錄創(chuàng)建硬鏈接
3.硬鏈接只有在同一個文件系統(tǒng)中才能創(chuàng)建
查看軟連接:
1). ls –l filename
ls顯示一個軟鏈接文件的絕對路徑
2). readlink -f filename
readlink可以顯示軟鏈接文件的實際路徑
3). stat filename
stat的命令可以查看軟鏈接文件的一系列詳細的文件屬性,如文件類型、模式和軟鏈接文件絕對路徑等
11. history
查看歷史命令
用法:
history-c? 清空當前歷史記錄(只是清空緩存中的歷史記錄,偽刪除)
history n ??n為數字,獲取最近的n條歷史記錄
history-d n? 刪除某行歷史記錄(這樣可以有針對性的保留歷史記錄)
!!?執(zhí)行最后一條history命令
!n n為數字,執(zhí)行n序號的命令
12.cut
cut命令用于顯示每行從開頭算起 num1 到 num2 的文字
-b :以字節(jié)為單位進行分割。這些字節(jié)位置將忽略多字節(jié)字符邊界,除非也指定了 -n 標志。
-c :以字符為單位進行分割。
-d :自定義分隔符,默認為制表符。
-f :與-d一起使用,指定顯示哪個區(qū)域。
-n :取消分割多字節(jié)字符。僅和 -b 標志一起使用。如果字符的最后一個字節(jié)落在由 -b 標志的 List 參數指示的范圍之內,該字符將被寫出;否則,該字符將被排除
實例:ps?-ef | grep?StartChrome | grep?-v?grep | cut?-c?9-15 | xargs?kill?-9
13.xargs
給命令傳遞參數的一個過濾器,也是組合多個命令的一個工具。
? ? xargs 可以將管道或標準輸入(stdin)數據轉換成命令行參數,也能夠從文件的輸出中讀取數據。
? ? xargs 也可以將單行或多行文本輸入轉換為其他格式,例如多行變單行,單行變多行。
? ? xargs 默認的命令是 echo,這意味著通過管道傳遞給 xargs 的輸入將會包含換行和空白,不過通過 xargs 的處理,換行和空白將被空格取代。
xargs 是一個強有力的命令,它能夠捕獲一個命令的輸出,然后傳遞給另外一個命令。
? ? 之所以能用到這個命令,關鍵是由于很多命令不支持|管道來傳遞參數。
-a file 從文件中讀入作為 stdin
-e flag ,注意有的時候可能會是-E,flag必須是一個以空格分隔的標志,當xargs分析到含有flag這個標志的時候就停止。
-p 當每次執(zhí)行一個argument的時候詢問一次用戶。
-n num 后面加次數,表示命令在執(zhí)行的時候一次用的argument的個數,默認是用所有的。
-t 表示先打印命令,然后再執(zhí)行。
-i 或者是-I,這得看linux支持了,將xargs的每項名稱,一般是一行一行賦值給 {},可以用 {} 代替。
-r no-run-if-empty 當xargs的輸入為空的時候則停止xargs,不用再去執(zhí)行了。
-s num 命令行的最大字符數,指的是 xargs 后面那個命令的最大命令行字符數。
-L num 從標準輸入一次讀取 num 行送給 command 命令。
-l 同 -L。
-d delim 分隔符,默認的xargs分隔符是回車,argument的分隔符是空格,這里修改的是xargs的分隔符。
-x exit的意思,主要是配合-s使用。。
-P 修改最大的進程數,默認是1,為0時候為as many as it can ,這個例子我沒有想到,應該平時都用不到的吧。
xargs實例:?
默認,多行輸出變單行輸出:echo -e 'a\nb' | xargs
-n,每行顯示3個字符:echo -e 'a\nb\nc\nd' | xargs -n3
-d,自定義一個定界符:echo "nameXnameXnameXname" | xargs -dX
三劍客
1.grep
2.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中不適用。
基礎用法:
ps -ef | awk '{print $1}'? ? ? ? # 取第1列數據
ps -ef | awk '{print $1$2}'? ? ? # 取第1,2列數據,無間隔符
ps -ef | awk '{print $1,$2}'? ? ? # 取第1,2列數據,有默認間隔符
ps -ef | awk '{print $1+$2}'? ? ? # 取第1,2列數據,并相加
ps -ef | awk '{print $1"+"$2}'? ? # 取第1,2列數據,以+作間隔符
指定間隔符:
awk -F, '{print $1, $2}' awk_test.txt? ? # 讀取數據時以","作間隔符
awk -F'[ ,]' '{print $1, $2}'? awk_test.txt? ? # 讀取數據時先以空格分割,再以","分割
設置變量:
awk -va=1 '{print $1, $1+a, $1a}'? awk_test.txt? ? # 設置變量a=1,打印第1列原始數據,和第1列數據+a結果,和第1列數據與a拼接結果
高級用法:
# 過濾,多個過濾條件以&&拼接,支持正則
awk -F, '$1>2 && $2>2 {print $1, $2}'? awk_test.txt?
#讀取數據時以“,”作間隔符,輸出第1,2列大于2的行,并打印第1,2列
內建變量(詳細內建變量請查看教程):
awk '{print NR, NF, $1, $2}' awk_test.txt????
# NR?? 已經讀出的記錄數,就是行號,從1開始
# NF??? 一條記錄的字段的數目
關鍵詞(BEGIN、END):
文件中使用:
BEGIN{ 這里面放的是執(zhí)行前的語句 }
{這里面放的是處理每一行時要執(zhí)行的語句}
END {這里面放的是處理完所有的行后要執(zhí)行的語句 }
命令行使用:
awk'BEGIN{FS=","} {print $1,$2}'awk_test.txt??? #通過BEGIN和內建變量,設置分隔符為逗號
3.sed
sed?是一種流編輯器,它是文本處理中非常重要的工具,能夠完美的配合正則表達式使用,功能不同凡響。處理時,把當前處理的行存儲在臨時緩沖區(qū)中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區(qū)中的內容,處理完成后,把緩沖區(qū)的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有 改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件;簡化對文件的反復操作;編寫轉換程序等。
用法:sed [-hnV][-e<script>][-f<script文件>][文本文件]
參數說明:
-e<script>或--expression=<script> 以選項中指定的script來處理輸入的文本文件。
-f<script文件>或--file=<script文件> 以選項中指定的script文件來處理輸入的文本文件。
-h或--help 顯示幫助。
-n或--quiet或--silent 僅顯示script處理后的結果。
動作說明:
a :新增, a 的后面可以接字串,而這些字串會在新的一行出現(下一行)
c :取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行
d :刪除, d 后面通常不接任何內容
i :插入, i 的后面可以接字串,而這些字串會在新的一行出現(上一行)
p :打印,亦即將某個選擇的數據印出。通常 p 會與參數 sed -n 一起運行
s :取代,可以直接進行取代的工作,通常這個 s 的動作可以搭配正則表達式
sed實例:
sed-e 2a\nnnsed_test.txt??? #在輸出流中第2行后插入'nnn'
sed-i2a\nnnsed_test.txt??? ?#在源文件中第2行后插入'nnn'
sed -i 's/nnn/jjj/g' sed_test.txt???#在源文件中把'nnn'替換為'ggg'
sed'3d' sed_test.txt???#在源文件中刪除第3行數據,d代表刪除,$d代表最后一行
sed'2,5c No 2-5 number' sed_test.txt?????????? # c為替換,將2-5行的內容替換為'No 2-5 number'
sed'/^666/c this is new line!' sed_test.txt??? #正則匹配666開頭的行替換為'No 2-5 number'