萬丈高樓平地而起扳肛,linux常用命令詳解

越來越多的人加入了編程的大門傻挂,我們首先要做的就是熟悉linux系統(tǒng)的命令,這是我們最為基礎(chǔ)的知識挖息,這次詳細(xì)總結(jié)了一下金拒,不僅讓自己溫故而知新,也提供給各位道友套腹,大家一起進(jìn)步绪抛。

1.ls [選項(xiàng)] [目錄名 | 列出相關(guān)目錄下的所有目錄和文件

-a 列出包括.a開頭的隱藏文件的所有文件
-A 通-a,但不列出"."和".."
-l 列出文件的詳細(xì)信息
-c 根據(jù)ctime排序顯示
-t 根據(jù)文件修改時(shí)間排序
---color[=WHEN] 用色彩辨別文件類型 WHEN 可以是’never’电禀、’always’或’auto’其中之一
白色:表示普通文件
藍(lán)色:表示目錄
綠色:表示可執(zhí)行文件
紅色:表示壓縮文件
淺藍(lán)色:鏈接文件
紅色閃爍:表示鏈接的文件有問題
黃色:表示設(shè)備文件
灰色:表示其它文件

2.mv [選項(xiàng)] 源文件或目錄 目錄或多個(gè)源文件 | 移動(dòng)或重命名文件

-b 覆蓋前做備份
-f 如存在不詢問而強(qiáng)制覆蓋
-i 如存在則詢問是否覆蓋
-u 較新才覆蓋
-t 將多個(gè)源文件移動(dòng)到統(tǒng)一目錄下幢码,目錄參數(shù)在前,文件參數(shù)在后
eg:
mv a /tmp/ 將文件a移動(dòng)到 /tmp目錄下
mv a b 將a命名為b
mv /home/zenghao test1.txt test2.txt test3.txt</pre>

3.cp [選項(xiàng)] 源文件或目錄 目錄或多個(gè)源文件 | 將源文件復(fù)制至目標(biāo)文件尖飞,或?qū)⒍鄠€(gè)源文件復(fù)制至目標(biāo)目錄蛤育。

-r -R 遞歸復(fù)制該目錄及其子目錄內(nèi)容
-p 連同檔案屬性一起復(fù)制過去
-f 不詢問而強(qiáng)制復(fù)制
-s 生成快捷方式
-a 將檔案的所有特性都一起復(fù)制

4.scp [參數(shù)] [原路徑] [目標(biāo)路徑] | 在Linux服務(wù)器之間復(fù)制文件和目錄

-v 詳細(xì)顯示輸出的具體情況
-r 遞歸復(fù)制整個(gè)目錄
(1) 復(fù)制文件:
命令格式:
scp local_file remote_username@remote_ip:remote_folder
或者
scp local_file remote_username@remote_ip:remote_file
或者
scp local_file remote_ip:remote_folder
或者
scp local_file remote_ip:remote_file
第1,2個(gè)指定了用戶名,命令執(zhí)行后需要輸入用戶密碼葫松,第1個(gè)僅指定了遠(yuǎn)程的目錄瓦糕,文件名字不變,第2個(gè)指定了文件名
第3,4個(gè)沒有指定用戶名腋么,命令執(zhí)行后需要輸入用戶名和密碼咕娄,第3個(gè)僅指定了遠(yuǎn)程的目錄,文件名字不變珊擂,第4個(gè)指定了文件名
(2) 復(fù)制目錄:
命令格式:
scp -r local_folder remote_username@remote_ip:remote_folder
或者
scp -r local_folder remote_ip:remote_folder
第1個(gè)指定了用戶名圣勒,命令執(zhí)行后需要輸入用戶密碼;
第2個(gè)沒有指定用戶名摧扇,命令執(zhí)行后需要輸入用戶名和密碼圣贸;
eg:
從 本地 復(fù)制到 遠(yuǎn)程
scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root
從 遠(yuǎn)程 復(fù)制到 本地
scp root@/172.19.2.75:/home/root/full.tar.gz /home/daisy/full.tar.gz</pre>

5.rm [選項(xiàng)] 文件 | 刪除文件

-r 刪除文件夾
-f 刪除不提示
-i 刪除提示
-v 詳細(xì)顯示進(jìn)行步驟

6.touch [選項(xiàng)] 文件 | 創(chuàng)建空文件或更新文件時(shí)間

-a 只修改存取時(shí)間
-m 值修改變動(dòng)時(shí)間
-r eg:touch -r a b ,使b的時(shí)間和a相同
-t 指定特定的時(shí)間 eg:touch -t 201211142234.50 log.log

7.pwd 查看當(dāng)前所在路徑

8.cd 改變當(dāng)前目錄

-- :返回上層目錄
.. :返回上層目錄
~ :返回主目錄
/ :根目錄

9.mkdir [選項(xiàng)] 目錄… | 創(chuàng)建新目錄

-p 遞歸創(chuàng)建目錄,若父目錄不存在則依次創(chuàng)建
-m 自定義創(chuàng)建目錄的權(quán)限 eg:mkdir -m 777 hehe
-v 顯示創(chuàng)建目錄的詳細(xì)信息

10.rmdir 刪除空目錄

-v 顯示執(zhí)行過程
-p 若自父母刪除后父目錄為空則一并刪除

11.rm [選項(xiàng)] 文件… | 一個(gè)或多個(gè)文件或目錄

-f 忽略不存在的文件扛稽,不給出提示
-i 交互式刪除
-r 將列出的目錄及其子目錄遞歸刪除
-v 列出詳細(xì)信息

12.echo:顯示內(nèi)容

-n 輸出后不換行
-e 遇到轉(zhuǎn)義字符特殊處理
eg:
echo "he\nhe" 顯示he\nhe
ehco -e "he\nhe" 顯示he(換行了)he</pre>

13.cat [選項(xiàng)] [文件]..| 一次顯示整個(gè)文件或從鍵盤創(chuàng)建一個(gè)文件或?qū)讉€(gè)文件合并成一個(gè)文件

-n 編號文件內(nèi)容再輸出
-E 在結(jié)束行提示$

14.tac | 反向顯示

15.more | 按頁查看文章內(nèi)容吁峻,從前向后讀取文件,因此在啟動(dòng)時(shí)就加載整個(gè)文件

+n 從第n行開始顯示
-n 每次查看n行數(shù)據(jù)
+/String 搜尋String字符串位置,從其前兩行開始查看
-c 清屏再顯示
-p 換頁時(shí)清屏</pre>

16.less | 可前后移動(dòng)地逐屏查看文章內(nèi)容用含,在查看前不會加載整個(gè)文件

-m 顯示類似于more命令的百分比
-N 顯示行號
n 重復(fù)前一個(gè)搜索(與 / 或 ? 有關(guān))
N 反向重復(fù)前一個(gè)搜索(與 / 或 ? 有關(guān))
b 向后翻一頁
d 向后翻半頁

17.nl [選項(xiàng)]… [文件]… | 將輸出內(nèi)容自動(dòng)加上行號

-b
-b a 不論是否有空行矮慕,都列出行號(類似 cat -n)
-b t 空行則不列行號(默認(rèn))
-n 有l(wèi)n rn rz三個(gè)參數(shù),分別為再最左方顯示啄骇,最右方顯示不加0痴鳄,最右方顯示加0

18.head [參數(shù)]… [文件]… | 顯示檔案開頭,默認(rèn)開頭10行

-v 顯示文件名
-c number 顯示前number個(gè)字符,若number為負(fù)數(shù),則顯示除最后number個(gè)字符的所有內(nèi)容
-number/n (+)number 顯示前number行內(nèi)容缸夹,
-n number 若number為負(fù)數(shù)痪寻,則顯示除最后number行數(shù)據(jù)的所有內(nèi)容

