1. 程式人生 > 其它 >作業系統學習筆記(1)常用Linux命令_檔案目錄類命令

作業系統學習筆記(1)常用Linux命令_檔案目錄類命令

前言:

  在這個筆記中,我把大多數程式碼都加了註釋,我的一些想法和註解用藍色字型標記了出來,重點和需要關注的地方用紅色字型標記了出來。

  這一部分的筆記是以電子科技大學慕課《Linux作業系統程式設計》為基礎寫的。

  在這一篇文章中,我們主要介紹一些常用的Linux命令。

正文:

1. 命令格式

  命令名稱 -選項 引數

  如:ls -la /etc

2. 檔案目錄類命令

  1、ls命令

  命令名稱:ls

  命令英文原意:list(啊,就是縮寫嘛)

  功能描述:顯示目錄檔案

  語法:ls 選項[-a -l -d] [檔案或目錄]

  -a:顯示所有檔案,包括隱藏檔案

  -l

:詳細資訊顯示

  -d:檢視目錄屬性

  示例:

  如圖是我的資料夾:

 

  如圖是4種方法輸出的結果:(如圖所示 .vscode這個檔案是隱藏檔案,ls -a顯示出來了)

  2、pwd命令

  命令名稱:pwd

  命令英文原意:print working directory

  語法:pwd

  功能描述:顯示當前所在的工作目錄

  示例:

  同樣以剛才那個資料夾為例:

 

3. 目錄操作類命令

  1、cd命令

  命令名稱:cd

  命令英文原意:change directory

  語法:cd [目錄]

  功能描述:切換目錄

  示例:

  $ cd / 切換到根目錄

  $ cd .. 回到上一級目錄

  如圖,我從test資料夾中用cd ..回到了上一個資料夾,再用cd /回到了根目錄

 

  2、mkdir命令

  命令名稱:mkdir

  命令英文原意:make directory

  語法:mkdir [目錄]

  功能描述:建立新目錄

  示例:

  $ mkdir newdir

  如圖,輸入指令後多了個叫“newdir”的資料夾

 

  2、rmdir命令

  命令名稱:rmdir

  命令英文原意:remove directory

  語法:rmdir [目錄名]

  功能描述:刪除空目錄

  示例:

  $ rmdir newdir

  如圖,輸入後我親愛的newdir被刪除了

 

  那麼問題來了,如果不是空目錄會發生什麼呢?

  我重新建立了newdir,然後將裡面放入了一些檔案

 

  此時執行rmdir指令,刪除失敗

 

4. 瀏覽檔案類命令

  1、cat命令

  命令名稱:cat

  命令英文原意:concatenate and display files

  功能描述:連線檔案並列印到標準輸出裝置上

  選項:

  -E 在每一行的末尾顯示$

  -n 為顯示行新增行號

  引數:指定要連線的檔案列表

  示例:

  cat m1(在螢幕上顯示m1的內容)

  cat m1 m2(同時顯示檔案m1和m2的內容)

  如圖,其中1~7行是1.cpp的內容,8~19行是2.c的內容,同時也使用了-E和-n這兩個選項

 

  2、more命令

  命令名稱:more

  語法:more [檔名]

  操作:

  (空格)或f: 顯示下一頁

  (Enter): 顯示下一行

  q或Q: 退出

  功能描述:分頁顯示檔案內容

  示例:

  我在vscode裡寫了一個很長的114514.cpp,如圖所示,一眼望不到頭。

 

  此時在終端輸入more 114514.cpp,可以看見沒有完全顯示出來。

 

  此時我敲了下回車鍵,多輸出了一行(雖然基本看不出來)

 

  敲了下空格後,則是完完整整顯示出來了

 

  敲擊q鍵之後就回到了終端的輸入了

  3、less命令

  less命令與more命令用法類似,也可以用來瀏覽超過一頁的檔案。不同的是less命令除了可以按空格鍵向下顯示檔案外,還可以利用上下鍵來捲動檔案。

  4、head命令

  命令名稱:more

  語法:head [引數] <檔名>

  引數:

  -n:顯示前n行,不指定此引數預設顯示前10行

  示例:

  如圖所示,簡單易懂

 

  5、tail命令

  命令名稱:tail

  語法:tail [引數] <檔名>

  引數:

  -n:顯示後n行,不指定此引數預設顯示前10行

  +n:從第n行顯示到檔案尾

  -F:用於跟蹤顯示不斷增長的檔案結尾內容(通常用於顯示日誌檔案)

  示例:

  我從50行開始顯示114514.cpp

 

