- 上節(jié)復(fù)習(xí)
(1)我們上次學(xué)習(xí)了與文件和文件夾刪除相關(guān)的指令,rm -rf 加上文件或文件夾的名字后,通常不會(huì)顯示錯(cuò)誤信息,直接刪除;
我們之前學(xué)習(xí)了 rmdir 指令,用于刪除空文件夾,但發(fā)現(xiàn)使用 rm 指令更加方便,無論是文件夾還是文件,有內(nèi)容或無內(nèi)容,rm 都可以刪除;
需要補(bǔ)充的是 運(yùn)算符,這個(gè)運(yùn)算符能幫助我們找到相關(guān)文件。例如,使用 ls .c 會(huì)顯示所有后綴為 .c 的文件, 表示可以是任何內(nèi)容;使用 ls test. 會(huì)顯示所有名字為 test 的文件,不同文件類型。我們?cè)趧h除時(shí),輸入 rm * -rf 會(huì)刪除當(dāng)前目錄下所有文件,因?yàn)闆]有指定具體文件;
- man 指令
(1)這個(gè)指令相當(dāng)于一個(gè)字典,因?yàn)?linux 有很多指令,我們無法完全記住,這時(shí)可以使用 man 指令幫助我們理解,使用 man + 指令名,會(huì)出現(xiàn)英文版的幫助文檔,供我們學(xué)習(xí)了解,特別是對(duì)于不熟悉的指令;
(2)每個(gè)指令都對(duì)應(yīng)一個(gè)操作手冊(cè),例如 1 號(hào)手冊(cè),2 號(hào)手冊(cè),這些是指令的分類,用于顯示指令的不同用途。當(dāng)我們不指定手冊(cè)號(hào)時(shí),系統(tǒng)會(huì)按順序給出,但指定后只顯示該部分。通常我們不指定,后期熟悉后可能會(huì)指定;
- echo 指令
(1)這個(gè)指令后續(xù)會(huì)用到,操作很簡(jiǎn)單,就是在指令后面的語句會(huì)顯示在屏幕上;
(2)通過上面的實(shí)例可以看出,這個(gè)指令會(huì)把內(nèi)容顯示在屏幕上,不僅如此,還可以將內(nèi)容寫入文件中,但不會(huì)顯示。效果如下:
我們使用 echo 指令加上寫入的內(nèi)容,再加上向右的箭頭和文件名,就可以將內(nèi)容寫入文件中,但如果將文件夾作為寫入對(duì)象,系統(tǒng)會(huì)提示這是一個(gè)文件夾(可能無法寫入);
(3)使用上述語法寫入內(nèi)容后,不會(huì)顯示,我們可以使用 cat 指令查看文件內(nèi)容,以檢查內(nèi)容是否真正寫入文件;
具體用法是在 cat 指令后添加文件名,這樣就可以查看文件內(nèi)容,檢查內(nèi)容是否真正被寫入文件中。這種現(xiàn)象稱為輸出重定向,即內(nèi)容應(yīng)該顯示在顯示器上,但沒有顯示,而是直接寫入文件中;
- cp 指令
(1)這個(gè)指令用于拷貝,可以將一個(gè)文件的內(nèi)容拷貝到另一個(gè)文件中,我們可以使用前面介紹的 cat 指令查看是否成功拷貝到新文件中;
不需要提前創(chuàng)建文件,拷貝后文件會(huì)自動(dòng)創(chuàng)建,拷貝完成后可以查看文件內(nèi)容和當(dāng)前目錄結(jié)構(gòu),發(fā)現(xiàn)新文件已被創(chuàng)建;
(2)默認(rèn)拷貝到同一級(jí)目錄下,也可以拷貝到不同級(jí)目錄中,記得之前使用 cd .. 指令可以跳轉(zhuǎn)到上一級(jí)目錄,同理,這里只需稍作修改即可拷貝到上一級(jí)目錄,系統(tǒng)在拷貝時(shí)也會(huì)自動(dòng)生成文件;
同一級(jí)目錄下文件名不允許重復(fù),但在不同級(jí)目錄下文件內(nèi)容可以重復(fù),使用上述方式可以在不同級(jí)目錄下創(chuàng)建相同文件名的文件,也可以使用 ls ../ 查看上一級(jí)目錄文件信息,通常 ls 只顯示當(dāng)前路徑下的文件信息,添加 ../ 后可以查看上一級(jí)目錄文件信息,發(fā)現(xiàn)文件已被創(chuàng)建,使用 cat ../test.txt 查看文件內(nèi)容,確認(rèn)拷貝成功;
(3)之前介紹的 -p 選項(xiàng)可以創(chuàng)建連續(xù)路徑,如果要拷貝一連串路徑文件到新文件中,僅使用 cp 指令不行,需要在原基礎(chǔ)上添加 -r 選項(xiàng),表示要拷貝的是遞歸形式的文件,使用“cp -r 源頭文件 目標(biāo)文件”即可實(shí)現(xiàn)拷貝;
- mv 指令
(1)學(xué)習(xí) Linux 時(shí),應(yīng)將學(xué)習(xí)內(nèi)容與 windows 內(nèi)容一一對(duì)應(yīng),有助于理解。例如,要實(shí)現(xiàn)文件重命名,即修改文件名,Linux 也有指令可以修改文件名:
我們將原文件名 test2.txt 修改為 test3.txt,使用的是 mv 指令,修改后發(fā)現(xiàn)效果確實(shí)達(dá)到了;
(2)mv 指令功能不止于此,還有剪切功能,即將文件剪切到上一級(jí)目錄中,類似于拷貝的區(qū)別在于,拷貝后新舊文件都存在,而剪切后原文件不存在,但新文件被創(chuàng)建。示例如下:
test.txt 是當(dāng)前目錄下的文件,我們想剪切到上一級(jí)目錄中,兩個(gè)點(diǎn)表示上一級(jí)目錄,一個(gè)點(diǎn)表示當(dāng)前目錄,使用 ls .. 查看上一級(jí)目錄文件,發(fā)現(xiàn)已被剪切進(jìn)去(當(dāng)前目錄下文件已不存在,但未演示);
(3)剪切后可以剪切回來,方法基本相同,可以使用 ls 指令驗(yàn)證當(dāng)前目錄和上一級(jí)目錄的文件;
(4)概括來說,mv 指令用于文件重命名和剪切,但會(huì)產(chǎn)生歧義,如 mv test.txt ../ 明顯是剪切到上一級(jí)路徑,而 mv test.txt test3.txt 是典型的重命名,但 mv test.txt ../test3.txt 是剪切并重命名。在同一級(jí)目錄下也是剪切并重命名,只是剪切過程未體現(xiàn),因?yàn)槲募緛砭痛嬖凇O旅媸羌羟胁⒅孛倪^程:
- 重新認(rèn)識(shí)
(1)Linux 下,一切都是文件,這是我們對(duì)文件的重新認(rèn)知,也是對(duì) Linux 指令等的重新認(rèn)知。為什么說都是文件呢?
顯示器打印信息,可以把顯示器理解為具有寫方法的文件,鍵盤是輸入的,即讀取的,可以把鍵盤理解為僅具有讀方法的文件,而普通文件是讀寫方法都具有的文件。與之相比,顯示器僅具有寫方法,鍵盤僅具有讀方法,僅此而已;
(2)結(jié)合文件重新理解輸出重定向
echo 指令顯示內(nèi)容到顯示器上,但加上箭頭和新文件后,不會(huì)寫入顯示器,而是寫入指定文件中;
我們可以這樣理解輸出重定向:將原本應(yīng)寫入顯示器文件的內(nèi)容寫入指定文件中,這個(gè)過程定義為輸出重定向;
- 和文件相關(guān)的指令的辨析
(1)我們前面介紹的 echo 指令直接將指令后內(nèi)容顯示在屏幕上
echo 后加上文件名會(huì)將文件名作為字符串顯示在屏幕上,cat 后加上文件名會(huì)將文件內(nèi)容顯示在屏幕上,因此盡管后面的內(nèi)容相同,打印結(jié)果有區(qū)別,echo 就是無腦地打印任何內(nèi)容;
(2)之前學(xué)習(xí)了 ll 指令,打印文件相關(guān)內(nèi)容,但打印的是文件屬性,文件包括文件內(nèi)容和文件屬性,文件內(nèi)容使用 cat 指令打印,文件屬性使用 ll 指令打印;
(3)輸出重定向中的 >test.txt,即大于號(hào)加上文件名,會(huì)刪除文件內(nèi)容,即清空文件內(nèi)容;
(4)文件中已有內(nèi)容的情況下,多次使用 echo ***** > 文件名 寫入內(nèi)容時(shí),每次輸入都會(huì)覆蓋原內(nèi)容;
(5)如果不想每次輸入內(nèi)容時(shí)覆蓋原內(nèi)容怎么辦?之前使用單個(gè)大于號(hào)向文件寫入內(nèi)容會(huì)覆蓋原文件內(nèi)容,使用兩個(gè)大于號(hào)可以不覆蓋原文件內(nèi)容進(jìn)行寫入;
這種方式稱為追加重定向,即在原內(nèi)容基礎(chǔ)上追加新內(nèi)容,echo 每次追加時(shí)都在不同行(通過上述實(shí)例可以觀察到),可以將 echo 換成 printf,這樣內(nèi)容會(huì)在同一行顯示,而非自動(dòng)換行;
- 三大重定向
(1)我們已經(jīng)展示了輸入重定向和追加重定向,第一個(gè)是簡(jiǎn)單地向文件輸入數(shù)據(jù),但每次輸入都會(huì)覆蓋之前數(shù)據(jù),為此我們學(xué)習(xí)了追加重定向指令,可以在不覆蓋原內(nèi)容的基礎(chǔ)上輸入新內(nèi)容;
(2)除了輸入重定向和追加重定向,還有輸出重定向,與 cat 指令有關(guān),簡(jiǎn)單介紹如下:
我們可以自己嘗試,僅使用 cat 指令,不添加任何內(nèi)容,輸入什么,顯示器上就會(huì)打印什么,而且不會(huì)停止,可以使用 Ctrl+D 組合鍵停止輸入過程;
(3)我們可以使用 cat
(4)新的理解
使用 echo “hello world” >> test.txt 向文件寫入內(nèi)容時(shí),如果文件不存在,系統(tǒng)會(huì)自動(dòng)創(chuàng)建文件,我們可以不使用 touch 指令創(chuàng)建文件,而是選擇這種方式創(chuàng)建文件;
- cat 指令
(1)這個(gè)指令就是我們上面介紹的,將文件內(nèi)容顯示出來,如果文件不存在會(huì)創(chuàng)建文件,但 cat 指令還有其他選項(xiàng),我們來認(rèn)識(shí)一下;
cat -b 文件名—————-這個(gè)就是輸出非空行的編號(hào);
cat -n 文件名—————-這個(gè)就是輸出所有行的編號(hào),包括空行;
cat -s 文件名—————-這個(gè)就是對(duì)于連續(xù)的空行,只會(huì)輸出一個(gè)空行;
- more 命令和 less 命令
(1)我們上面介紹的 cat 命令適合查看小型文件,如果要查看大型文件,通常使用 more 指令,可以幫助我們翻閱,但只能向下翻,后面加上選項(xiàng):more -n 文件(大型),指明想要查看的文件行數(shù),輸入 500,屏幕上會(huì)顯示第 500 行上下的內(nèi)容,可以使用 Enter 鍵向下翻,但缺點(diǎn)是不能向上翻;
(2)less 指令和 more 指令用法基本相同,但可以向上翻閱,使用鍵盤上的向上鍵和向下鍵,比 more 好那么一點(diǎn)點(diǎn)。