19.tail [必要參數(shù)] [選擇參數(shù)] [文件] | 顯示文件結(jié)尾內(nèi)容

-v 顯示詳細(xì)的處理信息
-q 不顯示處理信息
-num/-n (-)num 顯示最后num行內(nèi)容
-n +num 從第num行開始顯示后面的數(shù)據(jù)
-c 顯示最后c個(gè)字符
-f 循環(huán)讀取

20.vi 編輯文件

:w filename 將文章以指定的文件名保存起來
:wq 保存并退出
:q! 不保存而強(qiáng)制退出
命令行模式功能鍵
1)插入模式
按「i」切換進(jìn)入插入模式「insert mode」,按"i"進(jìn)入插入模式后是從光標(biāo)當(dāng)前位置開始輸入文件虽惭;
按「a」進(jìn)入插入模式后橡类,是從目前光標(biāo)所在位置的下一個(gè)位置開始輸入文字;
按「o」進(jìn)入插入模式后趟妥,是插入新的一行,從行首開始輸入文字佣蓉。
2)從插入模式切換為命令行模式
按「ESC」鍵披摄。
3)移動(dòng)光標(biāo)
  vi可以直接用鍵盤上的光標(biāo)來上下左右移動(dòng),但正規(guī)的vi是用小寫英文字母「h」勇凭、「j」疚膊、「k」、「l」虾标,分別控制光標(biāo)左寓盗、下、上璧函、右移一格傀蚌。
  按「ctrl」+「b」:屏幕往"后"移動(dòng)一頁。
  按「ctrl」+「f」:屏幕往"前"移動(dòng)一頁蘸吓。
  按「ctrl」+「u」:屏幕往"后"移動(dòng)半頁善炫。
  按「ctrl」+「d」:屏幕往"前"移動(dòng)半頁。
  按數(shù)字「0」:移到文章的開頭库继。
  按「G」:移動(dòng)到文章的最后箩艺。
  按「$」:移動(dòng)到光標(biāo)所在行的"行尾"。
  按「^」:移動(dòng)到光標(biāo)所在行的"行首"
  按「w」:光標(biāo)跳到下個(gè)字的開頭
  按「e」:光標(biāo)跳到下個(gè)字的字尾
  按「b」:光標(biāo)回到上個(gè)字的開頭
  按「#l」:光標(biāo)移到該行的第#個(gè)位置宪萄,如:5l,56l艺谆。
4)刪除文字
  「x」:每按一次,刪除光標(biāo)所在位置的"后面"一個(gè)字符拜英。
  「#x」:例如静汤,「6x」表示刪除光標(biāo)所在位置的"后面"6個(gè)字符。
  「X」:大寫的X,每按一次撒妈,刪除光標(biāo)所在位置的"前面"一個(gè)字符恢暖。
  「#X」:例如,「20X」表示刪除光標(biāo)所在位置的"前面"20個(gè)字符狰右。
  「dd」:刪除光標(biāo)所在行杰捂。
  「#dd」:從光標(biāo)所在行開始刪除#行
5)復(fù)制
  「yw」:將光標(biāo)所在之處到字尾的字符復(fù)制到緩沖區(qū)中。
  「#yw」:復(fù)制#個(gè)字到緩沖區(qū)
  「yy」:復(fù)制光標(biāo)所在行到緩沖區(qū)棋蚌。
  「#yy」:例如嫁佳,「6yy」表示拷貝從光標(biāo)所在的該行"往下數(shù)"6行文字。
  「p」:將緩沖區(qū)內(nèi)的字符貼到光標(biāo)所在位置谷暮。注意:所有與"y"有關(guān)的復(fù)制命令都必須與"p"配合才能完成復(fù)制與粘貼功能蒿往。
6)替換
  「r」:替換光標(biāo)所在處的字符。
  「R」:替換光標(biāo)所到之處的字符湿弦,直到按下「ESC」鍵為止瓤漏。
7)回復(fù)上一次操作
  「u」:如果您誤執(zhí)行一個(gè)命令,可以馬上按下「u」颊埃,回到上一個(gè)操作蔬充。按多次"u"可以執(zhí)行多次回復(fù)。
8)更改
  「cw」:更改光標(biāo)所在處的字到字尾處
  「c#w」:例如班利,「c3w」表示更改3個(gè)字
9)跳至指定的行
  「ctrl」+「g」列出光標(biāo)所在行的行號饥漫。
  「#G」:例如,「15G」罗标,表示移動(dòng)光標(biāo)至文章的第15行行首庸队。</pre>

21.which 可執(zhí)行文件名稱 | 查看可執(zhí)行文件的位置,在PATH變量指定的路徑中查看系統(tǒng)命令是否存在及其位置

22.whereis [-bmsu] [BMS 目錄名 -f ] 文件名| 定位可執(zhí)行文件闯割、源代碼文件彻消、幫助文件在文件系統(tǒng)中的位置

-b 定位可執(zhí)行文件。
-m 定位幫助文件宙拉。
-s 定位源代碼文件证膨。
-u 搜索默認(rèn)路徑下除可執(zhí)行文件、源代碼文件鼓黔、幫助文件以外的其它文件央勒。
-B 指定搜索可執(zhí)行文件的路徑。
-M 指定搜索幫助文件的路徑澳化。
-S 指定搜索源代碼文件的路徑崔步。</pre>

23.locate | 通過搜尋數(shù)據(jù)庫快速搜尋檔案

-r 使用正規(guī)運(yùn)算式做尋找的條件</pre>

24.find find [PATH] [option] [action] | 在文件樹種查找文件,并作出相應(yīng)的處理

選項(xiàng)與參數(shù):1. 與時(shí)間有關(guān)的選項(xiàng):共有 -atime, -ctime 與 -mtime 和-amin,-cmin與-mmin缎谷,以 -mtime 說明
-mtime n :n 為數(shù)字井濒,意義為在 n 天之前的『一天之內(nèi)』被更動(dòng)過內(nèi)容的檔案灶似;
-mtime +n :列出在 n 天之前(不含 n 天本身)被更動(dòng)過內(nèi)容的檔案檔名;
-mtime -n :列出在 n 天之內(nèi)(含 n 天本身)被更動(dòng)過內(nèi)容的檔案檔名瑞你。
-newer file :file 為一個(gè)存在的檔案酪惭,列出比 file 還要新的檔案檔名

  1. 與使用者或組名有關(guān)的參數(shù):
    -uid n :n 為數(shù)字,這個(gè)數(shù)字是用戶的賬號 ID者甲,亦即 UID
    -gid n :n 為數(shù)字江醇,這個(gè)數(shù)字是組名的 ID岗照,亦即 GID
    -user name :name 為使用者賬號名稱件余!例如 dmtsai
    -group name:name 為組名蚁堤,例如 users ;
    -nouser :尋找檔案的擁有者不存在 /etc/passwd 的人刽辙!
    -nogroup :尋找檔案的擁有群組不存在于 /etc/group 的檔案窥岩!
  2. 與檔案權(quán)限及名稱有關(guān)的參數(shù):
    -name filename:搜尋文件名為 filename 的檔案(可使用通配符)
    -size [+-]SIZE:搜尋比 SIZE 還要大(+)或小(-)的檔案。這個(gè) SIZE 的規(guī)格有:
    c: 代表 byte
    k: 代表 1024bytes宰缤。所以颂翼,要找比 50KB還要大的檔案,就是『 -size +50k 』
    -type TYPE :搜尋檔案的類型為 TYPE 的慨灭,類型主要有:
    一般正規(guī)檔案 (f)
    裝置檔案 (b, c)
    目錄 (d)
    連結(jié)檔 (l)
    socket (s)
    FIFO (p)
    -perm mode :搜尋檔案權(quán)限『剛好等于』 mode的檔案朦乏,這個(gè)mode為類似chmod的屬性值,舉例來說缘挑,-rwsr-xr-x 的屬性為4755集歇!
    -perm -mode :搜尋檔案權(quán)限『必須要全部囊括 mode 的權(quán)限』的檔案桶略,舉例來說语淘,
    我們要搜尋-rwxr--r-- 亦即 0744 的檔案,使用-perm -0744际歼,當(dāng)一個(gè)檔案的權(quán)限為 -rwsr-xr-x 惶翻,亦即 4755 時(shí),也會被列出來鹅心,因?yàn)?-rwsr-xr-x 的屬性已經(jīng)囊括了 -rwxr--r-- 的屬性了吕粗。
    -perm +mode :搜尋檔案權(quán)限『包含任一 mode 的權(quán)限』的檔案,舉例來
    說旭愧,我們搜尋-rwxr-xr-x 颅筋,亦即 -perm +755 時(shí),但一個(gè)文件屬性為 -rw-------也會被列出來输枯,因?yàn)樗?-rw.... 的屬性存在议泵!
  3. 額外可進(jìn)行的動(dòng)作:
    -exec command :command 為其他指令,-exec 后面可再接額外的指令來處理搜尋到的結(jié)果桃熄。
    -print :將結(jié)果打印到屏幕上先口,這個(gè)動(dòng)作是預(yù)設(shè)動(dòng)作!
    eg:
    find / -perm +7000 -exec ls -l {} ; ,額外指令以-exec開頭,以;結(jié)尾{}代替前面找到的內(nèi)容
    | xargs
    -i 默認(rèn)的前面輸出用{}代替
    eg:
    find . -name "*.log" | xargs -i mv {} test4</pre>

