2 Linux 文件與目錄管理

1 目錄與路徑

1.1 相對(duì)路徑與絕對(duì)路徑

  • 絕對(duì)路徑: 一定由根目錄寫起,如 [/usr/share/doc]
  • 相對(duì)路徑: 不是由/寫起
  • 相對(duì)路徑的用途:切換方便
  • 絕對(duì)路徑的用途:正確度好。

建議:寫 shell 腳本管理系統(tǒng)的條件下,務(wù)必使用絕對(duì)路徑(用相對(duì)路徑可能因?yàn)榄h(huán)境不同導(dǎo)致一些問
題)

1.2 目錄的相關(guān)操作

特殊目錄

  • . 此層目錄
  • .. 上層目錄
  • - 前一個(gè)工作目錄
  • ~ 目前登錄用戶的家目錄
  • ~account 代表 account 這個(gè)使用者的家目錄

根目錄下存在. 和 ..兩個(gè)目錄,兩個(gè)目錄屬性權(quán)限完全一直,根目錄的 .. 和 . 是同一個(gè)目錄。

目錄常用命令

cd(切換目錄,Change Directory)
cd ~damin:切換到 damin 的家目錄
cd ~:回到自己的家目錄
cd -:回到剛剛那個(gè)目錄

使用相對(duì)目錄切換要確認(rèn)目前的路徑在哪

pwd(顯示當(dāng)前目錄,Print Working Directory)
參數(shù): -P 顯示真正路徑,不是鏈接 link 路徑
mkdir(建立一個(gè)新目錄,make directory)
mkdir [-mp] 目錄名稱
-m: 設(shè)置文件的權(quán)限,不使用默認(rèn)權(quán)限 umask, 如 mkdir -m 711 test2
-p:幫助遞歸創(chuàng)建 ,如 mkdir -p test1/test2/test3

不建議常用-p,怕打錯(cuò)字導(dǎo)致目錄比較亂

rmdir(刪除一個(gè)空目錄,remove directory)
rmdir [-p] 目錄
-p:連同上一層的“空”目錄也刪除

rmdir 刪除要確定目錄和其子目錄中是空的,否則刪不掉,要使用 rm -r test

1.3 關(guān)于執(zhí)行文件路徑的變量:$PATH

問:為什么在任何目錄都能執(zhí)行/bin/ls?
答: 因?yàn)榄h(huán)境變量 PATH 設(shè)置。[echo $PATH],可以看到/bin 和/usr/bin 都在 PATH 變量?jī)?nèi),在任何地方都能執(zhí)行 ls 。

問:有兩個(gè) ls 命令,/usr/local/bin/ls 和/bin/ls,執(zhí)行 ls 的時(shí)候執(zhí)行哪個(gè)?
答:$PATH 中哪個(gè)目錄先被查詢,哪個(gè)先被執(zhí)行。不同身份用戶默認(rèn)的 PATH 不同,默認(rèn)能夠隨意執(zhí)行的命令也不同。PATH 是可以修改的,使用絕對(duì)路徑或相對(duì)路徑直接指定某個(gè)命令來執(zhí)行,會(huì)比查找 PATH 來的正確,命令應(yīng)該放置在正確的目錄下,執(zhí)行方便。

2 文件與目錄管理

2.1 文件與目錄的查看:ls