5. 檔案操作類命令

  1、cp命令

  命令名稱:cp

  命令英文原意:copy

  功能描述:可以將檔案從一處複製到另一處,一般在使用cp命令時將一個檔案複製成另一個檔案或複製到某目錄時,需要指定原始檔名與目標檔名或目錄

  語法:cp [引數] <原始檔路徑> <目標檔案路徑>

  引數:

  -p:連同檔案的屬性一起復制,而非使用預設方式,常用於備份

  -i:若目標檔案已經存在時,在覆蓋時會先詢問操作的進行

  -r:遞迴持續複製,用於目錄的複製行為

  -u:目標檔案與原始檔有差異時才會複製

  示例:

  如圖,目錄內有m1和m2兩個資料夾,兩個都是空的資料夾。

 

  執行命令(-r可以忽視了,這裡因為m1裡面沒有其他東西,所以-r沒有用)

 

  後可以看見m2內出現了m1

 

  再執行↓

 

  可以看見m1裡面出現了m2,而m2開啟之後裡面又有m1

 

  如果執行↓,可以看見略過了目錄m2

 

  其他的引數就不嘗試了,可以自己去試一試~

  2、rm命令

  命令名稱:rm

  命令英文原意:remove

  功能描述:刪除檔案和目錄

  語法:cp [引數] <目標檔案路徑>

  引數:

  -f:就是force的意思,忽略不存在的檔案,不會出現警告資訊

  -i:互動模式,在刪除前會詢問使用者是否操作

  -r:遞迴刪除,最常用於目錄刪除,它是一個非常危險的操作(老師ppt都這樣說了,看得我非常想去嘗試rm -rf /*了,啊,要不要再整一個虛擬機器去試一試呢嘿嘿嘿)

  操作:

  刪除某個檔案:rm [檔名]

  刪除當前目錄下的所有檔案:rm *

  遞迴刪除某個目錄:rm -r [目錄名]

  強制刪除所有後綴名為txt的檔案:rm -f *.txt

  刪除當前目錄下的所有檔案(詢問):rm -i *

  示例:

  m2裡面還有之前的m1資料夾,果然不能直接刪除m2,必須-r才能刪除。

 

  然後做第二個測試:我在m1中放入了114514.cpp,1.cpp,main.cpp三個檔案,然後執行

 

  我只在第一個敲了y,後面都是敲的回車,結果只刪除了114514.cpp。

  經過測試,似乎在首字母是y的情況下都能成功刪除,下面三種情況都成功了

 

  3、find命令

  命令名稱:find

  功能描述:用來尋找檔案和目錄

  語法:find <路徑> [引數]

  引數:

  -name filename:找出檔名為filename的檔案

  -size [+-] s:找出比s要大(+)或小(-)的檔案

  -type t:查詢檔案型別為t的檔案,t的值主要有:一般檔案(f)、裝置檔案(b、c)、目錄(d)、連線檔案(i)、socket(s)、FIFO管道檔案(p)

  -perm mode:查詢檔案許可權剛好等於mode的檔案,mode用數字表示,如0755

示例:

 

  在網上搜索了之後發現find的用法挺複雜挺多的,這裡就只給這樣一個簡單的例子了,詳細的用法可以參照他人的部落格,這裡就不深入展開了

  3、grep命令

  命令名稱:grep

  命令英文原意:Globally search a Regular Expression and Print

  功能描述:在檔案中搜索匹配的字元並進行輸出

  語法:grep [引數] <要找的字串> <尋找字串的原始檔>

  引數:

  -a:將binary檔案以text檔案的方式查詢資料

  -c:計算找到“查詢字串”的次數

  -i:忽略大小寫的區別,即把大小寫視為相同

  -v:反向選擇,即顯示出不包含“查詢字串”內容的那一行

  示例:

  如下圖,我在114514.cpp裡面計算找到114514這個字串的個數,結果找到了22個。

 

  至於反選之後,就輸出瞭如下的結果(太長了就不完全截圖了),反正裡面一個114514都沒有。

 

  4、tar命令

  命令名稱:tar

  命令英文原意:tape archive

  功能描述:將使用者指定的檔案或目錄打包成一個檔案,也可以通過指定引數開啟壓縮/解壓縮功能

  語法:tar [引數] <檔案>

  引數:

  -c:新建打包檔案

  -t:檢視打包檔案的內容含有哪些檔名

  -x:解打包或解壓縮的功能,可以搭配-C(大寫)指定解壓的目錄,注意-c,-t,-x不能同時出現在同一條命令中

  -j:通過bzip2的支援進行壓縮/解壓縮

  -z:通過gzip2的支援進行壓縮/解壓縮

  -v:在壓縮/解壓縮過程中,將正在處理的檔名顯示出來

  -f filename:filename為要處理的檔案

  -C dir:指定壓縮/解壓縮的目錄dir

  示例:

  將當前目錄的所有檔案打包成test.tar(太長了就不截完了)

  tar -cvf test.tar *

 

 

  將當前目錄的所有檔案打包成test.tar,再用gzip命令壓縮

  tar -czvf test.tar *

 

 

  檢視test.tar中包含了哪些檔案:(也不完全截圖了)

  tar -tf test.tar

 

  將test.tar解打包:

  tar -xvf test.tar

 

  將test.tar.gz解壓縮並解打包:

  tar -xzvf test.tar.gz

 

  順帶一提,可以很明顯的看出gz是壓縮過的。(空話)

 

 

後記:

  老師上課的時候說:“萬一哪一天,人類的圖形介面用不了了,還能用命令列來寫程式碼(指vim編輯器),你們一定一定要適應終端程式設計!”我:人類都墮落到這種程度了,估計我也救不了了(小聲)

  結果沒想到終端的功能這麼豐富,所以我還是乖乖用圖形介面幹活吧。

  謝謝大家讀到這裡~