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/passwd
lp: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]