25.grep ‘正則表達(dá)式’ 文件名 | 用正則表達(dá)式搜索文本碉京,并把匹配的行打印出來

-c 只輸出匹配行的計(jì)數(shù)厢汹。
-I 不區(qū)分大小寫(只適用于單字符)。
-l 只顯示文件名
-v 顯示不包含匹配文本的所有行谐宙。
-n 顯示匹配行數(shù)據(jù)及其行號

25.file | 判斷文件類型

26.gzip [-cdtv#] 檔名 | 壓縮烫葬、解壓縮,源文件都不再存在

-d 進(jìn)行解壓縮
-c 將壓縮的數(shù)據(jù)輸出到屏幕上
-v :顯示原檔案/壓縮文件案的壓縮比等信息
-# :壓縮等級卧惜,-1最快厘灼,但壓縮比最差,=9最慢咽瓷,但壓縮比最好</pre>

27.gunzip | 解壓縮

28.bzip2 | 壓縮设凹、解壓縮

-d :解壓
-z :壓縮
-k :保留源文件
-c :將壓縮的過程產(chǎn)生的數(shù)據(jù)輸出到屏幕上!
-v :可以顯示出原檔案/壓縮文件案的壓縮比等信息茅姜;
-# :與 gzip 同樣的闪朱,都是在計(jì)算壓縮比的參數(shù), -9 最佳钻洒, -1 最快奋姿!</pre>

29.bzcat 讀取數(shù)據(jù)而無需解壓

30.tar [主選項(xiàng)+輔選項(xiàng)] 文件或者目錄 | 多個(gè)目錄或檔案打包、壓縮成一個(gè)大檔案

主選項(xiàng):
-c 建立打包檔案素标,可搭配 -v 來察看過程中被打包的檔名(filename)
-t 察看打包檔案的內(nèi)容含有哪些檔名称诗,重點(diǎn)在察看『檔名』就是了;
-x 解打包或解壓縮的功能头遭,可以搭配 -C (大寫) 在特定目錄解開
輔選項(xiàng):
-j 透過 bzip2 的支持進(jìn)行壓縮/解壓縮:此時(shí)檔名最好為 *.tar.bz2
-z 透過 gzip 的支持進(jìn)行壓縮/解壓縮:此時(shí)檔名最好為 .tar.gz
-v 在壓縮/解壓縮的過程中寓免,將正在處理的文件名顯示出來!
-f filename -f 后面要立刻接要被處理的檔名计维!
-C 目錄 這個(gè)選項(xiàng)用在解壓縮袜香,若要在特定目錄解壓縮,可以使用這個(gè)選項(xiàng)鲫惶。
--exclude FILE:在壓縮打包過程中忽略某文件 eg: tar --exclude /home/zenghao -zcvf myfile.tar.gz /home/
/etc
-p 保留備份數(shù)據(jù)的原本權(quán)限與屬性蜈首,常用于備份(-c)重要的配置文件
-P(大寫) 保留絕對路徑,亦即允許備份數(shù)據(jù)中含有根目錄存在之意欠母;
eg:
壓 縮:tar -jcvf filename.tar.bz2 要被壓縮的檔案或目錄名稱
查 詢:tar -jtvf filename.tar.bz2
解壓縮:tar -jxvf filename.tar.bz2 -C 欲解壓縮的目錄</pre>

31.exit 退出當(dāng)前shell

32.logout 退出登錄shell

33.shutdown -h now

34.users 顯示當(dāng)前登錄系統(tǒng)地用戶

35.who 登錄在本機(jī)的用戶與來源

-H或--heading  顯示各欄位的標(biāo)題信息列欢策。

36.w 登錄在本機(jī)的用戶及其運(yùn)行的程序

-s  使用簡潔格式列表,不顯示用戶登入時(shí)間赏淌,終端機(jī)階段作業(yè)和程序所耗費(fèi)的CPU時(shí)間踩寇。
-h  不顯示各欄位的標(biāo)題信息列。

37.write 給當(dāng)前聯(lián)機(jī)的用戶發(fā)消息

38.wall 給所有登錄再本機(jī)的用戶發(fā)消息

39.last 查看用戶的登陸日志

40.lastlog 查看每個(gè)用戶最后的登陸時(shí)間

41.finger [選項(xiàng)] [使用者] [用戶@主機(jī)] | 查看用戶信息

-s 顯示用戶的注冊名猜敢、實(shí)際姓名姑荷、終端名稱盒延、寫狀態(tài)、停滯時(shí)間鼠冕、登錄時(shí)間等信息
-l 除了用-s選項(xiàng)顯示的信息外添寺,還顯示用戶主目錄、登錄shell懈费、郵件狀態(tài)等信息计露,以及用戶主目錄下的.plan、.project和.forward文件的內(nèi)容憎乙。
-p 除了不顯示.plan文件和.project文件以外票罐,與-l選項(xiàng)相同</pre>

42.hostname 查看主機(jī)名

43.alias ii = “l(fā)s -l” | 添加別名

44.unalias ii | 清除別名

45.useradd [-u UID] [-g 初始群組] [-G 次要群組] [-c 說明欄] [-d 家目錄絕對路徑] [-s shell] 使用者賬號名 | 新增用戶

-M 不建立用戶家目錄!(系統(tǒng)賬號默認(rèn)值)
-m 建立用戶家目錄泞边!(一般賬號默認(rèn)值)
-r 建立一個(gè)系統(tǒng)的賬號该押,這個(gè)賬號的 UID 會有限制
-e 賬號失效日期,格式為『YYYY-MM-DD』
-D 查看useradd的各項(xiàng)默認(rèn)值</pre>

46.passwd | 修改密碼

-l 使密碼失效
-u 與-l相對阵谚,用戶解鎖
-S 列出登陸用戶passwd文件內(nèi)的相關(guān)參數(shù)
-n 后面接天數(shù)蚕礼,shadow 的第 4 字段,多久不可修改密碼天數(shù)
-x 后面接天數(shù)梢什,shadow 的第 5 字段奠蹬,多久內(nèi)必須要更動(dòng)密碼
-w 后面接天數(shù),shadow 的第 6 字段嗡午,密碼過期前的警告天數(shù)
-i 后面接『日期』囤躁,shadow 的第 7 字段,密碼失效日期
使用管道劉設(shè)置密碼:echo "zeng" | passwd --stdin zenghao

47.userdel 刪除用戶

-r 用戶文件一并刪除

48.chage [-ldEImMW] 賬號名 | 修改用戶密碼的相關(guān)屬性

-l 列出該賬號的詳細(xì)密碼參數(shù)荔睹;
-d 后面接日期狸演,修改 shadow 第三字段(最近一次更改密碼的日期),格式Y(jié)YYY-MM-DD
-E 后面接日期应媚,修改 shadow 第八字段(賬號失效日)严沥,格式 YYYY-MM-DD
-I 后面接天數(shù)猜极,修改 shadow 第七字段(密碼失效日期)
-m 后面接天數(shù)中姜,修改 shadow 第四字段(密碼最短保留天數(shù))
-M 后面接天數(shù),修改 shadow 第五字段(密碼多久需要進(jìn)行變更)
-W 后面接天數(shù)跟伏,修改 shadow 第六字段(密碼過期前警告日期)

49.usermod [-cdegGlsuLU] username | 修改用戶的相關(guān)屬性

-c 后面接賬號的說明丢胚,即 /etc/passwd 第五欄的說明欄,可以加入一些賬號的說明受扳。
-d 后面接賬號的家目錄携龟,即修改 /etc/passwd 的第六欄;
-e 后面接日期勘高,格式是 YYYY-MM-DD 也就是在 /etc/shadow 內(nèi)的第八個(gè)字段數(shù)據(jù)啦峡蟋!
-f 后面接天數(shù)為 shadow 的第七字段坟桅。
-g 后面接初始群組,修改 /etc/passwd 的第四個(gè)字段蕊蝗,亦即是GID的字段仅乓!
-G 后面接次要群組,修改這個(gè)使用者能夠支持的群組
-l 后面接賬號名稱蓬戚。亦即是修改賬號名稱夸楣, /etc/passwd 的第一欄!
-s 后面接 Shell 的實(shí)際檔案子漩,例如 /bin/bash 或 /bin/csh 等等豫喧。
-u 后面接 UID 數(shù)字啦!即 /etc/passwd 第三欄的資料幢泼;
-L 凍結(jié)密碼
-U 解凍密碼

50.id [username] | 查看用戶相關(guān)的id信息紧显,還可以用來判斷用戶是否存在

51.groups 查看登陸用戶支持的群組, 第一個(gè)輸出的群組為有效群組

52.newgrp 切換有效群組

53.groupadd [-g gid] 組名 | 添加組

-g 設(shè)定添加組的特定組id</pre>

54.groupmod [-g gid] [-n group_name] 群組名 | 修改組信息

-g 修改既有的 GID 數(shù)字
-n 修改既有的組名

55.groupdel [groupname] | 刪除群組

56.gpasswd | 群組管理員功能

root管理員動(dòng)作:
-gpasswd groupname 設(shè)定密碼
-gpasswd [-A user1,...] [-M user3,...] groupname
-A 將 groupname 的主控權(quán)交由后面的使用者管理(該群組的管理員)
-M 將某些賬號加入這個(gè)群組當(dāng)中
-gpasswd [-r] groupname
-r 將 groupname 的密碼移除
群組管理員動(dòng)作:
- gpasswd [-ad] user groupname
-a 將某位使用者加入到 groupname 這個(gè)群組當(dāng)中
-d 將某位使用者移除出 groupname 這個(gè)群組當(dāng)中

57.chfn修改個(gè)人信息

58.mount [-t vfstype] [-o options] device dir

-ro 采用只讀方式掛接設(shè)備
-rw 采用讀寫方式掛接設(shè)備
eg:mount /home/mydisk.iso /tmp/mnt 通過mnt訪問mydisk內(nèi)的內(nèi)容

59.umount 取消掛載

60.cut

-b :以字節(jié)為單位進(jìn)行分割缕棵。這些字節(jié)位置將忽略多字節(jié)字符邊界鸟妙,除非也指定了 -n 標(biāo)志。
-c :以字符為單位進(jìn)行分割挥吵。
-d :自定義分隔符重父,默認(rèn)為制表符。
-f :與-d一起使用忽匈,指定顯示哪個(gè)區(qū)域房午。

61.sort

-n 依照數(shù)值的大小排序。
-o<輸出文件> 將排序后的結(jié)果存入指定的文件丹允。
-r 以相反的順序來排序郭厌。
-t<分隔字符> 指定排序時(shí)所用的欄位分隔字符。
-k 選擇以哪個(gè)區(qū)間進(jìn)行排序雕蔽。

62.wc 統(tǒng)計(jì)指定文件中的字節(jié)數(shù)折柠、字?jǐn)?shù)、行數(shù), 并將統(tǒng)計(jì)結(jié)果顯示輸出

