目錄
前言
1.目錄操作指令
1.1指令
1.2理論
1.2.1文件
?1.2.2目錄與路徑
2.文件操作指令
2.1指令
2.2理論
2.2.1輸出與輸入
2.2.2一切皆文件
前言
這是Linux學習下的第一篇文章,后續Linux的學習也會持續更新分享。
Linux的基本指令是使用Linux操作系統的基礎,一些指令的在使用過程中也會涉及Linux背后的理論知識。指令演示在Centos7.9發行版本,root賬號Xshell操作下進行。
1.目錄操作指令
目錄操作指令主要是對目錄下的查看、移動以及所在路徑的確認,其中對“目錄“和“路徑”的深入認識會在理論補充部分進行詳細了解。
1.1指令
ls 指令
語法:ls? ? [選項]? ? [目錄或文件]
功能:對于?錄,該命令列出該?錄下的所有??錄與?件。對于?件,將列出?件名以及其他信息。
常用選項:
?-a:列出?錄下的所有?件,包括以 . 開頭的隱含?件。
?-l:列出?件的詳細信息列出?件的詳細信息。
Linux系統下的目錄可以理解為Windows系統中的文件夾,ls指令更像是一種指令式的可視化界面,用于查看目錄(文件夾)和文件信息。
舉例:
對于ls -l指令,也將語法可簡化為ll:
對于Linux中指令的選項也可進行合并進行:
其次指令選項的組合寫法只是功能合并,對選項順序并無要求
pwd 指令
語法:pwd
功能:顯示用戶當前所在目錄
常用選項:無
?舉例:
其中root就是當前我所在的目錄,/root就是我所在的路徑。
cd 指令
語法:cd [目錄名]
功能:改變?作?錄。將當前?作?錄改變到指定的?錄下。
常用選項:無?
也就是類似Windows中的打開指定目錄。其中的指令舉例部分放到理論補充路徑知識后再進行。
mkdir 指令
語法:mkdir [選項] dirname
功能:在當前?錄下創建?個名為 “dirname”的?錄。
常用選項:無?
mkdir命令可以類比于Windows中新建文件夾的功能。
舉例:
rmdir指令
語法:rmdir dirname
功能:刪除空目錄。
常用選項:無?
rmdir是于mkdir對應的刪除目錄指令,但僅限于刪除空目錄,因此不算常用。
舉例:
1.2理論
1.2.1文件
Linux中的文件可分為目錄文件和普通文件,目錄文件類似與Windows中的文件夾;普通文件類似除文件夾外的其他文件,也可以理解為可寫入數據的文件。
在講解文件前先補充一個創建普通文件的指令:
touch 指令
語法:touch [選項] [文件名]
功能:touch命令可更改?檔或?錄的?期時間,包括存取時間和更改時間,或者新建?個不存在的?件。
常用選項:
-a:僅更改訪問時間
-c:僅更改修改時間
舉例:?
?對于示例中所創建的test.c文件,并沒有去寫入內容,那該文件有沒有內存呢?
要回答這個問題,我們先來了解下文件的組成。在Windows中也去創建一個test.c的空文件
可以看到該文件顯示的是0KB,但“文件所占用內存”這個數據就不占用內存嗎?還有后面顯示的時間、文件類型等肯定也是需要占用內存的。顯然,普通文件包含文件內容和文件屬性(數據源),當文件內容為空時,文件的內存不為空。
再來看另一個場景:在ls指令部分,輸入ls指令與ls -a指令時顯示出來的文件是不同的,ls -a指令下的文件多了一些以.開頭命名的文件,這些文件在尋常指令下是不會顯示的,這些文件也稱為隱藏文件。
比如我們創建一個隱藏文件:
可以發現我們創建的.ontsee文件通過ls或者ls -l指令都無法直接看到,這時想要看到隱藏文件就只能用特定選項來看:
?1.2.2目錄與路徑
了解目錄與路徑具體概念前先來了解下隱藏文件最上面的.和..
Linux中.代表的是當前目錄,..代表的是上一級目錄,我們利用cd(移動工作目錄)指令來演示一下:
可以看到當前處于bolog目錄下,當前目錄(.)就是bolog,上一級目錄(..)就是root。
可以看到當要移動到當前目錄時pwd(顯示用戶當前所在目錄)顯示的還是原目錄,而移動到上一級目錄時pwd已經到了root目錄。
但我們一直返回上一級目錄會怎么樣呢?
可以看到從root一直返回上一級目錄時返回到"/"目錄就沒有再上一級目錄了。因此在Linux中"/"目錄也稱之為根目錄。
根目錄也可以說是一個總目錄,是整個文件系統的起點和最頂層目錄,所有其他目錄、文件、設備等都從根目錄開始分支出來。談到"根"不免想到數據結構中的樹結構,沒錯,Linux的文件系統就是采用了樹形結構。
"/"就是整個樹形結構的根結點也叫根目錄,其中各各子目錄也就是單個目錄,子目錄下的文件我們也可稱作樹的樹葉。?
其中根目錄下的子目錄也叫做一級目錄,一級目錄的部分重要目錄有著各自的重要功能。如下圖
對于pwd所展示的/,可以成為根目錄,也可以叫做路徑。Linux中的絕對路徑就是從根目錄(/)開始像/root和/root/bolog都是路徑,而除根目錄外的其他"/",稱之為路徑分割符。
路徑是描述如何從文件系統的某個點(通常是根目錄或當前目錄)導航到目標文件或目錄的字符串。它由目錄名按層級順序組成,用路徑分割符 / 分隔。路徑同樣也標識著文件的唯一性,相應的,文件的唯一性由路徑來標識。
像/root/bolog這樣從根目錄 (/) 開始,完整地描述到達目標文件或目錄的路徑,我們稱之為絕對路徑。而對于.和..這樣從當前工作目錄開始,描述到達目標文件或目錄的路徑,我們稱之為相對路徑。
而對于像/root這樣的路徑,我們也稱為家目錄,可用符號"~"代替。而對于普通用戶的家目錄則在home目錄下管理:
2.文件操作指令
2.1指令
了解完目錄的增刪查之后,我們再來了解下文件操作相關指令。
rm 指令
語法:rm [選項] [dirname/filename]
功能:刪除目錄或文件
常用選項:
-f:即使文件屬性為只讀,亦直接刪除
-i:刪除前逐一詢問確認
-r:刪除目錄及其下所有文件
之前目錄處的rmdir指令只能刪除空文件,并且更不同的是rmdir只能當前目錄的操作權限所有者才能使用,而rm指令則適合所有使用者,具體權限詳細內容可參考后續文章。
舉例:
rm在root賬戶下每次刪除時會進行刪除確認,確認刪除需要我們輸入y再回車,普通用戶并不影響。若不想讓其再root賬戶下詢問,可加入-f選項。
其次我們在初次使用rm刪除test目錄時并不能直接刪除,需要我們加入-r選項,原因是之前提到的Linux文件系統是一個多叉樹結構,樹在進行遍歷時需要使用遞歸,而rm本身并不帶遞歸,但-r選項則可調用遞歸(recursion)方式。
cp 指令
語法:cd [選項] [源文件或目錄] [目標文件或目錄]
功能:復制文件或目錄
常用選項:
-f 或 --force: 強?復制?件或?錄, 不論?的?件或?錄是否已經存在。
-i 或 --interactive: 覆蓋?件之前先詢問??。
-r: 遞歸處理,將指定?錄下的?件與??錄?并處理。若源?件或?錄的形態,不屬于?錄或符號鏈接,則?律視為普通?件處理。
cd(拷貝)指令常用于復制文件,或進行文件的備份。
舉例:
mv 指令
語法:mv [選項] [源?件或?錄] [?標?件或?錄]
功能:
1.視mv命令中第?個參數類型的不同(是?標?件還是?標?錄),mv命令將?件重命名或將其移??個新的?錄中。
2.當第?個參數類型是?件時,mv命令完成?件重命名,此時,源?件只能有?個(也可以是源?錄名),它將所給的源?件或?錄重命名為給定的?標?件名。
3.當第?個參數是已存在的?錄名稱時,源?件或?錄參數可以有多個,mv命令將各參數指定的源?件均移??標?錄中。常用選項:
-f :force 強制的意思,如果?標?件已經存在,不會詢問?直接覆蓋
-i :若?標?件 (destination) 已經存在時,就會詢問是否覆蓋!
mv根據目標文件和目錄的不同,可以實現剪貼和重命名功能。
舉例:
2.2理論
2.2.1輸出與輸入
在Linux中,輸入與輸出是有特定指令的,下面來看看Linux下的輸入與輸出。
echo 指令
語法:echo [文本/字符串]
功能:將指定的字符串或變量的值輸出到標準輸出(通常是終端屏幕)。
例如我們輸出一段"Hello Linux":
這里我們輸出了"Hello Linux"字符串,輸出到的地方是Linux系統的終端屏幕,這里的終端屏幕其實也可類比于是一個文件。
那我們可不可以輸出到其他文件呢?這里我們先來補充一個指令
cat 指令
語法: cat [選項] [?件]
功能: 查看?標?件的內容
常?選項:
-b:對?空輸出?編號
-n :對輸出的所有?編號
-s :不輸出多?空?
cat命令可以幫助我們查看目標文件內容。
來看看下面場景:
可以看到echo指令通過>之后不再輸出到默認的終端屏幕,而是輸出到我們指定的test.txt文件,這個過程我們稱之為輸出重定向,輸出重定向的符號就是">",但>每次重定向時會清空之前的文本內容,若不想清空,可以用">>"。
這樣每次重定向時就會在之前文本的下一行輸出內容。
有輸出重定向當然也有輸入重定向,但輸入重定向涉及內容較多,會在后面學習內容進行講解。?
2.2.2一切皆文件
根據上面的輸入與輸出重定向的了解,可以看出Linux中的終端也是一個文件,這時便要引出Linux中的系統本質:Linux下一切皆文件。
除了目錄與普通文件外,像輸出的終端屏幕和輸入的終端鍵盤通過輸出和輸入重定向都可以看出是一個文件。除此之外,Linux上執行的指令,以及Xshell所展示的終端頁面都是文件。指令部分的具體驗證內容會放在(下)部分和指令相關指令一起講解。