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