-l filename 報(bào)告行數(shù)
-c filename 報(bào)告字節(jié)數(shù)
-m filename 報(bào)告字符數(shù)
-w filename 報(bào)告單詞數(shù)

63.uniq 去除文件中相鄰的重復(fù)行

清空/新建文件批狐,將內(nèi)容重定向輸入進(jìn)去
&> 正確扇售、錯(cuò)誤都重定向過去

后面追加</pre>

64.set 顯示環(huán)境變量和普通變量

65.env 顯示環(huán)境變量

66.export 把普通變量變成環(huán)境變量

67.unset 刪除一個(gè)環(huán)境變量

aaa(){} 定義函數(shù)

68.read

-p 接提示字符
-t 接等待的秒數(shù)

69.declare、typeset

-i 聲明為整數(shù)
-a 聲明為數(shù)組
-f 聲明為函數(shù)
-r 聲明為只讀

70.ulimit 限制使用者的某些系統(tǒng)資源

-f 此 shell 可以建立的最大檔案容量 (一般可能設(shè)定為 2GB)單位為 Kbytes eg: ulimit -f 1024
限制使用者僅能建立 1MBytes 以下的容量的檔案

71.df [選項(xiàng)] [文件] | 顯示指定磁盤文件的可用空間,如果沒有文件名被指定嚣艇,則所有當(dāng)前被掛載的文件系統(tǒng)的可用空間將被顯示

-a 顯示全部文件系統(tǒng)
-h 文件大小友好顯示
-l 只顯示本地文件系統(tǒng)
-i 顯示inode信息
-T 顯示文件系統(tǒng)類型

72.du [選項(xiàng)] [文件] | 顯示每個(gè)文件和目錄的磁盤使用空間

-h 方便閱讀的方式
-s 只顯示總和的大小

73.ln [參數(shù)] [源文件或目錄] [目標(biāo)文件或目錄] | 某一個(gè)文件在另外一個(gè)位置建立一個(gè)同步的鏈接

-s 建立軟連接
-v 顯示詳細(xì)的處理過程

74.diff [參數(shù)] [文件1或目錄1] [文件2或目錄2] | 比較單個(gè)文件或者目錄內(nèi)容

-b  不檢查空格字符的不同承冰。
-B  不檢查空白行。
-i 不檢查大小寫
-q 僅顯示差異而不顯示詳細(xì)信息
eg: diff a b > parch.log 比較兩個(gè)文件的不同并產(chǎn)生補(bǔ)丁

