Linux檔案與目錄管理

2021-08-09 07:47:46 字數 4865 閱讀 3406

在linux中什麼是乙個檔案的路徑呢,說白了就是這個檔案存在的地方,例如在上一章提到的/root/.ssh/authorized_keys 這就是乙個檔案的路徑。如果你告訴系統這個檔案的路徑,那麼系統就可以找到這個檔案。

在linux的世界中,存在著絕對路徑和相對路徑。

絕對路徑:路徑的寫法一定由根目錄」/」寫起,例如/usr/local/mysql 這就是絕對路徑。

相對路徑:路徑的寫法不是由根目錄」/」寫起,例如,首先使用者進入到/ 然後再進入到home ,命令為 cd /home 然後 cd test 此時使用者所在的路徑為 /home/test 。第乙個cd命令後跟 /home 第二個cd命令後跟test ,並沒有斜槓,這個test是相對於/home 目錄來講的,所以叫做相對路徑。

pwd 這個命令列印出當前所在目錄

cd 進入到某乙個目錄

./ 指的是當前目錄

../ 指的是當前目錄的上一級目錄。

上圖中,首先進入到/usr/local/lib/ 目錄下,然後再進入 ./ 其實還是進入到當前目錄下,用pwd檢視當前目錄,並沒有發生變化,然後再進入../ 則是進入到了/usr/local/目錄下,即/usr/local/lib目錄的上一級目錄。

你看明白了嗎?

mkdir 建立乙個目錄,這個命令在上一章節中提及過。mkdir 其實就是make directory的縮寫。其語法為 mkdir [-mp] [目錄名稱] ,其中-m , –p 為其選項,-m:

這個引數用來指定要建立目錄的許可權,該引數不常用,所以筆者不做重點解釋。-p:這個引數很管用的,先來做個試驗,你會一目了然的。

當我們想建立 /tmp/test/123 目錄,可是提示不能建立,原因是/tmp/test目錄不存在,你會說,這個linux怎麼這樣傻,/tmp/test目錄不存在就自動建立不就ok了嘛,的確linux確實很傻,如果它發現要建立的目錄的上一級目錄不存在就會報錯。然後linux也為我們想好了解決辦法,即-p引數。

你看到這裡,是不是明白-p引數的作用了?沒錯,它的作用就是遞迴建立目錄,即使上級目錄不存在。還有一種情況就是如果你想要建立的目錄存在的話,會提示報錯,然後你加上-p引數後,就不會報錯了。

rmdir 刪除乙個目錄。

rmdir 其實是rmove directory 縮寫,其只有乙個選項-p 類似與mkdir命令,這個引數的作用是將上級目錄一起刪除。舉個例子吧,新建目錄mkdir -p d1/d2/d3 ,rmdir -p d1/d2/d3相當於是刪除了d1,d1/d2, d1/d2/d3。如果乙個目錄中還有目錄,那麼當你直接rmdir 該目錄時,會提示該目錄不為空,不能刪除。

如果你非要刪除不為空的目錄,那你用rm指令吧。

rm 刪除目錄或者檔案

rmdir 只能刪除目錄但不能刪除檔案,要想刪除乙個檔案,則要用rm命令了。rm同樣也有很多選項。你可以通過 man rm 來獲得詳細幫助資訊。

在這裡筆者只列舉較常用的幾個選項。

-f 強制的意思,如果不加這個選項,當刪除乙個不存在的檔案時會報錯。

-i 這個選項的作用是,當使用者刪除乙個檔案時會提示使用者是否真的刪除。

如果刪除,輸入y 否則輸入 n

-r 當刪除目錄時,加該選項,如果不加這個選項會報錯。rm是可以刪除不為空的目錄的。

你會發現,筆者在列舉的rm例子中使用的是絕對路徑,而ls 則使用的相對路徑。這是為什麼呢?

which 用來查詢乙個命令的絕對路徑,這個命令筆者不詳細介紹,因為平時筆者只用來查詢乙個命令的絕對路徑。

alias 用來設定指令的別名。語法:alias[別名]=[指令名稱],例如 alias rm='rm -i' ,即當我們使用rm命令時,實際上是使用的是rm –i ,而用絕對路徑的/bin/rm 則不會被alias,該命令在以後章節中會詳細介紹。