[root@study ~]# ls [-aAdfFhilnrRSt] 文件名或目錄名稱.. 
[root@study ~]# ls [--color={never,auto,always}] 文件名或目錄名稱..
[root@study ~]# ls [--full-time] 文件名或目錄名稱.. 
選項(xiàng)與參數(shù): 
-a :全部的文件,連同隱藏文件( 開頭為 . 的文件) 一起列出來(常用) 
-A :全部的文件,連同隱藏文件,但不包括 . 與 .. 這兩個(gè)目錄 
-d :僅列出目錄本身,而不是列出目錄內(nèi)的文件數(shù)據(jù)(常用) 
-f :直接列出結(jié)果,而不進(jìn)行排序 (ls 默認(rèn)會(huì)以文件名排序?。?
-F :根據(jù)文件、目錄等信息,給予附加數(shù)據(jù)結(jié)構(gòu),例如: *:代表可可執(zhí)行文件; /:代表目錄; =:代表 socket 文件; |:代表 FIFO 文件; 
-h :將文件大小以人類較易讀的方式(例如 GB, KB 等等)列出來; 
-l :長(zhǎng)數(shù)據(jù)串行出,包含文件的屬性與權(quán)限等等數(shù)據(jù);(常用) 
-n :列出 UID 與 GID 而非使用者與群組的名稱
-r :將排序結(jié)果反向輸出,例如:原本文件名由小到大,反向則為由大到?。?
-R :連同子目錄內(nèi)容一起列出來,等于該目錄下的所有文件都會(huì)顯示出來; 
-S :以文件大小大小排序,而不是用文件名排序; 
-t :依時(shí)間排序,而不是用文件名。 
--color=never :不要依據(jù)文件特性給予顏色顯示; 
--color=always :顯示顏色 
--color=auto :讓系統(tǒng)自行依據(jù)設(shè)置來判斷是否給予顏色 
--full-time :以完整時(shí)間模式 (包含年、月、日、時(shí)、分) 輸出 
--time={atime,ctime} :輸出 access 時(shí)間或改變權(quán)限屬性時(shí)間 (ctime) 而非內(nèi)容變更時(shí)間 (modification time)

2.2 復(fù)制 刪除 移動(dòng)

cp(copy,復(fù)制文件或目錄)

[root@study ~]# cp [-adfilprsu] 來源文件(source) 目標(biāo)文件(destination)
[root@study ~]# cp [options] source1 source2 source3 .... directory 
選項(xiàng)與參數(shù): 
-a :相當(dāng)于 -dr --preserve=all 的意思,至于 dr 請(qǐng)參考下列說明;(常用) 
-d :若來源文件為鏈接文件的屬性(link file),則復(fù)制鏈接文件屬性而非文件本身;
-f :為強(qiáng)制(force)的意思,若目標(biāo)文件已經(jīng)存在且無法打開,則移除后再嘗試一次;
-i :若目標(biāo)文件(destination)已經(jīng)存在時(shí),在覆蓋時(shí)會(huì)先詢問動(dòng)作的進(jìn)行(常用) 
-l :進(jìn)行硬式鏈接(hard link)的鏈接文件創(chuàng)建,而非復(fù)制文件本身; 
-p :連同文件的屬性(權(quán)限、用戶、時(shí)間)一起復(fù)制過去,而非使用默認(rèn)屬性(備份常用); 
-r :遞回持續(xù)復(fù)制,用于目錄的復(fù)制行為;(常用) 
-s :復(fù)制成為符號(hào)鏈接文件 (symbolic link),亦即“捷徑”文件; 
-u :destination 比 source 舊才更新 destination,或 destination 不存在的情況下才復(fù)制。 
--preserve=all :除了 -p 的權(quán)限相關(guān)參數(shù)外,還加入 SELinux 的屬性, links, xattr 等也復(fù)制了。 
最后需要注意的,如果來源文件有兩個(gè)以上,則最后一個(gè)目的文件一定要是“目錄”才行!

rm(刪除)

[root@study ~]# rm [-fir] 文件或目錄 
選項(xiàng)與參數(shù):
-f :就是 force 的意思,忽略不存在的文件,不會(huì)出現(xiàn)警告訊息; 
-i :互動(dòng)模式,在刪除前會(huì)詢問使用者是否動(dòng)作 
-r :遞回刪除啊!最常用在目錄的刪除了!這是非常危險(xiǎn)的選項(xiàng)?。。?

mv(移動(dòng)文件或目錄,重命名)

[root@study ~]# mv [-fiu] source destination
[root@study ~]# mv [options] source1 source2 source3 .... directory 
選項(xiàng)與參數(shù): 
-f :force 強(qiáng)制的意思,如果目標(biāo)文件已經(jīng)存在,不會(huì)詢問而直接覆蓋; 
-i :若目標(biāo)文件 (destination) 已經(jīng)存在時(shí),就會(huì)詢問是否覆蓋! 
-u :若目標(biāo)文件已經(jīng)存在,且 source 比較新,才會(huì)更新 (update)
修改文件名,如 要把 mvtest 改為 mvtest2, [mv mvtest mvtest2]

2.3 獲取路徑的文件名與目錄名稱

  • basename 獲取最后文件名
  • dirname 獲取目錄名
[root@study ~]# basename /etc/sysconfig/network 
network 
[root@study ~]# dirname /etc/sysconfig/network 
/etc/sysconfig

3 文件內(nèi)容查看

3.1 查看文件

cat(由第一行開始顯示文件內(nèi)容)

[root@study ~]# cat [-AbEnTv] 
選項(xiàng)與參數(shù): 
-A :相當(dāng)于 -vET 的整合選項(xiàng),可列出一些特殊字符而不是空白而已; 
-b :列出行號(hào),僅針對(duì)非空白行做行號(hào)顯示,空白行不標(biāo)行號(hào)! 
-E :將結(jié)尾的斷行字符 $ 顯示出來; 
-n :打印出行號(hào),連同空白行也會(huì)有行號(hào),與 -b 的選項(xiàng)不同; 
-T :將 [tab] 按鍵以 ^I 顯示出來; 
-v :列出一些看不出來的特殊字符

tac(從最后一行顯示,cat 的反義詞)

沒有 cat 那些參數(shù),將內(nèi)容反過來展示

nl(顯示的時(shí)候,同時(shí)輸出行號(hào))

[root@study ~]# nl [-bnw] 文件 
選項(xiàng)與參數(shù): 
-b :指定行號(hào)指定的方式,主要有兩種: 
     -b a :表示不論是否為空行,也同樣列出行號(hào)(類似 cat -n); 
     -b t :如果有空行,空的那一行不要列出行號(hào)(默認(rèn)值); 
-n :列出行號(hào)表示的方法,主要有三種: 
     -n ln :行號(hào)在屏幕的最左方顯示; 
     -n rn :行號(hào)在自己字段的最右方顯示,且不加 0 ; 
     -n rz :行號(hào)在自己字段的最右方顯示,且加 0 ; 
-w :行號(hào)字段的占用的字符數(shù)。

more(一頁一頁翻動(dòng))

按鍵使用:
空格鍵:下一頁
Enter:下翻一行
/字符串:查找
q: 立刻離開 more
b: 往回翻頁,只對(duì)文件管用。

less(一頁一頁翻動(dòng))

less 和 more 相似,但是可以往前翻 比 more 有彈性,
more 沒辦法往前翻,less 可以通過 pageup 和 pagedown 前后翻文件

空白鍵 :向下翻動(dòng)一頁;
[pagedown]:向下翻動(dòng)一頁;
[pageup] :向上翻動(dòng)一頁; 
/字串 :向下搜尋“字串”的功能; 
?字串 :向上搜尋“字串”的功能; 
n :重復(fù)前一個(gè)搜尋 (與 / 或 ? 有關(guān)!)
N :反向的重復(fù)前一個(gè)搜尋 (與 / 或 ? 有關(guān)?。?
g :前進(jìn)到這個(gè)數(shù)據(jù)的第一行去; 
G :前進(jìn)到這個(gè)數(shù)據(jù)的最后一行去 (注意大小寫); 
q :離開 less 這個(gè)程序;

head(只看前面幾行)

head [-n number] 文件
-n:后面接數(shù)字,代表幾行
[head -n 20 文件] 顯示文件的前面 20 行
[head -n -100 文件] ,如果是負(fù)數(shù),列出前面所有行數(shù),但不包括后面一百行,后面 100 行不打 印

tail(只看后面幾行)

tail [-n number] 文件
-n : 后面加數(shù)字,行數(shù)
-f: 持續(xù)刷新文件內(nèi)容
[tail -n 20 文件] 顯示文件的后面 20 行
[tail -n +100 文件] 如果是正數(shù),列出所有行數(shù),但是不包括前面 100 行,前面 100 行不打印
[tail -f /log/ss.log] 持續(xù)看日志

3.2 修改創(chuàng)建文件:touch

touch [選項(xiàng)]... 文件...

選項(xiàng)參數(shù):
-a   或--time=atime或--time=access或--time=use  只更改存取時(shí)間。
-c   或--no-create  不建立任何文檔。
-d  使用指定的日期時(shí)間,而非現(xiàn)在的時(shí)間。
-f  此參數(shù)將忽略不予處理,僅負(fù)責(zé)解決BSD版本touch指令的兼容性問題。
-m   或--time=mtime或--time=modify 只更改變動(dòng)時(shí)間。
-r  把指定文檔或目錄的日期時(shí)間,統(tǒng)統(tǒng)設(shè)成和參考文檔或目錄的日期時(shí)間相同。
-t  使用指定的日期時(shí)間,而非現(xiàn)在的時(shí)間。

ll 命令是[ls -l] 的意思

4 文件與目錄的默認(rèn)權(quán)限與隱藏權(quán)限

4.1 文件默認(rèn)權(quán)限: umask

umask 就是指定目前用戶在建立文件或目錄時(shí)候的權(quán)限默認(rèn)值
[umask] 0022,與權(quán)限有關(guān)的是后面三個(gè)數(shù)字
[umask -S] u=rwx,g=rx,o=rx 
查看 umask, -S 可以用符號(hào)類型的方式顯示權(quán)限
umask 的數(shù)字指的是默認(rèn)值需要減掉的權(quán)限,以 umask = 0022 為例,
建立文件時(shí): (-rw-rw-rw-) - (- - - - - w - - w -) ==> -rw-r—r--
建立目錄時(shí):(drwxrwxrwx) – (d----w--w-) ==> drwxr-xr-x

4.2 文件的隱藏屬性

chattr [+-=] [ASacdistu] 文件目錄
常用參數(shù):
+: 增加一個(gè)特殊參數(shù)
-:刪除一個(gè)特殊參數(shù)
=:直接設(shè)置參數(shù)
a: 設(shè)置 a 后,文件只能增加數(shù)據(jù),不能刪除修改數(shù)據(jù),只有 root 才能設(shè)置這屬性
i:可以讓一個(gè)文件不能被刪除 改名 設(shè)置鏈接 也無法寫入或新增數(shù)據(jù)

4.3 文件特殊權(quán)限

  • SUID、SGID、SBIT

4.4 觀察文件類型:file

  • [file 文件] 通過這個(gè) file,可以簡(jiǎn)單判斷文件的格式是什么

5 命令與文件的查找

5.1 腳本文件的查找

which 查找文件

which [-a] command
-a:將所有由 PATH 目錄中可以找到的命令均列出
which 默認(rèn)中的是 PATH 內(nèi)所設(shè)置的目錄

5.2 文件的查找

首選 whereis 和 locate ,實(shí)在找不到了,采用 find,因?yàn)?find 從磁盤找,速度慢,影響磁盤性能
whereis (由一些特定目錄中查找文件)

whereis [-bmsu] 文件或目錄
whereis 找的是那幾個(gè)特定目錄,沒有全系統(tǒng)查詢,主要針對(duì)/bin/sbin 和/usr/share/man 下的 man 
page 文件

locate/updatedb

locate [-ir] keyword
輸入文件部分名稱后,就能得到結(jié)果,locate 查找特別快,是因?yàn)?locate 尋找的數(shù)據(jù)來自自己建立
的數(shù)據(jù)庫/var/lib/mlocate,找不到的時(shí)候去 updatedb,更新數(shù)據(jù)庫文件

find

find [PATH] [option] [action]
[find /etc -newer /etc/passwd] -newer 辨別兩個(gè)文件的新舊關(guān)系
與使用者或者用戶組有關(guān)的參數(shù):
-gid n : n 為用戶組名稱的 ID
-user name: name 為使用者賬號(hào)
-group name: name 為用戶組賬號(hào)
-nouser : 擁有者不在/etc/passwd 中
-nogroup: 擁有用戶組不在/etc/group 中 如
[find /home -user dmtsai] 查找/home 下面屬于 dmtsai 的文件
[find / -nouser] 查找系統(tǒng)中不屬于任何人的文件
與文件權(quán)限及名稱有關(guān)的參數(shù)
-name filename: 查看名稱為 filename 的文件
-size [+-] SIZE: 查看比 SIZE 還大 小 的文件
如 
find / -name passwd 默認(rèn)是全名
find / -name “*passwd*” 關(guān)鍵字

摘自《鳥哥的Linux私房菜》,更多精彩參考 http://cn.linux.vbird.org/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容