1. 程式人生 > >Linux 文件目錄管理的指令

Linux 文件目錄管理的指令

就是 ascii soft use 絕對路徑 所在 內存 http 指定

1.知識點:絕對路徑:寫法從/(根目錄開始) /usr/share/doc

相對路徑:不從/開始 如cd ../man

如果清楚文件夾內部情況,建議使用相對路徑在文件夾之間跳轉,而不用絕對路徑,每次都是一長串地址

. 代表當前層目錄

..代表上層目錄

~代表自己的根目錄

~user(user是代指用戶哇!)代表到user這個人的根目錄

2.cd 與 pwd

cd ..回到上一層目錄

cd ../home相對路徑的寫法

cd /var/www/html 絕對路徑的寫法

cd 回到用戶的根目錄

cd ~ 回到用戶(個人)的根目錄

cd ~xwc 回到xwc用戶的根目錄

pwd 顯示當前目錄(print working directory)

3.mkdir 與 rmdir

mkdir 目錄名稱 這個必須一層一層建目錄

rmdir 目錄名稱 這個必須一層一層的刪除

否則就會提示不為空技術分享圖片

要是需要(不假思索地)都刪除,可以使用指令 rm-rf h

技術分享圖片

技術分享圖片

全沒了(所以不大安全)

4.PATH環境變量

什麽是PATH呢

當我們執行一個指令時,系統會依照PATH的設定到PATH定義的每個路徑下搜尋文件,先搜尋到的指令文件先被執行。

怎麽看呢?

指令 echo $PATH

技術分享圖片

如何將/root加到PATH中呢?(知道就好)

PATH=“$PATH”:/root(感覺跟賦值語句一樣)

5.文件與目錄管理指令ls cp rm mv

ls顯示文件名稱屬性

-a列出所有文件(包括隱藏)

-l詳細列出,連同文件大小,屬性數據

-S以文件大小排序

--color=never/always/auto(不顯示顏色,均顯示顏色,由系統自行判斷)

ls -l的簡寫 ll(兩個小寫的L)這個命令可以說是超級方便了。

cp 復制

-d 我復制個快捷方式到指定位置

-r 目錄的復制

技術分享圖片

技術分享圖片原本是空文件夾的3裏面多了個1

-s 做成鏈接文件

-u 如果源文件較新,或者沒有目標文件,才會進行復制動作。可用於備份操作。

rm 刪除

-i默認參數 詢問是否刪除

-rf 瘋狂刪除

mv 移動,變更文件名

mv x x.old 重命名

mv x1 x2 x3... /root 即把x1 x2 x3文件一並移動到root下

6.查看文件內容

cat與tac

cat -n查看信息時把行號也給我列出來

(Concatenate 連續的縮寫,不過較不常見,配合more和less比較好)

tac 反向顯示(最後一行在最上面)

more 與less

more ~/.txt一頁一頁的顯示文件內容

ls -al|more 把ll一頁一頁的顯示出來

相較於more, less更靈活,

可以按PgUp PgDn翻頁

less 還能查找,優秀

head與tail

查看文檔文檔開頭,文檔結尾

tail -n 5 1.txt(只顯示1.txt的後五行)

nl 與cat -n相似

od 讀取非ASCII數據文件,此時使用vi more lesss指令看不出來內容。輸出來的數據都是內存中的數據。

7.鏈接文件的介紹

what is inode?

介紹inode之前 我們先看硬盤結構的大體介紹

圓形 每個硬盤盤頭都有一個可以讀寫的磁頭

磁頭固定,繞硬盤盤片轉一圈,軌跡就是磁道Track,

所有盤片相同磁道號的集合成為磁柱,每一磁道被劃分了很多區域,每個區域叫一個扇區。扇區是硬盤的最小存儲物理量,約512字節。

硬盤分割後,格式化。格式化要考慮兩個方面,Block和inode,Block是磁盤可以記錄的最小單位,由數個扇區組成。

Block是記錄文件內容數據的區域,inode是記錄該文件屬性及放置在哪個Block的信息,所以每個文件都會占用一個inode,所以我們就知道,一個分區被格式化為一個文件系統後,基本上他都一定會有inode table 與數據區兩大塊。

ln(唉,終於要說這個指令了)

相當於windows的快捷方式,不過鏈接功能要好用得多。連接分硬鏈接和符號鏈接。

硬鏈接:當系統要讀取一個文件時,他會先讀取inode table,再建一個inode到文件Block,沒有錯,這兩個inode都可以到我們需要的Block那裏去。但是“目錄”本身是消耗inode的,這樣,缺點之一:硬鏈接就不能鏈接目錄,第二,不能跨文件系統。

符號鏈接:建個文件,相當於路牌,指向所需文件。

測試案例:

技術分享圖片(cp 最後那個 "." 別忘了)

準備工作,建文件夾

0原始信息:

技術分享圖片

1硬鏈接信息:

技術分享圖片

註意看,上面那個數字變成2了(好神奇啊!!),這就表示占用了inodes。

2符號鏈接信息

技術分享圖片

註意passwd-soft會指向另一個文件,而且,最前面屬性為1,此外,他是一個獨立文件。先刪除passwd,我們看一下內容。

3使用more

技術分享圖片

(好神奇)