【環境變數path】

上邊提到了alias,也提到了絕對路徑的/bin/rm ,然後你意識到沒有,為什麼我們輸入很多命令時是直接打出了命令,而沒有去使用這些命令的絕對路徑?這是因為環境變數path在起作用了。請輸入 echo $path,這裡的echo其實就是列印的意思,而path前面的$表示後面接的是變數。

因為/bin 在path的設定中,所以自然就可以找到ls了。如果你將 ls 移動到 /root 底下的話,然後你自己本身也在 /root 底下,但是當你執行 ls 的時候,他就是不理你?怎麼辦?

這是因為 path 沒有 /root 這個目錄,而你又將 ls 移動到 /root 底下了,自然系統就找不到可執行檔案了,因此就會告訴你, command not found !那麼該怎麼克服這種問題呢?

有兩個方法,一種方法是直接將 /root 的路徑加入 path 當中!如何增加?可以使用:

path=」$path」:/root

另一種方式則是使用完整檔名,亦即直接使用相對或絕對路徑來執行,例如:

/root/ls

./ls

關於rm,筆者使用最多便是-rf兩個選項合用了。不管刪除檔案還是目錄都可以。但是方便的同時也要多注意,萬一你的手太快後邊跟了/那樣就會把你的系統檔案全部刪除的,切記切記。

ls 在前面的命令中多次用到它。現在你已經明白它的含義了吧。沒有錯,就是檢視某個目錄或者某個檔案,是list的簡寫。

ls 後可以跟乙個目錄,也可以跟乙個檔案。以下是ls的選項,在這裡筆者並沒有完全列出,只是列出了平時使用最多的選項。其他選項,你可以自行通過man ls 查詢。

-a 全部的檔案都列出,包括隱藏的。linux檔案系統中同樣也有隱藏檔案。這些隱藏檔案的檔名是以.

開頭的。例如.test, /root/.

123, /root/.ssh 等等,隱藏檔案可以是目錄也可以是普通檔案。

-l 詳細列出檔案的屬性資訊,包括大小、建立日期、所屬主所屬組等等。ll 這個命令等同於ls –l 。

--color=never/always/auto never即不要顯示顏色,always 即總顯示顏色,auto 是由系統自行判斷。在redhat/centos 系統中,預設是帶顏色的,因為我們平時用的ls已經alias成了ls –color=tty 所以目錄的顏色是藍色的,而可執行檔案的顏色是綠色。這樣有助於幫我們區分檔案的格式。

-d 後邊跟目錄,如果不加這個選項則列出目錄下的檔案,加上後只列車目錄本身。

cp copy的簡寫,即拷貝。格式為 cp [選項] [ **檔案 ] [目的檔案] ,例如我想把test1 拷貝成test2 ,這樣即可 cp test1 test2,以下介紹幾個常用的選項

-d 這裡涉及到乙個「連線」的概念。連線分為軟連線和硬連線。在以後的章節中會詳細解釋,現在你只要明白這裡的軟連線跟windows中的快捷方式類似即可。

如果不加這個-d 則拷貝軟連線時會把軟連線的目標檔案拷貝過去,而加上後,其實只是拷貝了乙個連線檔案(即快捷方式)。

上例中的ln 命令即為建立連線的,以後再做詳細解釋。

-r 如果你要拷貝乙個目錄,必須要加-r選項,否則你是拷貝不了目錄的。

-i 如果遇到乙個存在的檔案,會問是否覆蓋。在redhat/centos系統中,我們使用的cp其實是cp –i

下面簡單做乙個小試驗,很快你就會明白-i 選項的作用了。

上例中,touch 命令,看字面意思就是摸一下,沒錯,如果有這個檔案,則會改變檔案的訪問時間,如果沒有這個檔案就會建立這個檔案。前面說過echo,其實就是列印,在這裡所echo的內容」abc」 和 「def」並沒有顯示在螢幕上,而是分別寫進了檔案 111和222, 其寫入作用的就是這個大於號」>」 在linux中這叫做重定向,即把前面產生的輸出寫入到後面的檔案中。在以後的章節中會做詳細介紹,這裡你要明白它的含義即可。

