作業系統學習筆記(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編輯器),你們一定一定要適應終端程式設計!”我:人類都墮落到這種程度了,估計我也救不了了(小聲)
結果沒想到終端的功能這麼豐富,所以我還是乖乖用圖形介面幹活吧。
謝謝大家讀到這裡~