1.Linux基本指令(二) 1.1man指令 語法:man[選項(xiàng)]命令 功能:man指令可以查閱Linux的聯(lián)機(jī)手冊(cè) root下安裝man指令: yumintall-yman-pages 通過sudo來為普通用戶安裝(普通用戶使用sudo): manman man可以查閱指令或庫函數(shù)等內(nèi)容…我們先查閱一下man指令本身如何使用: sudoyumintall-yman-pages 點(diǎn)擊加載圖片 查找手冊(cè)介紹: 序號(hào)英文中文 1☆Executableprogramsorshellcommands普通的命令 2☆Systemcalls(functionsprovidedbythekernel)系統(tǒng)調(diào)用 3☆Librarycalls(functionswithinprogramlibraries)(C語言)庫函數(shù) 4Specialfiles(usuallyfoundin/dev)特殊文件 5Fileformatsandconventions,e.g./etc/passwd文件格式 6Games游戲 7☆Miscellaneous(includingmacropackagesandconventions),e.g.man(7),groff(7)附件和變量 8Systemadministrationcommands(usuallyonlyforroot)系統(tǒng)管理命令(通常為root使用) 9Kernelroutines[Nonstandard]內(nèi)核例程(非標(biāo)準(zhǔn)) 注:☆為常用手冊(cè),。 man默認(rèn)從1號(hào)手冊(cè)開始查找man后的內(nèi)容,,按照手冊(cè)順序依次向后查找,找到就顯示,,找不到就是找不到 按q退出查閱 查找printf指令: [root@iZ0jlj1bbn1zk2zv671vzhZ~]#manprintf 點(diǎn)擊加載圖片 (注:Linux下也有printf指令,,在1號(hào)手冊(cè)中) 在Linux下使用printf指令: 點(diǎn)擊加載圖片 使用man在3號(hào)手冊(cè)(C語言庫函數(shù))查找printf: [root@iZ0jlj1bbn1zk2zv671vzhZ~]#man3printf 1.2cp指令 語法:cp[選項(xiàng)]源文件或目錄目標(biāo)文件或目錄 功能:cp——copy,顧名思義就是拷貝,,復(fù)制文件或目錄 常用選項(xiàng): -f或--force強(qiáng)行復(fù)制文件或目錄,,不論目的文件或目錄是否已經(jīng)存在 -i或--interactive覆蓋文件之前先詢問用戶 -r遞歸處理,,將指定目錄下的文件與子目錄一并處理。若源文件或目錄的形態(tài),,不屬于目錄或符號(hào)鏈接,,則一律視為普通文件處理 -R或--recursive遞歸處理,將指定目錄下的文件及子目錄一并處理 拓展: cp指令用于復(fù)制文件或目錄,,如同時(shí)指定兩個(gè)以上的文件或目錄,,且最后的目的地是一個(gè)已經(jīng)存在的目錄,則它會(huì)把前面指定的所有文件或目錄復(fù)制到此目錄中,。若同時(shí)指定多個(gè)文件或目錄,,而最后的目的地并非一個(gè)已存在的目錄,則會(huì)出現(xiàn)錯(cuò)誤信息,。 注意:同一個(gè)目錄下,,不能存在同名文件 cp為拷貝的操作,cp指令默認(rèn)拷貝的文件 點(diǎn)擊加載圖片 cp文件名路徑:拷貝文件 將dir1中文件拷貝到上級(jí)目錄code中: 點(diǎn)擊加載圖片 cp-r目錄名路徑:r為遞歸,,遞歸拷貝文件,,即拷貝目錄 將code目錄拷貝到code_backup目錄: 點(diǎn)擊加載圖片 cp-f文件名路徑:強(qiáng)制拷貝。平常狀況下,,路徑下有同名目錄會(huì)給出覆蓋提示,;-f為暴力,為不給是否覆蓋提示,,直接覆蓋 點(diǎn)擊加載圖片 但是實(shí)際上這里的不給提示是有歧義的,,我們可以測(cè)試一下: 點(diǎn)擊加載圖片 那么這是為什么?其實(shí)是cp本身的問題,,用alias查看了它的別名: 點(diǎn)擊加載圖片 這里的cp-i我們上面見過,,它的意思是覆蓋文件之前先詢問用戶,所以cp本質(zhì)是cp-i,,無論怎樣都會(huì)先提問用戶,,比如我們的cp-f其實(shí)就被轉(zhuǎn)換為了cp-i-f,這里我們可以通過取消別名的方式,,來解決這個(gè)問題: 取消別名后: 點(diǎn)擊加載圖片 恢復(fù)別名: 點(diǎn)擊加載圖片 1.3mv指令 mv——move,,可以剪切文件/目錄或者重命名文件/目錄。 語法:mv[選項(xiàng)]源文件或目錄目標(biāo)文件或目錄 功能: 當(dāng)?shù)诙€(gè)參數(shù)類型是文件時(shí),,mv命令完成文件重命名,,此時(shí),源文件只能有一個(gè)(也可以是源目錄名),,它將所給的源文件或目錄重命名為給定的目標(biāo)文件名,。 當(dāng)?shù)诙€(gè)參數(shù)是已存在的目錄名稱時(shí),源文件或目錄參數(shù)可以有多個(gè),,mv命令將各參數(shù)指定的源文件均移至目標(biāo)目錄中,。 常用選項(xiàng): -f:f——force強(qiáng)制的意思,,如果目標(biāo)文件已經(jīng)存在,不會(huì)詢問直接覆蓋,。 -i:若目標(biāo)文件已經(jīng)存在時(shí),,就會(huì)詢問是否覆蓋! mv可以重命名文件或目錄 mv文件名新的文件名:文件重命名,。如果當(dāng)前面目錄并沒有這個(gè)名字,,且不是一個(gè)存在的目錄,shell會(huì)判定它是一個(gè)新的文件名 把test.txt重命名為test1.txt: 點(diǎn)擊加載圖片 mv文件名路徑:剪切文件到指定路徑 剪切code中的test1.txt到上級(jí)目錄root中: 點(diǎn)擊加載圖片 mv目錄名路徑:剪切目錄到指定路徑 剪切mydir中的dir1目錄到上級(jí)目錄中: 點(diǎn)擊加載圖片 mv文件名路徑新文件名:剪切文件到指定路徑并重命名 將lesson3下的newname.txt剪切到testcp1并重命名為newnew.txt: 點(diǎn)擊加載圖片 總結(jié): mv文件名不存在文件名:重命名mva.txtb.txt->mva.txt./b.txt 可以理解為在當(dāng)前目錄下剪切并重命名 mv文件名路徑:剪切mvc.txt…/從當(dāng)前路徑剪切到上級(jí)路徑 mv…/dir1.從上級(jí)路徑剪切到當(dāng)前路徑 mv文件名目錄+不存在文件名:剪切并重命名文件 目錄同理 1.4echo指令(含輸出重定向) echo“字符串”:可以把字符串打印到屏幕上 點(diǎn)擊加載圖片 echo在打印的時(shí)候默認(rèn)是向顯示器打印的,。 echo“字符串”>文件名:將字符串寫入文件中,,若文件不存在會(huì)創(chuàng)建文件,為輸出重定向 將“helloLinux”,,輸出重定向到mytest,txt中: 點(diǎn)擊加載圖片 測(cè)試多次輸出重定向文件: 點(diǎn)擊加載圖片 每次重定向后,文件中的內(nèi)容為最后一次重定向的結(jié)果,。覆蓋式寫入(準(zhǔn)備寫入之前,,先清空文件) 說了這么久,那么輸出重定向到底是什么意思,? 這里的>為輸出重定向,,echo默認(rèn)是打印到屏幕上的。 如果>對(duì)應(yīng)的目標(biāo)文件不存在,,則會(huì)自動(dòng)創(chuàng)建,,并把本來應(yīng)該顯示到顯示器上面的文本,寫入到文件中,,這一過程,,就叫輸出重定向。 拓展: 顯示數(shù)據(jù)到顯示器上,,就是向顯示器打印,,可以理解為向顯示器寫入,可以把顯示器看做一種文件,。我們的C程序獲取數(shù)據(jù),,比如scanf、cin都是從鍵盤讀取到的,,所以鍵盤也可以看做一種文件,。 內(nèi)存從鍵盤獲取數(shù)據(jù)的過程,也就是read,,對(duì)應(yīng)著input(輸入)到程序中,;內(nèi)存顯示數(shù)據(jù)到顯示器的過程,也就是write,,對(duì)應(yīng)著output(輸出)到顯示器上,。這一過程就是IO,。 之前我們學(xué)習(xí)C語言文件操作時(shí),讀寫方法是對(duì)于文件的,。所以我們可以抽象拓展出一個(gè)概念:Linux下一切皆文件 所以輸出重定向就是把原本寫入到顯示器文件的內(nèi)容寫入到文件中 echo“字符串”>>文件名:將字符串內(nèi)容追加到文件中,,為追加重定向 例如追加字符串到test.txt中: 點(diǎn)擊加載圖片 追加自帶換行,不斷向目標(biāo)文件中新增內(nèi)容 1.5cat指令(含輸入重定向) 語法:cat[選項(xiàng)][文件] 功能:查看目標(biāo)文件的內(nèi)容 常用選項(xiàng): -b對(duì)非空輸出行編號(hào) -n對(duì)輸出的所有行編號(hào) -s不輸出多行空行 cat打印文件的內(nèi)容到屏幕上,,其實(shí)就是查看文件內(nèi)容,。 我們nano一個(gè)文件,使用cat查看內(nèi)容: 點(diǎn)擊加載圖片 cat-s文件名:省略多余空行查看文件內(nèi)容,,就是指令之間最多輸出一個(gè)空行 點(diǎn)擊加載圖片 cat-sn文件名:-n是對(duì)輸出行編號(hào),,-sn組合使用就是省略空行輸出編號(hào)并打印內(nèi)容,可以看到省略了空行,。 點(diǎn)擊加載圖片 cat會(huì)把文件內(nèi)容讀取到程序里,,然后打印出來。 cat<文件名:輸入重定向,,將文件中內(nèi)容讀取到cat中,,并打印 點(diǎn)擊加載圖片 如果cat后不跟任何內(nèi)容,那么就會(huì)默認(rèn)從鍵盤中讀數(shù)據(jù): 點(diǎn)擊加載圖片 所以,,輸入重定向就是改變?cè)葟逆I盤上讀取數(shù)據(jù)的方式,,改為從其他文件中讀取數(shù)據(jù) 其實(shí)這里使用cattest.txt和cat 1.6wc指令 語法:wc[-lwm] 功能:統(tǒng)計(jì)文件的行數(shù)、單詞數(shù),、字符數(shù) 常用選項(xiàng): -l:僅列出行 -w:僅列出多少字(英文單字) -m:多少字符 wc-l文件名:顯示文本文件有多少行和文件名 顯示文件有多少行,,并文件名 點(diǎn)擊加載圖片 wc-l<文件名:輸入重定向,顯示文本文件行數(shù)不顯示文件名 點(diǎn)擊加載圖片 1.7more指令 語法:more[選項(xiàng)][文件] 功能:more命令,,功能類似cat 常用選項(xiàng): -n對(duì)輸出的所有行編號(hào) q退出more 測(cè)試more指令前,,我們先寫一個(gè)命令行腳本: cnt=0;while[$cnt-le10000];doecho'hello$cnt';letcnt++;done>test.txt 意思是往test.txt中寫入hello1~hello10000。 使用cat查看一下: 點(diǎn)擊加載圖片 cat只看到了結(jié)尾部分,,說明cat適用于觀看短文本,。 長文本可以使用more指令觀看: 點(diǎn)擊加載圖片 more文件名:從頭部查看文本內(nèi)容,按回車逐行翻閱,。 1.8less指令 語法:less[參數(shù)]文件 功能: less與more類似,,但使用less可以隨意瀏覽文件,而more僅能向前移動(dòng),卻不能向后移動(dòng),,而且less在查看之前不會(huì)加載整個(gè)文件,。 常用選項(xiàng): -i忽略搜索時(shí)的大小寫 -N顯示每行的行號(hào) /字符串:向下搜索“字符串”的功能 ?字符串:向上搜索“字符串”的功能 n:重復(fù)前一個(gè)搜索(與/或?有關(guān)) N:反向重復(fù)前一個(gè)搜索(與/或?有關(guān)) q:quit退出 補(bǔ)充: less工具是對(duì)文件或其它輸出進(jìn)行分頁顯示的工具,應(yīng)該說是linux查看文件內(nèi)容的工具,,功能強(qiáng)大,。 less的用法比起more更加的有彈性。在more的時(shí)候,,我們并沒有辦法向前面翻,,只能往后面看。 使用less,,就可以使用[pageup][pagedown]等按鍵的功能來往前往后翻看文件,,更容易用來查看一個(gè)文件的內(nèi)容。 less擁有更多的搜索功能,,不止可以向下搜,,也可以向上搜。 less文件名:查看文件內(nèi)容支持上下翻閱 ↑向上翻閱,,↓向下翻閱,,q退出 less支持查閱功能,方法為/+查閱內(nèi)容,,在一次查閱后,,無法查閱到上次查閱內(nèi)容前面的內(nèi)容 點(diǎn)擊加載圖片 先查閱帶9的內(nèi)容,,然后查閱帶1的內(nèi)容,。上次查閱結(jié)果為帶9的內(nèi)容,9前面的內(nèi)容無法被查閱,。查閱帶1的內(nèi)容是從10開始查閱的,。 點(diǎn)擊加載圖片 less適合用于大文本:工程、日志 1.9head和tail指令(含管道用法) head 語法:head[參數(shù)]…[文件]… 功能: head用來顯示檔案的開頭至標(biāo)準(zhǔn)輸出中,,默認(rèn)head命令打印其相應(yīng)文件的開頭10行,。 選項(xiàng): -n<行數(shù)>顯示的行數(shù) head-n5文件名:顯示前五行,寫成head-5 點(diǎn)擊加載圖片 tail 語法:tail[必要參數(shù)][選擇參數(shù)][文件] 功能:用于顯示指定文件末尾內(nèi)容,,不指定文件時(shí),,作為輸入信息進(jìn)行處理。常用查看日志文件,。 選項(xiàng): -f循環(huán)讀取 -n<行數(shù)>顯示行數(shù) tail默認(rèn)打印尾部十行內(nèi)容,。 tail-n5文件名:顯示文件尾部五行內(nèi)容 點(diǎn)擊加載圖片 學(xué)習(xí)了head和tail,我們能否獲取mylog.txt中間部分的第500-520行,? 法1:借助中間文件+重定向 step1:head-1020test.txt>tmp.txt——將前1020內(nèi)容重定向到tmp.txt中 點(diǎn)擊加載圖片 step2:tail-20tmp.txt——tail截取tmp.txt的后20行 點(diǎn)擊加載圖片 法2:管道 首先,,介紹一下管道。我們生活中,管道是用來傳輸資源的,,對(duì)于Linux中的管道也是,。 |就是管道的標(biāo)志。計(jì)算機(jī)中最重要的資源是數(shù)據(jù),,|就會(huì)被shell解釋為鏈接兩條指令用來傳輸數(shù)據(jù)的指令,。我們可以把管道也當(dāng)做一種文件。 先看兩個(gè)管道的例子: 我們?cè)窘y(tǒng)計(jì)行需要用wc-ltest.txt,,并且會(huì)打印文件名: 點(diǎn)擊加載圖片 但是學(xué)習(xí)了管道后,,我們可以使用cattest.txt|wc-l,把cat的數(shù)據(jù)寫到管道里,,之后用wc-l到管道中讀取,,這樣也不顯示文件名。 點(diǎn)擊加載圖片 cattest.txt將內(nèi)容放到管道中,,head-1020截取文件中前1020行,,再把這些放入管道中,tail-20截取這些的后20行 點(diǎn)擊加載圖片 管道意義:集聯(lián)多條指令,,做數(shù)據(jù)的不斷加工,,支持流水線工作。 2.總結(jié): 今天我們主要學(xué)習(xí)了9個(gè)基本指令,,還了解了輸入重定向,、輸入重定向和管道用法的用法,難度相比前一篇指令博客高一些,。接下來,,我們將繼續(xù)學(xué)習(xí)Linux的的相關(guān)知識(shí)。希望我的文章和講解能對(duì)大家的學(xué)習(xí)提供一些幫助,。 當(dāng)然,,本文仍有許多不足之處,歡迎各位小伙伴們隨時(shí)私信交流,、批評(píng)指正,!我們下期見~ 點(diǎn)擊加載圖片 |
|