六、Linux檔案與目錄管理

1、目錄與路徑

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

  • 相對(duì)路徑:路徑的寫法一定由根目錄/寫起,例如/usr/share/doc
  • 絕對(duì)路徑:路徑的寫法不是由/寫起;
    絕對(duì)路徑的正確度比較好。

1.2、目錄的相關(guān)操作:cd,pwd,mkdir,rmdir

  • . 代表此層目錄
  • .. 代表上一層目錄
  • - 代表前一個(gè)工作目錄
  • ~ 代表目前用戶身份所在的家目錄
    -~ account 代表account這個(gè)用戶的家目錄(account是這個(gè)賬號(hào)的名稱)
    cd:變換目錄
    pwd:顯示目前所在的目錄 pwd 【-P】
    mkdir:建立新目錄 mkdir 【-mp】
    mkdir test1
    mkdir -m 711 testing
    rmdir:刪除空的目錄 mkdir 【-p】
    rmdir test1
    注意:rmdir只能刪除空的目錄

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

1)當(dāng)我們執(zhí)行一個(gè)指令的時(shí)候,例如ls,系統(tǒng)會(huì)依照PATH的設(shè)定去每個(gè)PATH的定義的目錄下搜尋文件名為ls的可執(zhí)行文件,如果在PATH定義的目錄中含有多個(gè)文件名為ls的可執(zhí)行文件,那么先搜尋到的同名指令先被執(zhí)行
2)echo $PATH 查看哪些目錄被定義出來了,$表示后面接的是變量
3)將/root 加入到PATH目錄:PATH="$PATH":/root

注意:

  • 不同身份使用者預(yù)設(shè)的PATH不同,默認(rèn)能夠隨意執(zhí)行的指令也不同;
  • PATH是可以修改的,所以一般使用者還是可以透過修改PATH來執(zhí)行位于/sbin或/usr/sbin下的指令來查詢;
  • 使用絕對(duì)路徑或相對(duì)路徑直接指定某個(gè)指令的文件名來執(zhí)行,會(huì)比搜索PATH來的正確;
  • 指令應(yīng)該放置到正確的目錄下,執(zhí)行才會(huì)比較方便;
  • 本目錄(.)最好不要放置到PATH當(dāng)中;

2、檔案與目錄管理

檔案與目錄的管理,主要包括顯示屬性、拷貝、刪除檔案以及移動(dòng)檔案或目錄;

2.1、檔案與目錄的檢視:ls

ls 【-aAdfFhilnrRSt】 目錄名稱
ls 【--color={never,auto,always}】 目錄名稱
ls 【--full-time】 目錄名稱

2.2、復(fù)制、刪除與移動(dòng):cp,rm,mv

  • cp:復(fù)制檔案或目錄
    cp 【-adfilprsu】來源文件 目標(biāo)文件
    cp ~/.bashrc /tmp/bashrc
  • rm:移除檔案或目錄
    rm 【fir】檔案或目錄
  • mv:移動(dòng)檔案與目錄,或更名
    mv 【fiu】source destination
    注:mv還可以用于變更檔名 mv mvtest mvtest2

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

用斜線"/"來分辨檔案和目錄;
basename /etc/sysconfig/network 獲取到最后的檔名
dirname /etc/sysconfig/network 取得目錄名

3、檔案內(nèi)容查閱

最長使用的顯示檔案內(nèi)容的指令可以說是cat,more和less了。此外,如果要查看一個(gè)很大型對(duì)的檔案(好幾百兆),但是我們只需要后端的幾行字而已,用tail,才外tac這個(gè)指令也可以達(dá)到;

  • cat 由第一行開始顯示檔案內(nèi)容;
  • tac 從最后一行開始顯示,可以看出tac是cat的倒著寫;
  • nl 顯示的時(shí)候,順道輸出行號(hào);
  • more 一頁一頁的顯示檔案內(nèi)容;
  • less與more類似,但比more更好的是,可以往前翻頁;
  • head 只看頭幾行;
  • tail 只看尾巴幾行;
  • od 以二進(jìn)制的方式讀取檔案內(nèi)容

3.1、直接檢視檔案內(nèi)容:cat,tac,nl

  • cat cat 【-AbEnTv】檔案
  • nl:添加行號(hào)打印 nl 【-bnw】 檔案

3.2、可翻頁檢視:more,less

  • more:一頁一頁翻動(dòng)
    例如:more /etc/man.config
    空格鍵(space):代表向下翻一頁
    Enter:代表向下翻一行
    /字符串:代表在這個(gè)現(xiàn)實(shí)的內(nèi)容當(dāng)中,向下搜尋字符串
    :f 立刻顯示出文件名機(jī)目前顯示的行數(shù)
    q:離開
    b:代表往回翻頁,只對(duì)檔案有用,對(duì)管線無用
  • less:一頁一頁翻動(dòng)
    例如:less /etc/man.config
    空格鍵:向下翻動(dòng)一頁
    pagedown:向下翻動(dòng)一頁
    pageup:向上翻動(dòng)一頁
    /字符串:向下搜尋字符串的功能;
    ?字符串:向上搜尋字符串的功能;
    n:重復(fù)前一個(gè)搜尋
    N:反向的重復(fù)前一個(gè)搜尋
    q:離開