如果使用-s參數,符號鏈接雖然跟windows的快捷方式相像,但不同,在windows中,你怎麽修改快捷方式那個圖標,甚至內部信息,都不會對原文件有一絲一毫的影響(撐死對不上號打不開了),但是Linux不同,你修改鏈接文件,被指向的文件也會修改的。

如果你:ln -s /bin /root/bin /root/bin中的東西其實都是/bin的。

8.文件與目錄權限的指令

chown chgrp chmod

-R 可以一下改變一個目錄內所有文件的權限噢

umask 可以修改建立文檔時的權限噢

用戶建文檔默認權限是666

建文件夾默認是777

你可以 umask 111

之後再建個文件夾 就會是 666了

chattr lsattr

技術分享圖片

技術分享圖片

chattr +i 1.txt 如此就無法修改這個txt文檔了

chattr -i 1.txt 解除該屬性

可是我們如何看這個文件有哪些屬性呢?

沒錯 lsattr就是來看的

-a 將隱藏文件的屬性也顯示

-R將子目錄的數據也一並顯示出來

這兩個指令要謹慎使用。+i後就沒法變了。

9.搜尋文件或目錄

which查看可執行文件的位置

whereis查看文件的位置

locate 配合數據庫查看文件位置

find 實際搜尋硬盤查詢文件名稱

which 別忘了是查看可執行文件的位置(eg: passwd)

技術分享圖片

whereis

技術分享圖片

(指令有的翻譯了,有的沒翻譯。)

從上到下依次是只找二進制,只找說明文件manual路徑下的文件,只找source源文件,-u是沒有說明文檔的文件。

whereis -m passwd

技術分享圖片

僅搜尋man page 所在的目錄。

whereis 相對於find快很多,這是為什麽呢

因為Linux系統將系統內的所有文件都記錄在一個數據庫文件中,所以就快了(??)。

locate

和whereis 一樣都是從數據庫文件中來找東西,但是呢,Linux的數據庫默認是一周更新一次,所以你剛剛刪掉的,你會再找到,你剛剛添加的,你會在下一周才能找到。如何解決這個問題呢?

updatedb閃亮登場

來讓我們看看吧

技術分享圖片

首先 touch 建個文檔123456

用locate去數據庫文件中找,(沒更新呢,怎麽會找到呢)

updatedb更新一下,

再找,找到了,然後我們刪除一下

技術分享圖片

刪除了,可是還能在數據庫文件找到,更新一下,就找不到了。嗯就是這樣。

那麽到底要建立哪些數據庫呢,是否全部都要建立,似乎不需要,可以選擇需要建立數據數據庫的目錄。在/etc/updatedb.conf內設定。

find(這個不簡單,我之前還天真的以為只是查找)

技術分享圖片

(好想跳過,而且書上說了,由於find在尋找數據時,相當耗硬盤(那可是遞歸呀。。),所以沒事不要用find,用更棒的locate和whereis代替,不過還是看看吧)

1.時間

-atime n 將n*24小時內被存取過的文件列出來

-ctime n 將n*24小時內被改變、新增的文件或目錄列出來

-mtime n 將n*24小時內被修改過的文件列出來

-newer file 把比file還要新的文件列出來

2.使用名稱

-gid n 尋找群組ID為n的文件

-group n 尋找群組名稱為n的文件

-uid n 尋找擁有者ID為n的文件

-user n 尋找擁有者名稱為n的文件

-name file 找file(之前只知道這一條)

-type type 按類型找(後面那個type可以是b,c,d,p,l,s)

技術分享圖片

10.SetUID,SetGID,Sticky bit 與file指令

UID用戶代號

GID群組代號

可以用 more /etc/passwd 查看系統中所有賬號

如果新建一個用戶,UID、GID都是0,那就是root身份。

SUID、SGID又是什麽?

Set UID(SUID)的主要功能就是在某個文件執行期間具有文件擁有者的權限。

就是下圖中那個rw “s”,這裏是SUID,如果是-rwxr-sr-x這裏就是SGID。

技術分享圖片

當一個文件具有SUID時,同時others群組擁有x,那麽當others群組執行該程序時,others群組將擁有該文件的owner權限。

(owner:?????就因為一個SUID,別人就能和我一樣高貴了?)

(可不是嘛,所以涉及到變更一個文件使之具有SUID,SGID,要萬分謹慎)

Sticky bit

為什麽 othrs的x沒有用s代替的情況呢?

沒必要。

所有人都可執行,他們自然有權限。

這裏有個新的屬性(Sticky bit) t,最大的用處:具有t屬性的目錄,其下的文件或目錄只有文件擁有者及root 才有權刪除。

在我們的系統中預設有一個這樣的目錄,辣就是/tmp

技術分享圖片

最後一行的tmp “t“引人註目

這說明了什麽,在這個目錄裏,普通用戶可以新建修改任何文件,但是僅能刪除自己建立的文件,除非你是root。

來讓我們試試吧

root登陸

到/tmp裏建個文件夾shanbudiao

修改權限777

技術分享圖片

用普通賬戶登陸

嘗試刪除

技術分享圖片

失敗了。

最後一個指令 file

file 【文件名】

可以查看文件類型,還可以看是否被加入SUID等信息。

技術分享圖片

(文件部分的指令就到此結束了,o(* ̄▽ ̄*)ブ)

Linux 文件目錄管理的指令