75.date [參數(shù)]… [+格式] | 顯示或設(shè)定系統(tǒng)的日期與時(shí)間

%H 小時(shí)(以00-23來表示)食零。
%M 分鐘(以00-59來表示)困乒。
%P AM或PM。
%D 日期(含年月日)
%U 該年中的周數(shù)贰谣。
date -s “2015-10-17 01:01:01″ //時(shí)間設(shè)定
date +%Y%m%d //顯示前天年月日
date +%Y%m%d --date="+1 day/month/year" //顯示前一天/月/年的日期
date +%Y%m%d --date="-1 day/month/year" //顯示后一天/月/年的日期
date -d '2 weeks' 2周后的日期

76.cal [參數(shù)] 月份] [年份] | 查看日歷

-1 顯示當(dāng)月的月歷
-3 顯示前娜搂、當(dāng)迁霎、后一個(gè)月的日歷
-m 顯示星期一為一個(gè)星期的第一天
-s (默認(rèn))星期天為第一天
-j 顯示當(dāng)月是一年中的第幾天的日歷
-y 顯示當(dāng)前年份的日歷

77.ps | 列出當(dāng)前進(jìn)程的快照

a 顯示所有的進(jìn)程
-a 顯示同一終端下的所有程序
e 顯示環(huán)境變量
f 顯示進(jìn)程間的關(guān)系
-H 顯示樹狀結(jié)構(gòu)
r 顯示當(dāng)前終端的程序
T 顯示當(dāng)前終端的所有程序
-au 顯示更詳細(xì)的信息
-aux 顯示所有包含其他使用者的行程
-u 指定用戶的所有進(jìn)程

78.top [參數(shù)] | 顯示當(dāng)前系統(tǒng)正在執(zhí)行的進(jìn)程的相關(guān)信息,包括進(jìn)程ID百宇、內(nèi)存占用率欧引、CPU占用率等

79.kill [參數(shù)] [進(jìn)程號] | 殺死進(jìn)程

80.free [參數(shù)] | 顯示Linux系統(tǒng)中空閑的、已用的物理內(nèi)存及swap內(nèi)存,及被內(nèi)核使用的buffer

81.vmstat | 對操作系統(tǒng)的虛擬內(nèi)存恳谎、進(jìn)程芝此、CPU活動(dòng)進(jìn)行監(jiān)控

82.iostat [參數(shù)] [時(shí)間t] [次數(shù)n](每隔t時(shí)間刷新一次,最多刷新n次)| 對系統(tǒng)的磁盤操作活動(dòng)進(jìn)行監(jiān)視,匯報(bào)磁盤活動(dòng)統(tǒng)計(jì)情況因痛,同時(shí)也會匯報(bào)出CPU使用情況

-p[磁盤] 顯示磁盤和分區(qū)的情況

83.watch [參數(shù)] [命令] |重復(fù)執(zhí)行某一命令以觀察變化

-n 時(shí)隔多少秒刷新
-d 高亮顯示動(dòng)態(tài)變化

84.at [參數(shù)] [時(shí)間] | 在一個(gè)指定的時(shí)間執(zhí)行一個(gè)指定任務(wù)婚苹,只能執(zhí)行一次

HH:MM[am|pm] + number [minutes|hours|days|weeks] 強(qiáng)制在某年某月某日的某時(shí)刻進(jìn)行該項(xiàng)任務(wù)
atq 查看系統(tǒng)未執(zhí)行的任務(wù)
atrm n 刪除編號為n的任務(wù)
at -c n 顯示編號為n的任務(wù)的內(nèi)容

85.crontab | 定時(shí)任務(wù)調(diào)度

file 載入crontab
-e 編輯某個(gè)用戶的crontab文件內(nèi)容
-l 顯示某個(gè)用戶的crontab文件內(nèi)容
-r 刪除某個(gè)用戶的crontab文件

86.ifconfig [網(wǎng)絡(luò)設(shè)備] [參數(shù)] | 查看和配置網(wǎng)絡(luò)設(shè)備

87.route | 顯示和操作IP路由表

88.ping [參數(shù)] [主機(jī)名或IP地址] | 測試與目標(biāo)主機(jī)的連通性

-q 只顯示最后的結(jié)果

89.netstat | 顯示與IP、TCP鸵膏、UDP和ICMP協(xié)議相關(guān)的統(tǒng)計(jì)數(shù)據(jù)

90.telnet [參數(shù)] [主機(jī)] | 用于遠(yuǎn)程登錄膊升,采用明文傳送報(bào)文,安全性不好

91.rcp [參數(shù)] [源文件] [目標(biāo)文件] | 遠(yuǎn)程文件拷貝

-r 遞歸復(fù)制
-p 保留源文件的屬性
usage: rcp –r remote_hostname:remote_dir local_dir

92.wget [參數(shù)] [URL地址] | 直接從網(wǎng)絡(luò)上下載文件

-o FILE 把記錄寫到FILE文件中 eg : wget -O a.txt URL
wget --limit-rate=300k URL 限速下載

93.awk