3.3、資料截取:head,tail

  • head:取出前面幾行
    head 【-n number】 檔案
    例如:head -n 20 /ect/man.config
  • tail:取出后面幾行
    tail 【-n number】 檔案
    例如:tail /etc/man.config

3.4、非純文本:od

od 【-t TYPE】 檔案
-t:后面可接各種類型的輸出;
a:利用默認(rèn)的字符來輸出;
c:使用ASCII字符來輸出;
d:利用十進(jìn)制來輸出數(shù)據(jù);
f:利用浮點(diǎn)數(shù)來輸出數(shù)據(jù);
o:利用八進(jìn)制來輸出數(shù)據(jù);
x:利用十六進(jìn)制來輸出數(shù)據(jù);

3.5、修改檔案時(shí)間與建制新檔:touch

  • modification time (mtime):當(dāng)改檔案的內(nèi)容數(shù)據(jù)變更時(shí),就會(huì)更新這個(gè)時(shí)間,內(nèi)容數(shù)據(jù)指的是檔案的內(nèi)容,而不是檔案的屬性或權(quán)限;
  • status time (ctime):當(dāng)該檔案狀態(tài)改變時(shí),就會(huì)更新這個(gè)時(shí)間,舉例來說,像是權(quán)限與屬性被更改了,都會(huì)更新這個(gè)時(shí)間;
  • access time (atime)當(dāng)該檔案的內(nèi)容被取用時(shí),就會(huì)更顯這個(gè)讀取時(shí)間;
    touch 【acdmt】 檔案
    功能:建立一個(gè)空的檔案;將某個(gè)檔案日期修訂為目前(mtime與atime)

4、檔案與目錄的默認(rèn)權(quán)限與隱藏權(quán)限

除了基本r,w,x權(quán)限外,在Linux的Ext2、Ext3文件系統(tǒng)下,我們還可以設(shè)定其他的系統(tǒng)隱藏屬性,這部分可以使用chattr來設(shè)定,而以lsattr來查看,最重要的屬性就是可以設(shè)定其不可修改的特性,讓檔案的擁有者都不能進(jìn)行修改;

4.1、檔案預(yù)設(shè)權(quán)限:umask

umask:就是指定用戶在建立檔案或目錄時(shí)候的權(quán)限默認(rèn)值;
umask
umask -S
umask的分?jǐn)?shù)指的是該默認(rèn)值需要減掉的權(quán)限;
預(yù)設(shè)情況:

  • 若使用者建立為檔案,則預(yù)設(shè)沒有可執(zhí)行x權(quán)限,即只有rw這兩個(gè)項(xiàng)目,也就是最大為666,預(yù)設(shè)權(quán)限:-rw-rw-rw
  • 若用戶建立為目錄,則由于x與是否可以進(jìn)入此目錄有關(guān),因此默認(rèn)所有權(quán)限均開啟,即777分,預(yù)設(shè)權(quán)限:drwxrwxrwx
    例如:umask 002

4.2、檔案隱藏權(quán)限:chattr,lsattr

  • chattr:配置文件案隱藏屬性
    chattr 【+-=】【ASacdistu】檔案或目錄名稱
  • lsattr:顯示檔案隱藏屬性
    lsattr 【-adR】檔案或目錄