而cat 命令則是讀乙個檔案,並把讀出的內容列印到當前螢幕上。該命令也會在後續章節中詳細介紹。

-u 該選項僅當目標檔案存在時才會生效,如果原始檔比目標檔案新才會拷貝,否則不做任何動作。

mv 移動的意思,是move的簡寫。格式為 mv [ 選項 ] [原始檔] [目標檔案],下面介紹幾個常用的選項。

-i 和cp的-i 一樣,當目標檔案存在時會問使用者是否要覆蓋。在redhat/centos系統中,我們使用的mv其實是mv –i

-u 和上邊cp 命令的-u選項乙個作用,當目標檔案存在時才會生效,如果原始檔比目標檔案新才會移動,否則不做任何動作。

該命令有集中情況,你注意到了嗎?

1) 目標檔案是目錄,而且目標檔案不存在;

2) 目標檔案是目錄,而且目標檔案存在;

3) 目標檔案不是目錄不存在;

4) 目標檔案不是目錄存在;

目標檔案是目錄,存在和不存在,移動的結果是不一樣的,如果存在,則會把原始檔移動到目標檔案目錄中。不存在的話移動完後,目標檔案是乙個檔案。這樣說也許你會覺得有點不好理解,看例子吧。

windows下的重新命名,在linux下用mv就可以搞定。

cat 比較常用的乙個命令,即檢視乙個檔案的內容並顯示在螢幕上。

-n 檢視檔案時,把行號也顯示到螢幕上。

上例中出現了乙個」>>」,這個符號跟前面介紹的」>」的作用都是重定向,即把前面輸出的東西輸入到後邊的檔案中,只是」>>」是追加的意思,而用」>」,如果檔案中有內容則會刪除檔案中內容,而」>>」則不會。

-a 顯示所有東西出來,包括特殊字元

tac 其實是cat的反寫,同樣的功能也是反向列印檔案的內容到螢幕上。

more 也是用來檢視乙個檔案的內容。當檔案內容太多,一螢幕不能佔下,而你用cat肯定是看不前面的內容的,那麼使用more就可以解決這個問題了。當看完一屏後按空格鍵繼續看下一屏。

但看完所有內容後就會退出。如果你想提前退出,只需按q鍵即可。

less 作用跟more一樣,但比more好在可以上翻,下翻。空格鍵同樣可以翻頁,而按」j」鍵可以向下移動(按一下就向下移動一行),按」k」鍵向上移動。在使用more和less檢視某個檔案時,你可以按一下」/」 鍵,然後輸入乙個word回車,這樣就可以查詢這個word了。

如果是多個該word可以按」n」鍵顯示下乙個。另外你也可以不按」/」而是按」?」後邊同樣跟word來搜尋這個word,唯一不同的是,」/」是在當前行向下搜尋,而」?

」是在當前行向上搜尋。

Linux管理檔案和目錄基本命令

touch 新建空檔案,當檔案存在時更新該檔案的時間標記,否則新建。file 檢視檔案型別。cp 複製檔案或目錄 引數 f force 覆蓋目標同名檔案或目錄時不進行提醒,強制複製。i interactive 覆蓋目標同名檔案或目錄時提醒使用者確認。p pereserve 複製是保持原檔案的許可權 ...

Linux檔案系統與磁碟管理

實驗報告 掌握linux下檔案系統的建立 掛載與解除安裝。掌握檔案系統的自動掛載。某企業的linux伺服器中新增了一塊硬碟 dev sdb,請使用fdisk命令新建 dev sdb1主分割槽和 dev sdb2擴充套件分割槽,並在擴充套件分割槽中新建邏輯分割槽 dev sdb5,並使用mkfs命令分...

Linux檔案系統與磁碟管理LVM

硬碟的結構與分割槽 磁頭header,磁軌 track 磁柱 cylinder 扇區 sector 節 分割槽 partition 指定從哪個磁柱 起始磁柱 到哪個磁柱 結束磁柱 的範圍儲存以何種檔案系統儲存 mbr master booter recorder 檔案系統 邏輯塊 block 分割槽...