linux 運維筆記
cat
cat是一個文字檢視工具,檢視一個檔案的內容用cat比較簡單,其中最簡單的用法就是cat後面直接加檔名
[root@centos7 ~]# cat /etc/fstab
cat 的語法結構
cat [OPTION]... [FILE]...
常用選項
-n 對輸出的所有行編號
-A 顯示輸出檔案中所有隱藏的符號
tac
tac 是將一個檔案從最後一行開始倒過來輸出到螢幕,tac實際上就是cat反過來寫,這個命令並不是很常用。
rev
rev是指將一個檔案的內容的每一行從最後一個字元到開始的字元反過來顯示
more 和 less
相比cat和tac來說,more和less就好用多了,首先前面的兩個開啟大檔案的時候會一次性開啟輸出到螢幕,而後者開啟後可以利用快捷鍵一點點的往下看。
less的功能和more相似,但是使用more無法向前翻頁,只能往後翻頁
head 和 tail
head和tail通常使用在只需要讀取檔案的前幾行和後幾行中使用(預設顯示前十行和後十行)
head 的語法結構
head -n# file
tail 的語法結構
tail -n# file
wc
wc的功能是統計檔案中的單詞數 行數 位元組數,並將統計結果輸出到螢幕上
wc 的語法結構
wc [OPTION]... [FILE]...
常用選項
-l 統計行數
-w 統計單詞數
-c 統計字元數
cut
cut以某種方式按照指定的格式對檔案的行進行切割
cut的語法結構
cut [OPTION]... [FILE]...
常用選項
-d 自定義分隔符
-f 與-d一起使用,指定顯示那個區域
sort
sort 將檔案的每一行相互比較,比較原則是從首字元向後,最後將他們按升序排序輸出到螢幕
sort的語法結構
sort [OPTION]... [FILE]...
常用選項
-n 依照數值的大小進行排休
-r 以相反的順序進行排序
-t 指定分隔符
-k 配合-t使用,指定顯示那個欄位
uniq
uniq 檢查及刪除檔案中重複的行,一般配合sort使用
uniq的語法結構
uniq [OPTION]... [INPUT [OUTPUT]]
常用選項
-u 顯示不重複的行
-d 顯示重複的行,僅顯示一行
-c 在每行旁邊顯示該行重複的次數
find
find命令用於在指定的目錄下查詢檔案,如果不使用引數,find預設在當前目錄下查詢子目錄和檔案,並將查詢到的子目錄和檔案全部顯示
find的語法結構
find option path
常用選項
find / -amin -10 # 查詢在系統中最後10分鐘訪問的檔案
find / -atime -2 # 查詢在系統中最後48小時訪問的檔案
find / -empty # 查詢在系統中為空的檔案或者資料夾
find / -group cat # 查詢在系統中屬於groupcat的檔案
find / -mmin -5 # 查詢在系統中最後5分鐘裡修改過的檔案
find / -mtime -1 #查詢在系統中最後24小時裡修改過的檔案
find / -nouser #查詢在系統中屬於作廢使用者的檔案
find / -user fred #查詢在系統中屬於fred這個使用者的檔案
locate
跟find類似,不過這個不是實時查詢,Locate查詢實在自己的資料庫中查詢,如果剛建的檔案或目錄沒有立即同步到資料庫,Locate就會找不到
優點是查詢到資料的時間快,缺點,資料不是實時更新的
updatedb 更新Locate資料庫
壓縮 解壓縮和歸檔
compress/uncompress:.z
gzip/gunzip:.gz
bzip2/bunzip2:.bz2
xz/unxz:.xz
zip/unzip
tar,cpio
正則表示式
1 關於正則表示式
處理字串時,有很多較為複雜的字串用普通的字串處理無法完成,比如說可能驗證一個“email"的合法性,為此需要檢視好多不容易查到的規則,這正是正則表示式的
用武之地,正則表示式是功能強大而簡明的字元組,其中可以包含大量的邏輯,特別值得一提的是正則表示式相當簡短
2 正則表示式的元素
grep
作為linux中最為常用的三大文字(grep sed awd)處理之一,掌握其用法是很有必要的
grep家族一共有三個 grep egrep fgrep
grep 的語法結構
grep [OPTIONS] PATTERN [FILE...]
常用選項
-o 只顯示匹配到的字串
-v 只打印沒有被匹配的,匹配到的反而不列印
-i 忽略大小寫
-n 顯示行號
-E 開啟擴充套件的正則表示式 等同於egrep
注:
預設情況下,正則表示式的匹配工作是貪婪模式,也就是說盡可能長的去匹配。
所有的正則字元在匹配的時候需要用 “\”去轉義
egrep
用法同grep相同,只是這個是擴充套件的正則表示式,正則字元不需要再去使用“\"去轉義了
sed
sed 是流編輯器,能夠完美的配合正則表示式使用。處理時,把當前處理的行載入到模式空間,然後用sed命令在模式空間處理後,輸出到螢幕。緊接著處理下一行,這樣不斷
重複,知道處理到檔案的最後一行。處理完後原檔案內容沒有改變,除非你重定向或者使用了 -i 選項
sed 的語法結構
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
常用選項
-i 修改原檔案
-n 顯示處理後的結果
-r 匹配的內容可以使用正則表示式匹配
定址
定址用於決定對那些行進行編輯,定址的形式可以以數字,正則表示式或二者結合使用,如果沒有定址,sed 預設處理檔案的每一行
定址是一個數字,則表示行號,$表示最後一行
[root@centos7 ~]# sed -n '5p' /etc/passwdlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 只打印第5行 [root@centos7 ~]# sed -n '1,10p' /etc/passwd
列印第一行到第十行的內容
地址是以逗號分隔開的,那麼處理這幾行的內容需要加上逗號,範圍也可以用數字,正則表示式以及二者的結合
sed -n '/^root/,/^lp/p' /etc/passwd列印/etc/passwd 檔案以 root 開頭到 lp 開頭的中間的行
命令
變數
$BASHPID 顯示當前bash程序的PID號
$PPID 顯示當前程序的父程序PID號
刪除變數
unset VLNAME
定義環境變數
export NAME=VALUE (如果想長久有效,可寫在檔案 (/etc/profile.d/) 中
位置變數
$NUMBER
例:
$0 指的是指令碼本身
$1 指的是指令碼的第一個引數
$2 指的是指令碼的第二個引數
$# 引數的個數
$* 打印出所有引數(如果用$*傳遞給下一個腳本當引數,它會把引數當成一個整體)
$@ 打印出所有引數 (如果用$@傳遞給下一個腳本當引數,它會把引數當成每個獨立的引數)
bash運算子
算術運算子
算術運算子是指在程式中執行加,減,乘,除等數學運算的算術符,shell中經常使用的數學運算子如下
+:對兩個變數做加法。 -:對兩個變數做減法。
*:對兩個變數做乘法。 /:對兩個變數做除法。
%:取模運算,第一個變數除以第二個變數求餘數。 +=:加等於,在自身基礎上加第二個變數。
-=:減等於,在第一個變數的基礎上減去第二個變數。 *=:乘等於,在第一個變數的基礎上乘以第二個變數。
/=:除等於,在第一個變數的基礎上除以第二個變數。 %=:取模賦值,第一個變數對第二個變數取模運算,再賦值給第一個變數
在使用這些運算子的時候需要注意,例如
echo 1+2 shell 中並沒有輸出3,而是輸出了1+2在做 1+2 的運算的時候,我們可以使用 let 或 $[ ] 來做運算
例如我們在做1+2運算的時候,
let b=1+2 ; echo $b
echo $[1+2]