4.3、檔案特殊權(quán)限:SUID,SGID,SBIT權(quán)限設(shè)定

  • SUID:Set UID
    當(dāng) s 這個(gè)標(biāo)志出現(xiàn)在檔案擁有者的 x 權(quán)限上時(shí)
    例如: -rwsr-xr-x
    SUID 權(quán)限僅對(duì)二進(jìn)制程序(binary program)有效;
    執(zhí)行者對(duì)于該程序需要具有 x 的可執(zhí)行權(quán)限;
    本權(quán)限僅在執(zhí)行該程序的過程中有效 (run-time);
    執(zhí)行者將具有該程序擁有者 (owner) 的權(quán)限
  • Set GID
    當(dāng)s標(biāo)志在檔案擁有者的x項(xiàng)目為SUID,那s在群組的x時(shí)則稱為SGID
    例如:-rwx--s--x
    與 SUID 不同的是,SGID 可以針對(duì)檔案或目錄來設(shè)定!如果是對(duì)檔案來說, SGID 有如下的功能:
    SGID 對(duì)二進(jìn)制程序有用;
    程序執(zhí)行者對(duì)于該程序來說,需具備 x 癿權(quán)限;
    執(zhí)行者在執(zhí)行的過程中將會(huì)獲得該程序群組的支持!
    除了 binary program 之外,事實(shí)上 SGID 也能夠用在目錄上,這也是非常常見的一種用途! 當(dāng)一個(gè) 目錄設(shè)定了 SGID 的權(quán)限后,他將具有如下的功能:
    用戶若對(duì)于此目錄具有 r 不 x 的權(quán)限時(shí),該用戶能夠進(jìn)入此目錄;
    用戶在此目錄下的有效群組(effective group)將會(huì)變成該目錄的群組;
    用途:若用戶在此目錄下具有 w 的權(quán)限(可以新建檔案),則使用者所建立的新檔案,該新檔案的群組與此目錄的群組相同。
  • SBIT:只針對(duì)檔案有效,對(duì)目錄已經(jīng)沒有效果了
    當(dāng)用戶對(duì)于此目錄具有 w, x 權(quán)限,亦卲具有寫入的權(quán)限時(shí);
    當(dāng)用戶在該目錄下建立檔案或目錄時(shí),僅有自己不 root 才有權(quán)力刪除該檔案
  • SUID/SGID/SBIT權(quán)限的設(shè)定
    在三個(gè)數(shù)字之前在加上一個(gè)數(shù)字的話,最前面的那個(gè)數(shù)字即代表這幾個(gè)權(quán)限了
    SUID:4,SGID:2,SBIT:1
    例如:chmod 4755 filename
    另外還有大S和大T產(chǎn)生的

4.4、觀察文件類型:file

如果想要知道某個(gè)檔案的基本數(shù)據(jù),例如是屬于ASCII或者是data檔案,或者是binary,且其中有沒有用到動(dòng)態(tài)函式庫等信息,就可以用file這個(gè)指令來檢閱;
例如:file ~/.bashrc

5、指令與檔案的搜尋

5.1、腳本文件名的搜尋:which

which:尋找執(zhí)行檔
which 【a】 commod

5.2、檔案檔名的搜尋:whereis,locate,find

  • whereis:尋找特定檔案
    whereis 【-bmsu】 檔案或目錄名
    Linux系統(tǒng)會(huì)將系統(tǒng)內(nèi)的所有檔案都記錄在一個(gè)數(shù)據(jù)庫檔案里面,而當(dāng)使用whereis或者locate時(shí),都會(huì)以此數(shù)據(jù)庫檔案的內(nèi)容為準(zhǔn);
  • locate
    locate 【-ir】keyword
    使用locate是有限制的:
    因?yàn)樗墙?jīng)由數(shù)據(jù)庫來搜尋的,而數(shù)據(jù)庫的建立默認(rèn)是在每天執(zhí)行一次 (每個(gè) distribution 都不同,CentOS 5.x 是每天更新數(shù)據(jù)庫一次!),所以當(dāng)你新建立起來的檔案, 即還在數(shù) 據(jù)庫更新之前搜尋該檔案,那么 locate 會(huì)告訴你『找不到!』呵呵!因?yàn)楸仨氁聰?shù)據(jù)庫呀!
    更新數(shù)據(jù)庫方法:updatedb
  • find
    find 【PATH】【option】【action】

6、權(quán)限與指令間的關(guān)系(極其重要)

  • 讓用戶能進(jìn)入某目錄稱為可工作目錄的基本權(quán)限
    可使用的指令:例如 cd 等變換工作目錄指令;
    目錄所需權(quán)限:用戶對(duì)這個(gè)目錄至少需要具有 x 的權(quán)限
    額外需求:如果用戶想要在這個(gè)目錄內(nèi)利用 ls 查閱文件名,則用戶對(duì)此目錄還需要 r 的權(quán)限。
  • 用戶在某個(gè)目錄內(nèi)讀取一個(gè)檔案的基本權(quán)限為何?
    可使用的指令:例如本章談到的 cat, more, less 等等
    目錄所需權(quán)限:用戶對(duì)這個(gè)目錄至少需要具有 x 權(quán)限;
    檔案所需權(quán)限:使用者對(duì)檔案至少需要具有 r 的權(quán)限才行!
  • 讓使用者可以修改一個(gè)檔案的基本權(quán)限為何?
    可使用的指令:例如 nano 或未來要介紹的 vi 編輯器等;
    目錄所需權(quán)限:用戶在該檔案所在的目錄至少要有 x 權(quán)限;
    檔案所需權(quán)限:使用者對(duì)該檔案至少要有 r, w 權(quán)限
  • 讓一個(gè)使用者可以建立一個(gè)檔案的基本權(quán)限為何?
    目錄所需權(quán)限:用戶在該目錄要具有 w,x 的權(quán)限,重點(diǎn)在 w 啦!
  • 讓用戶進(jìn)入某目錄并執(zhí)行該目錄下的某個(gè)指令之基本權(quán)限為何?
    目錄所需權(quán)限:用戶在該目錄至少要有 x 的權(quán)限;
    檔案所需權(quán)限:使用者在該檔案至少需要有 x 的權(quán)限
最后編輯于
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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