awk是行處理器: 相比較屏幕處理的優(yōu)點(diǎn)谭企,在處理龐大文件時(shí)不會出現(xiàn)內(nèi)存溢出或是處理緩慢的問題廓译,通常用來格式化文本信息
awk處理過程: 依次對每一行進(jìn)行處理,然后輸出
awk命令形式:
awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file
[-F|-f|-v] 大參數(shù)债查,-F指定分隔符非区,-f調(diào)用腳本,-v定義變量 var=value
' ' 引用代碼塊
BEGIN 初始化代碼塊盹廷,在對每一行進(jìn)行處理之前征绸,初始化代碼,主要是引用全局變量俄占,設(shè)置FS分隔符
// 匹配代碼塊管怠,可以是字符串或正則表達(dá)式
{} 命令代碼塊,包含一條或多條命令
缸榄; 多條命令使用分號分隔
END 結(jié)尾代碼塊渤弛,在對每一行進(jìn)行處理之后再執(zhí)行的代碼塊,主要是進(jìn)行最終計(jì)算或輸出結(jié)尾摘要信息
特殊要點(diǎn):
0 表示整個(gè)當(dāng)前行1 每行第一個(gè)字段
NF 字段數(shù)量變量
NR 每行的記錄號甚带,多文件記錄遞增
FNR 與NR類似她肯,不過多文件記錄不遞增,每個(gè)文件都從1開始
\t 制表符
\n 換行符
FS BEGIN時(shí)定義分隔符
RS 輸入的記錄分隔符欲低, 默認(rèn)為換行符(即文本是按一行一行輸入)
~ 匹配辕宏,與==相比不是精確比較
!~ 不匹配畜晰,不精確比較
== 等于砾莱,必須全部相等,精確比較
!= 不等于凄鼻,精確比較
&&  邏輯與
|| 邏輯或
'+' 匹配時(shí)表示1個(gè)或1個(gè)以上
/[0-9][0-9]+/ 兩個(gè)或兩個(gè)以上數(shù)字
/[0-9][0-9]*/ 一個(gè)或一個(gè)以上數(shù)字
FILENAME 文件名
OFS 輸出字段分隔符腊瑟, 默認(rèn)也是空格聚假,可以改為制表符等
ORS 輸出的記錄分隔符,默認(rèn)為換行符,即處理結(jié)果也是一行一行輸出到屏幕
-F'[:#/]' 定義三個(gè)分隔符
**print & 0** print 是awk打印指定內(nèi)容的主要命令 awk '{print}' /etc/passwd == awk '{print0}' /etc/passwd
awk '{print " "}' /etc/passwd //不輸出passwd的內(nèi)容闰非,而是輸出相同個(gè)數(shù)的空行膘格,進(jìn)一步解釋了awk是一行一行處理文本
awk '{print "a"}' /etc/passwd //輸出相同個(gè)數(shù)的a行,一行只有一個(gè)a字母
awk -F":" '{print 1}' /etc/passwd awk -F: '{print1; print 2}' /etc/passwd //將每一行的前二個(gè)字段财松,分行輸出瘪贱,進(jìn)一步理解一行一行處理文本 awk -F: '{print1,3,6}' OFS="\t" /etc/passwd //輸出字段1,3,6,以制表符作為分隔符
-f指定腳本文件
awk -f script.awk file
BEGIN{
FS=":"
}
{print 1} //效果與awk -F":" '{print1}'相同,只是分隔符使用FS在代碼自身中指定
awk 'BEGIN{X=0} /^/{ X+=1 } END{print "I find",X,"blank lines."}' test I find 4 blank lines. ls -l|awk 'BEGIN{sum=0} !/^d/{sum+=5} END{print "total size is",sum}' //計(jì)算文件大小
total size is 17487
-F指定分隔符
1 指指定分隔符后辆毡,第一個(gè)字段菜秦,3第三個(gè)字段, \t是制表符
一個(gè)或多個(gè)連續(xù)的空格或制表符看做一個(gè)定界符舶掖,即多個(gè)空格看做一個(gè)空格
awk -F":" '{print 1}' /etc/passwd awk -F":" '{print1 3}' /etc/passwd //1與3相連輸出球昨,不分隔 awk -F":" '{print1,3}' /etc/passwd //多了一個(gè)逗號,1與3使用空格分隔 awk -F":" '{print1 " " 3}' /etc/passwd //1與3之間手動(dòng)添加空格分隔 awk -F":" '{print "Username:"1 "\t\t Uid:" 3 }' /etc/passwd //自定義輸出 awk -F: '{print NF}' /etc/passwd //顯示每行有多少字段 awk -F: '{printNF}' /etc/passwd //將每行第NF個(gè)字段的值打印出來
awk -F: 'NF==4 {print }' /etc/passwd //顯示只有4個(gè)字段的行
awk -F: 'NF>2{print 0}' /etc/passwd //顯示每行字段數(shù)量大于2的行 awk '{print NR,0}' /etc/passwd //輸出每行的行號
awk -F: '{print NR,NF,NF,"\t",0}' /etc/passwd //依次打印行號眨攘,字段數(shù)主慰,最后字段值,制表符鲫售,每行內(nèi)容
awk -F: 'NR==5{print}' /etc/passwd //顯示第5行
awk -F: 'NR==5 || NR==6{print}' /etc/passwd //顯示第5行和第6行
route -n|awk 'NR!=1{print}' //不顯示第一行
//匹配代碼塊
//純字符匹配 !//純字符不匹配 ****~//字段值匹配 !~//字段值不匹配 ~/a1|a2/字段值匹配a1或a2 **
awk '/mysql/' /etc/passwd
awk '/mysql/{print }' /etc/passwd
awk '/mysql/{print 0}' /etc/passwd //三條指令結(jié)果一樣 awk '!/mysql/{print0}' /etc/passwd //輸出不匹配mysql的行
awk '/mysql|mail/{print}' /etc/passwd
awk '!/mysql|mail/{print}' /etc/passwd
awk -F: '/mail/,/mysql/{print}' /etc/passwd //區(qū)間匹配
awk '/[2][7][7]
/{print 0}' /etc/passwd //匹配包含27為數(shù)字開頭的行共螺,如27,277情竹,2777... awk -F: '1~/mail/{print 1}' /etc/passwd //1匹配指定內(nèi)容才顯示
awk -F: '{if(1~/mail/) print1}' /etc/passwd //與上面相同
awk -F: '1!~/mail/{print1}' /etc/passwd //不匹配
awk -F: '1!~/mail|mysql/{print1}' /etc/passwd
IF語句
必須用在{}中璃谨,且比較內(nèi)容用()擴(kuò)起來
awk -F: '{if(1~/mail/) print1}' /etc/passwd //簡寫
awk -F: '{if(1~/mail/) {print1}}' /etc/passwd //全寫
awk -F: '{if(1~/mail/) {print1} else {print 2}}' /etc/passwd //if...else... **條件表達(dá)式** **== != > >= ** awk -F":" '1=="mysql"{print 3}' /etc/passwd awk -F":" '{if(1=="mysql") print 3}' /etc/passwd //與上面相同 awk -F":" '1!="mysql"{print 3}' /etc/passwd //不等于 awk -F":" '3>1000{print 3}' /etc/passwd //大于 awk -F":" '3>=100{print 3}' /etc/passwd //大于等于 awk -F":" '3<1{print 3}' /etc/passwd //小于 awk -F":" '3<=1{print 3}' /etc/passwd //小于等于 **邏輯運(yùn)算符** **&& || ** awk -F: '1~/mail/ && 3>8 {print }' /etc/passwd //邏輯與,1匹配mail鲤妥,并且3>8 awk -F: '{if(1~/mail/ && 3>8) print }' /etc/passwd awk -F: '1~/mail/ || 3>1000 {print }' /etc/passwd //邏輯或 awk -F: '{if(1~/mail/ || 3>1000) print }' /etc/passwd **數(shù)值運(yùn)算** awk -F: '3 > 100' /etc/passwd
awk -F: '3 > 100 ||3 < 5' /etc/passwd
awk -F: '3+4 > 200' /etc/passwd
awk -F: '/mysql|mail/{print 3+10}' /etc/passwd //第三個(gè)字段加10打印 awk -F: '/mysql/{print3-4}' /etc/passwd //減法 awk -F: '/mysql/{print3
4}' /etc/passwd //求乘積 awk '/MemFree/{print2/1024}' /proc/meminfo //除法
awk '/MemFree/{print int(2/1024)}' /proc/meminfo //取整 **輸出分隔符OFS** awk '6 ~ /FIN/ || NR==1 {print NR,4,5,6}' OFS="\t" netstat.txt awk '6 ~ /WAIT/ || NR==1 {print NR,4,5,6}' OFS="\t" netstat.txt //輸出字段6匹配WAIT的行佳吞,其中輸出每行行號,字段4棉安,5,6底扳,并使用制表符分割字段 **輸出處理結(jié)果到文件** ①在命令代碼塊中直接輸出 route -n|awk 'NR!=1{print > "./fs"}' ②使用重定向進(jìn)行輸出 route -n|awk 'NR!=1{print}' > ./fs **格式化輸出** netstat -anp|awk '{printf "%-8s %-8s %-10s\n",1,2,3}'
printf表示格式輸出
%格式化輸出分隔符
-8長度為8個(gè)字符
s表示字符串類型
打印每行前三個(gè)字段,指定第一個(gè)字段輸出字符串類型(長度為8)贡耽,第二個(gè)字段輸出字符串類型(長度為8),
第三個(gè)字段輸出字符串類型(長度為10)
netstat -anp|awk '6=="LISTEN" || NR==1 {printf "%-10s %-10s %-10s \n",1,2,3}'
netstat -anp|awk '6=="LISTEN" || NR==1 {printf "%-3s %-10s %-10s %-10s \n",NR,1,2,3}'
IF語句
awk -F: '{if(3>100) print "large"; else print "small"}' /etc/passwd awk -F: 'BEGIN{A=0;B=0} {if(3>100) {A++; print "large"} else {B++; print "small"}} END{print A,"\t",B}' /etc/passwd //ID大于100,A加1衷模,否則B加1
awk -F: '{if(3<100) next; else print}' /etc/passwd //小于100跳過,否則顯示 awk -F: 'BEGIN{i=1} {if(i<NF) print NR,NF,i++ }' /etc/passwd awk -F: 'BEGIN{i=1} {if(i<NF) {print NR,NF} i++ }' /etc/passwd 另一種形式 awk -F: '{print (3>100 ? "yes":"no")}' /etc/passwd
awk -F: '{print (3>100 ?3":\tyes":3":\tno")}' /etc/passwd **while語句** awk -F: 'BEGIN{i=1} {while(i<NF) print NF,i,i++}' /etc/passwd
數(shù)組
netstat -anp|awk 'NR!=1{a[6]++} END{for (i in a) print i,"\t",a[i]}' netstat -anp|awk 'NR!=1{a[6]++} END{for (i in a) printf "%-20s %-10s %-5s \n", i,"\t",a[i]}'

