Linux檔案與目錄管理(鳥哥的Linux私房菜

2021-09-25 15:11:08 字數 3507 閱讀 1860

自行整理,初學者的學習總結與記錄。

1.一些必須記下來的特殊目錄:

.代表此層目錄

..代表上一層目錄

—代表前乙個工作目錄

~代表"目前使用者身份的主資料夾"

~account 代表account這個使用者的主資料夾 (account為賬號名稱)

特別的,使用ls -al命令查詢根目錄的上層與此層目錄,仔細查閱,兩個目錄的屬性,許可權完全一致。代表根目錄的上一層目錄與本身是同乙個目錄。

2.常見處理目錄的命令

cd:切換目錄

pwd:顯示當前目錄

mkdir:新建乙個新的目錄

rmdir:刪除乙個空的目錄

pwd [-p]       //引數-p:顯示出當前路徑,而非連線路徑
mkdir [-mp] 目錄名稱

引數:-m:配置檔案案的許可權

-p:幫助你直接將所需要的目錄(包含上層目錄)遞迴建立起來

rmdir [-p] 目錄名稱

引數:-p: 連同上層「空的」目錄也一起刪除

如果想要刪除就有的目錄,rmdir命令即可。但物件為「空」的目錄。也就是說,目錄要一層一層刪除,同時被刪除目錄裡面不能包含別的目錄,即為」空」目錄

檢視檔案屬性的命令ls的完整檔名為/bin/ls,那為什麼可以在任何地方執行這個命令呢,這是因為環境變數path的幫助。

當執行ls命令的時候,系統會依照path的設定去每個path下的目錄查詢檔案名為ls的可執行檔案,如果查詢到含有多個檔名為ls的執行檔案,以先查找到的同名命令被執行。

path變數的內容是有一堆目錄構成的,每個目錄中間用冒號(:)隔開,每個目錄有順序之分。

1個例題來增進理解。

1.假如你是root,如果將ls由/bin/ls一定成/root/ls,然後自己本身也在root目錄下請問:

(1)能不能直接通過輸入ls來執行.

(2)若不能,該如何執行這個命令?

(3)若要直接輸入ls即可執行,又該如何進行?

答:首先,該例題重點是將某執行檔案移動到非正規目錄去:

mv /bin/ls /root

(mv為移動)

(1)接下來無論在哪個目錄下面輸ls,都不能執行了。

因為root這個目錄並不在path指定的目錄中。所以即使在該目錄下,也無法查詢。

(2)因為ls存在於/root下面,並未被刪除。

可通過使用絕對路徑或相對路徑來指定這個執行檔案:

/root/ls //使用絕對路徑指定該檔名。

或者./ls //因為在/root的目錄下,就用./ls指定即可。

(3)解決思路:將/root加入path當中:

path="$path":/root

那麼,為什麼path查詢的目錄不加入本目錄(.)?加入本目錄的查詢應該很好吧?

確實,加入本目錄後,我們就能在命令所在目錄進行命令的執行了,但由於工作目錄非固定,經常會使用cd來切換,所以能執行的命令變動(因為每個目錄下可執行檔案都不同啊),對使用者來說並非好事

更有可能的是,碰見乙個壞心使用者在/tmp下做了乙個竊取使用者資料命令,由於這是大家都可寫入的環境,如果你以root的身份來執行這個命令,豈不是就涼涼了。再嚴重的,這個命令萬一是常用的ls,後果是很糟糕的。

所以,安全起見,最好不要吧.加入path的查詢目錄中。

以上各種例子總結下來就是:

不同使用者身份預設的path不同,預設能夠隨意執行的命令也不同

path是可以修改的,所以一般使用者還是可以通過修改path來執行某些位於/sbin或/usr/bin下的命令來查詢

使用絕對路徑或相對路徑直接指定某個命令的檔名來執行,會比查詢path來得準確。

命令應該放置到正確的目錄下,執行方便

處於安全考慮,本目錄.最好不要放到path中去。

這些基本命令一定要記住哈 -a

全部檔案,連同隱藏檔案

-d僅列出目錄本身

-f直接列出結果,而不進行排序(ls會預設以檔名排序)

-f根據檔案,目錄等資訊給與附加資料結構。(*代表可執行檔案,/代表目錄

-h將檔案容量以人類易讀的方式(例如gb,kb)

-i列出inode號碼

-n列出uid於gid,而非使用者與使用者組名稱

-r將排序結果反向輸出

-r連通子目錄內容一起列出來

-s以檔案容量大小排序,而不是檔名

-t以時間排序

-full-time

以完整時間模式(包含年月日輸出)

–color=auto

讓系統自行依據設定來判斷是否給與顏色

解釋一下引數-i列出的inode號碼。

inode的內容主要記錄檔案的屬性以及該檔案實際資料是放在那幾號block內。記錄的檔案資料報括有檔案的訪問模式,該檔案的所有者與組,檔案大小,建立或狀態改變時間,最近一次讀取,修改時間,內容指向等等。

複製刪除與移動

在linux系統中,傳統的ctrl+c和ctrl+v已經不管用了~

複製檔案:cp(copy)命令,還可以建立快捷方式

刪除:rm

移動:mv(move縮寫)

複製檔案或目錄——cp

cp [引數] 原始檔 目標檔案

cp [options] source1 source2 ,,,,,,directory

引數:-a:相當於-pdr的意思。

-d:複製鏈結檔案

-f:為強制的意思,若目標檔案存在且無法開啟,則刪除後再開啟一次。

-l:進行硬連線的連線檔案建立,而非複製檔案本身

-p:連通檔案的屬性一同複製過去,而非使用預設屬性。

-r:遞迴持續複製。用於目錄的複製行為(hen常用),但檔案目錄許可權可能會被改變。

-s:複製成為符號鏈結檔案,即快捷方式檔案(軟連線)。

注意的是,cp這個命令非常重要,不同身份者執行這個命令會有不同的結果產生。一般來說去複製別人的資料,希望複製過來是自己的,前提是許可權允許。所以,在預設條件下,cp的原始檔與目的檔案的許可權是不同的,目的檔案的所有者通常會是命令操作者本身

正因為這個特性,我們在面對密碼檔案等特殊檔案,就不能直接用cp來複製,必須加上-a或-p等可以完整複製檔案許可權的引數才行。

rm 引數 檔案或目錄

引數:-f:忽略不存在的檔案,不會出現警告資訊

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

-r:遞迴刪除。(慎用!!)

mv 引數 source destination

引數:-f:如果目標檔案已經存在,不詢問,直接覆蓋。//類似於複製乙個或檔案到乙個地方,但有同名檔案存在,不會詢問是否替換或跳過

-i:會詢問是否覆蓋

-u:若目標檔案已經存在,且source比較新,才會更新

鳥哥的linux linux檔案與目錄管理

此層目錄 上層目錄 前乙個工作目錄 目前使用者所在的家目錄 代表某個賬戶的家目錄.account 每層目錄下一定會有 與 兩個目錄,但是根目錄中二者指代同乙個目錄,當前目錄。幾個常用的處理目錄的命令 切換目錄 顯示當前目錄 建立乙個新目錄 刪除乙個空目錄 cdpwd mkdir redir chan...

鳥哥的Linux私房菜 檔案與目錄管理

目錄 目錄表示 當前目錄 父級目錄 上乙個工作目錄 當前賬號根目錄 account account 的根目錄 目錄操作 cd change directory pwd printf working directory mkdir mp make directory rmdir remove dire...

檔案與目錄管理筆記 鳥哥的私房菜

相對路勁與絕對路勁 相對路勁 路勁的寫法不是由 寫起的.絕對路勁 路勁的寫法一定是由 開頭的。環境變數 path 當我們執行乙個指令時,系統會依照path的設定到path定義的每個路勁下搜尋,先搜尋到的先被執行。將 root目錄加入path path path root 檢視檔案 cat tac l...