94.sed 對數(shù)據(jù)行進(jìn)行替換蒲赂、刪除阱冶、新增、選取等操作

a 新增滥嘴,在新的下一行出現(xiàn)
c 取代木蹬,取代 n1,n2 之間的行 eg: sed '1,2c Hi' ab
d 刪除
i 插入,在新的上一行出現(xiàn)
sed [選項(xiàng)] [動(dòng)作]
選項(xiàng)與參數(shù):
-n :使用安靜(silent)模式若皱。在一般 sed 的用法中镊叁,所有來自 STDIN 的數(shù)據(jù)一般都會被列出到終端上尘颓。但如果加上 -n 參數(shù)后,則只有經(jīng)過sed 特殊處理的那一行(或者動(dòng)作)才會被列出來晦譬。
-e :直接在命令列模式上進(jìn)行 sed 的動(dòng)作編輯疤苹;
-f :直接將 sed 的動(dòng)作寫在一個(gè)文件內(nèi), -f filename 則可以運(yùn)行 filename 內(nèi)的 sed 動(dòng)作敛腌;
-r :sed 的動(dòng)作支持的是延伸型正規(guī)表示法的語法卧土。(默認(rèn)是基礎(chǔ)正規(guī)表示法語法)
-i :直接修改讀取的文件內(nèi)容,而不是輸出到終端像樊。
function:
a :新增行夸溶, a 的后面可以是字串,而這些字串會在新的一行出現(xiàn)(目前的下一行)
c :取代行凶硅, c 的后面可以接字串缝裁,這些字串可以取代 n1,n2 之間的行
d :刪除行,因?yàn)槭莿h除足绅,所以 d 后面通常不接任何參數(shù)捷绑,直接刪除地址表示的行;
i :插入行氢妈, i 的后面可以接字串粹污,而這些字串會在新的一行出現(xiàn)(目前的上一行);
p :列印首量,亦即將某個(gè)選擇的數(shù)據(jù)印出壮吩。通常 p 會與參數(shù) sed -n 一起運(yùn)行
s :替換,可以直接進(jìn)行替換的工作,通常這個(gè) s 的動(dòng)作可以搭配正規(guī)表示法加缘,例如 1,20s/old/new/g 一般是替換符合條件的字符串而不是整行
一般function的前面會有一個(gè)地址的限制鸭叙,例如 [地址]function,表示我們的動(dòng)作要操作的行拣宏。下面我們通過具體的例子直觀的看看sed的使用方法沈贝。
刪除行
//test.txt 內(nèi)容如下
11 aa
22 bb
33 cc
23 dd
55 2e
sed '1,2d' test.xx
輸出:
33 cc
23 dd
55 2e
其中1,2d中的d表示刪除,而d前面的表示刪除的行的地址勋乾,而1,2表示一個(gè)地址范圍宋下,也就是刪除第1行和第2行。地址范圍的表示一般是 m,n 表示對m和n行之間的所有行進(jìn)行操作辑莫,也包含第m行和第n行学歧。sed的地址尋址中可以使用表示最后一行,例如 m, 表示對m行以及其后面的所有行進(jìn)行操作各吨,包括最后一樣枝笨。當(dāng)然我們還可以對某一行進(jìn)行操作,例如2d表示僅僅刪除第2行。除了使用數(shù)字范圍 m,n 表示多行區(qū)間伺帘,以及m表示單行以外昭躺,我們還可以使用正則表達(dá)式選出符合條件的行忌锯,并對這些行進(jìn)行操作伪嫁,同樣的是上面的文件:
sed '/2/d' test.txt
輸出:
11 aa
33 cc
上面的命令中 /2/ 是一個(gè)正則表達(dá)式,在sed中正則表達(dá)式是寫在 /.../ 兩個(gè)斜杠中間的偶垮,這個(gè)正則的意思是尋找所有包含2的行张咳,執(zhí)行相應(yīng)的操作,也就是刪除所有包含2的行似舵,如果我們只想刪除以2開頭的行呢脚猾,只需要修改一下正則表達(dá)式就可以了:
sed '/^2/d' test.txt
輸出:
11 aa
33 cc
55 2e
新增行
sed '1a hello world' test.txt
輸出:
11 aa
hello world
22 bb
33 cc
23 dd
55 2e
其中a命令表示在指定行的后面附加一行,1a則是在第一行的后面添加一行砚哗,添加的內(nèi)容就是a后面的內(nèi)容龙助,如果a的前面沒有地址限定則在所有行的后面都會添加指定的字符串
sed '1i hello world' test.txt
輸出:
hello world
11 aa
22 bb
33 cc
23 dd
55 2e
命令i表示在指定的行的前面插入一行,插入的內(nèi)容為其后面的字符串
替換行
sed '1c hello world' test.txt
輸出:
hello world
22 bb
33 cc
23 dd
55 2e
命令c會替換指定的行的所有內(nèi)容蛛芥,替換成其后面的字符串提鸟,所有的新增,刪除仅淑,替換行称勋,這些命令前面的地址修飾都可以指定地址空間,也都可以使用正則表達(dá)式涯竟,命令會應(yīng)用在選出的符合地址條件的所有行上面赡鲜,例如:
sed '/^2/c hello world' test.txt
輸出:
11 aa
hello world
33 cc
hello world
55 2e
替換以2開頭的行,其內(nèi)容是c命令后面的字符串
替換部分字符串而不是整行
sed中除了上面的命令是針對整行進(jìn)行操作的之外庐船,還提供一個(gè)替換命令银酬,該命令對某一行中的部分字符串進(jìn)行操作,下面舉一個(gè)簡單的例子筐钟,還是同樣的文本內(nèi)容捡硅,執(zhí)行下面的命令:
sed 's/aa/AA/' test.txt
輸出:
11 AA
22 bb
33 cc
23 dd
55 2e
我們這里說的就是s命令,執(zhí)行的結(jié)果是我們文件中的 aa 被替換成 AA 盗棵,我們看一下s命令后面接的是3個(gè)斜杠分隔的兩串字符串壮韭,其含義是 s/待替換的字符串/新字符串/ 也就是說使用后面的 AA 替換文件中出現(xiàn)的前面的 aa 。實(shí)際上這里的替換僅僅替換每一行遇到的第一個(gè)aa纹因,我們修改一下文件的內(nèi)容:
//test.txt
11 aa
22 bb
33 cc
23 dd
55 2e
66 aaff ccaa
zz ggaa
sed 's/aa/AA/' test.txt
輸出:
11 AA
22 bb
33 cc
23 dd
55 2e
66 AAff ccaa
zz ggAA
可以看到第6行的ccaa中的aa是沒有被替換的喷屋,也就是說此時(shí)僅僅替換了每一行搜索到的第一個(gè)aa字符串進(jìn)行操作,那么如果要對一行里面的所有的符合條件的字符串都做替換操作呢瞭恰,我們可以使用參數(shù)g屯曹,例如修改命令如下:
sed 's/aa/AA/g' test.txt
輸出:
11 AA
22 bb
33 cc
23 dd
55 2e
66 AAff ccAA
zz ggAA
在最后一個(gè)斜杠后面加上g選項(xiàng)之后,表示進(jìn)行全局替換,也就是說一行中所有符合條件的舊字符串都會被替換成新字符串恶耽,而不僅僅是第一個(gè)密任。與其他針對行的操作一樣,s命令也可以進(jìn)行地址選擇偷俭,其地址使用方法與我們之前的一樣浪讳,也就是在s的前面加上地址空間限定,例如:
sed '1s/aa/AA/g' test.txt
輸出:
11 AA
22 bb
33 cc
23 dd
55 2e
66 aaff ccaa
zz ggaa
可以看到僅僅對第一行進(jìn)行了替換操作涌萤,其他的地址限定方法同樣也是可以使用的淹遵,我們可以使用m,n的限定,例如:
sed '5,s/aa/AA/g' test.txt 輸出: 11 aa 22 bb 33 cc 23 dd 55 2e 66 AAff ccAA zz ggAA 表示對第5行直到文件末尾的所有行進(jìn)行搜索替換操作负溪,同樣s命令的地址限定也支持使用正則表達(dá)式限定符合條件的行透揣,然后在這些行中進(jìn)行字符串的搜索替換操作,例如: sed '/^[0-9]/s/aa/AA/g' test.txt 輸出: 11 AA 22 bb 33 cc 23 dd 55 2e 66 AAff ccAA zz ggaa 我們在s命令前面添加了 /^[0-9]/ 這個(gè)修飾川抡,該正則表達(dá)式表示對所有以數(shù)字開頭的行辐真,執(zhí)行s操作 搜索并輸出行內(nèi)容 sed還提供一個(gè)p命令用于搜索符合條件的行,并輸出該行的內(nèi)容崖堤,而不做其他的任何修改侍咱,例如: //test.txt 11 aa 22 bb 33 cc 23 dd sed '2p' test.txt 輸出: 11 aa 22 bb 22 bb 33 cc 23 dd 可以看到第二行被輸出來了,但是sed好像將文件的所有內(nèi)容輸出了一遍倘感,而第2行則多輸出了一次放坏,實(shí)際上sed默認(rèn)情況下是會將所有標(biāo)準(zhǔn)輸入的數(shù)據(jù)又重新輸出到標(biāo)準(zhǔn)輸出的,我們可以加上 -n 選項(xiàng)讓sed僅僅是輸出經(jīng)過處理之后的那些行老玛,而不是輸出之前從標(biāo)準(zhǔn)輸入中獲取到的所有行內(nèi)容淤年,例如: sed -n '2p' test.txt 輸出: 22 bb 這樣僅僅會輸出p命令的處理結(jié)果了,-n 選項(xiàng)一般是與p命令聯(lián)合使用的蜡豹,其他的增加麸粮,刪除,替換行的命令是不需要 -n 選項(xiàng)的 將修改應(yīng)用到文件中 我們之前做的所有實(shí)驗(yàn)镜廉,實(shí)際上都沒有修改test.txt文件的內(nèi)容弄诲,也就是說我們看到的修改結(jié)果僅僅輸出到控制臺上,而文件test.txt的內(nèi)容是沒有修改的娇唯,我們可以使用 -i 選項(xiàng)告訴sed直接修改文件的內(nèi)容齐遵,而不是將修改結(jié)果輸出到終端上,例如: sed -i '2d' test.txt 命令運(yùn)行之后塔插,我們發(fā)現(xiàn)test.txt的第2行沒有了 sed正則中的元字符 我們知道sed中的命令前面可以使用地址范圍進(jìn)行限制梗摇,表示對文件的某些符合條件的行執(zhí)行相應(yīng)的操作,其中我們可以使用正則表達(dá)式選出要操作的行想许,而sed中正則的語法可能與我們其他命令的正則語法有一些不同伶授,這里我們有必要列出sed中常用的正則元字符: 表示行尾
^ 表示行首
[a-z0-9]表示字符范圍
[^]表示除了字符集中的字符以外的字符
sed的正則中 () 和 {m,n} 需要轉(zhuǎn)義

95.paste 合并文件断序,需確保合并的兩文件行數(shù)相同

-d 指定不同于空格或tab鍵的域分隔符
-s 按行合并,單獨(dú)一個(gè)文件為一行

96.su [參數(shù)] user | 切換登陸

-l 切換時(shí)連同環(huán)境變量糜烹、工作目錄一起改變
-c command 執(zhí)行command變回原來的使用者

97.sudo | 以特定用戶的權(quán)限執(zhí)行特定命令

-l 列出當(dāng)前用戶可執(zhí)行的命令
-u username#uid 以指定用戶執(zhí)行命令

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末违诗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子疮蹦,更是在濱河造成了極大的恐慌诸迟,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挚币,死亡現(xiàn)場離奇詭異亮蒋,居然都是意外死亡扣典,警方通過查閱死者的電腦和手機(jī)妆毕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贮尖,“玉大人钥组,你說我怎么就攤上這事谍失。” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵路召,是天一觀的道長。 經(jīng)常有香客問我叽粹,道長秘通,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任痢畜,我火速辦了婚禮垛膝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘丁稀。我一直安慰自己吼拥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布线衫。 她就那樣靜靜地躺著凿可,像睡著了一般。 火紅的嫁衣襯著肌膚如雪授账。 梳的紋絲不亂的頭發(fā)上枯跑,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機(jī)與錄音白热,去河邊找鬼敛助。 笑死,一個(gè)胖子當(dāng)著我的面吹牛棘捣,可吹牛的內(nèi)容都是我干的辜腺。 我是一名探鬼主播休建,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼评疗!你這毒婦竟也來了测砂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤百匆,失蹤者是張志新(化名)和其女友劉穎砌些,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體加匈,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡存璃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了雕拼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纵东。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖啥寇,靈堂內(nèi)的尸體忽然破棺而出偎球,到底是詐尸還是另有隱情,我是刑警寧澤辑甜,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布衰絮,位于F島的核電站,受9級特大地震影響磷醋,放射性物質(zhì)發(fā)生泄漏猫牡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一邓线、第九天 我趴在偏房一處隱蔽的房頂上張望淌友。 院中可真熱鬧,春花似錦褂痰、人聲如沸亩进。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽归薛。三九已至,卻和暖如春匪蝙,著一層夾襖步出監(jiān)牢的瞬間主籍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工逛球, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留千元,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓颤绕,卻偏偏與公主長得像幸海,于是被迫代替她去往敵國和親祟身。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 一. AWK 說明 awk的處理文本和數(shù)據(jù)的方式:它逐行掃描文件物独,從第一行到最后一行袜硫,尋找匹配的特定模式的行,并...
    西華子閱讀 935評論 0 4
  • 一挡篓、Python簡介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡介】: Python 是一個(gè)...
    _小老虎_閱讀 5,750評論 0 10
  • awk使用說明 awk是行處理器: 相比較屏幕處理的優(yōu)點(diǎn)婉陷,在處理龐大文件時(shí)不會出現(xiàn)內(nèi)存溢出或是處理緩慢的問題,通常...
    好好學(xué)習(xí)的蝸牛閱讀 500評論 0 2
  • awk是行處理器: 相比較屏幕處理的優(yōu)點(diǎn),在處理龐大文件時(shí)不會出現(xiàn)內(nèi)存溢出或是處理緩慢的問題戏羽,通常用來格式化文本信...
    berryshell閱讀 244評論 0 0
  • linux awk命令詳解 來源:ggjucheng 鏈接:http://www.cnblogs.com/ggju...
    meng_philip123閱讀 862評論 0 1