Linux操作系統(tǒng)學(xué)習(xí)筆記 4 —— 文件管理

如非事先說明,本篇教程一律使用xshell通過ssh連接到Ubuntu操作系統(tǒng),且為root用戶操作(不明白的話可以看Linux操作系統(tǒng)學(xué)習(xí)筆記 2 哦~)

1.修改文件時(shí)間或創(chuàng)建文件:touch

#touch    newfile     
//touch改文件的三個(gè)時(shí)間(mtime:內(nèi)容修改時(shí)間,ctime:狀態(tài)時(shí)間,權(quán)限與屬性被更改了會(huì)更新這個(gè)時(shí)間,atime:讀取時(shí)間,使用cat去讀取就會(huì)更新該文件的atime)都會(huì)更新為目前的時(shí)間,若該文件不存在,創(chuàng)建新文件,文件大小是0
touch命令創(chuàng)建文件

touch命令更新了一個(gè)文件的ctime
cp   -a   ~/.bashrc  bashrc
ll  bashrc; ll --time=ctime  bashrc; ll  --time=atime  bashrc
touch   bashrc
ll  bashrc; ll --time=ctime  bashrc; ll  --time=atime  bashrc
touch命令執(zhí)行之前

touch命令執(zhí)行之后
-a :相當(dāng)于 -pdr 的意思(參數(shù)pdr分別為:保留權(quán)限,復(fù)制軟鏈接本身,遞歸復(fù)制);
-p :連同檔案的屬性一起復(fù)制過去,而非使用預(yù)設(shè)屬性;
-d :若來源文件為鏈接文件的屬性(link file),則復(fù)制鏈接文件屬性而非檔案本身;
-r :遞歸持續(xù)復(fù)制,用于目錄的復(fù)制行為

每個(gè)文件在Linux下面都會(huì)記錄3個(gè)主要的修改時(shí)間:

  • modification time(mtime,修改時(shí)間):當(dāng)該文件的“內(nèi)容數(shù)據(jù)”更改時(shí),就會(huì)更新這個(gè)時(shí)間。內(nèi)容數(shù)據(jù)指的是文件的內(nèi)容,而不是文件的屬性。
  • status time(ctime,狀態(tài)時(shí)間):當(dāng)該文件的”狀態(tài)(status)”改變時(shí),就會(huì)更新這個(gè)時(shí)間,舉例來說,更改了權(quán)限與屬性,就會(huì)更新這個(gè)時(shí)間。
  • access time(atime,存取時(shí)間):當(dāng)“取用文件內(nèi)容”時(shí),就會(huì)更新這個(gè)讀取時(shí)間。舉例來說,使用cat去讀取 ~/.bashrc,就會(huì)更新atime了。
    ls命令看到的是modify time 用vi等工具編輯一個(gè)文件保存后,modify time會(huì)被修改。用ls -l命令不會(huì)修改文件的access time,但cat命令會(huì)修改access time。

2.改變文件屬性與權(quán)限

  • chmod:改變文件的權(quán)限
  • chown:改變文件所有者
  • chgrp:改變文件所屬用戶組
    Linux中有三種權(quán)限 讀,寫,執(zhí)行 分別對(duì)應(yīng)數(shù)字 1 2 4,對(duì)應(yīng)字母r w x,多種權(quán)限則求和,舉例如果是可讀可寫可執(zhí)行權(quán)限則為7 字母表示為rwx 可讀可執(zhí)行為6 字母表示為wx
cd ~
# 查看.ssh文件夾的權(quán)限
ls   -dl   .ssh
# 去掉所有者執(zhí)行權(quán)限(-x),用戶組設(shè)置為寫權(quán)限(=w),其他添加讀權(quán)限(+r)
chmod    u-x,g=w,o+r   .ssh
ls   -dl   .ssh
chmod    741    .ssh
ls   -dl   .ssh
改變文件權(quán)限

現(xiàn)在我們新建一個(gè)用戶來嘗試更改文件的所有者和所屬用戶組

#添加用戶student
useradd   students
#為其設(shè)置密碼 student 注意執(zhí)行此命令后輸入不會(huì)在屏幕上展示.輸完回車即可
passwd   students
#將.ssh文件夾 更改所有者為students用戶
chown    students    .ssh
ls   -dl   .ssh
#將.ssh文件夾 更改用戶組為students用戶組
chgrp    students   .ssh
ls   -dl   .ssh
#將.ssh文件夾 更改所有者為root用戶組下的root用戶
chown   root:root   .ssh
ls   -dl   .ssh
#將.ssh文件夾 更改所有者為students組下的root用戶
chown    :students    .ssh
ls   -dl   .ssh
更改文件所有者和組

3. 文件默認(rèn)權(quán)限:umask(權(quán)限過濾符)

當(dāng)我們?cè)趧?chuàng)建一個(gè)文件或一個(gè)文件夾時(shí),本來應(yīng)該是滿權(quán)限的,但經(jīng)過umask過濾得到的權(quán)限不是一個(gè)完整的權(quán)限了。當(dāng)我們創(chuàng)建一個(gè)文件的時(shí)候,文件的權(quán)限本來應(yīng)該是666(可讀、可寫,但不可執(zhí)行)。對(duì)于文件并不是666減去umask,而對(duì)于文件夾,確實(shí)是這樣(777減去umask)。

umask        //使用umask查看默認(rèn)權(quán)限  
umask   -S   //使用umask查看默認(rèn)權(quán)限的具體描述
使用umask查看默認(rèn)權(quán)限
mkdir  newDir1  
ll  -d  newDir1
touch  newFile1
ll   newFile1
umask   023  //使用umask設(shè)置默認(rèn)權(quán)限
umask  
umask   -S //使用umask查看默認(rèn)權(quán)限的具體描述
mkdir    newDir2
ll   -d  newDir2
echo     123 >> newFile2
ll   newFile2
修改umask前后對(duì)比

如圖所示,設(shè)置新的umask之后newDir2的默認(rèn)權(quán)限變成了u=rwx,g=rx,o=r,而之前是u=rwx,g=rx,o=rx

4.命令與文件的查詢

1.which尋找可執(zhí)行文件

which   passwd   //尋找命令的完整文件名
which   ifconfig  
#which默認(rèn)是查找PATH內(nèi)所規(guī)范的目錄
which   cd       //cd是內(nèi)置命令,所以找不到,可以用type命令
which尋找可執(zhí)行文件

2. whereis尋找特定文件

-b:只找binary文件
-m:只找在說明文件manual路徑下的文件
-s:只找source源文件

whereis   -b   passwd
whereis   -m   passwd  //只找出跟passwd有關(guān)的“說明文件”文件名
whereis   -s   passwd
whereis尋找特定文件

3. locate尋找關(guān)鍵字文件名

locate   passwd  //在系統(tǒng)中找出所有與passwd相關(guān)的文件名

在完整文件名(包括路徑名稱)當(dāng)中,只要有passwd在其中,就會(huì)被顯示出來。whereis和locate利用數(shù)據(jù)庫來查找數(shù)據(jù),數(shù)據(jù)庫的創(chuàng)建默認(rèn)每天執(zhí)行一次(每個(gè)distribution都不同),可以使用updatedb更新數(shù)據(jù)庫。


locate尋找關(guān)鍵字文件名

使用updatedb更新數(shù)據(jù)庫

4. find 在磁盤上尋找文件

a.與時(shí)間有關(guān)的參數(shù)

find   /   -mtime   0   

0代表當(dāng)前時(shí)間,從現(xiàn)在開始到24小時(shí)內(nèi),所有變動(dòng)過內(nèi)容的文件都會(huì)被列出來!
1代表從現(xiàn)在開始,1*24~2*24之間,即1天前的24小時(shí)內(nèi)
3代表從現(xiàn)在開始,3*24~4*24之間,即3天前的24小時(shí)內(nèi)

與時(shí)間有關(guān)的參數(shù)

find   /etc   -newer   /etc/passwd
//尋找/etc底下的文件,如果文件日期比/etc/passwd新就列出
尋找/etc底下的文件,如果文件日期比/etc/passwd新就列出

b.與用戶或用戶組有關(guān)的參數(shù)

find   /home   -user   students

在/home里面查找屬于students這個(gè)用戶的文件

find   /    -nouser  

-nouser尋找文件的所有者不存在/etc/passwd的人
-nogroup尋找文件的所有用戶組不存在于/etc/group中的文件
用戶自行由網(wǎng)絡(luò)上面下載文件時(shí)會(huì)發(fā)生,如果系列里面某個(gè)賬號(hào)刪除了,但是該賬號(hào)已經(jīng)在系統(tǒng)內(nèi)創(chuàng)建很多文件時(shí),就可能會(huì)發(fā)生無主文件存在。

尋找文件的所有者不存在于/etc/passwd的人

c.與文件權(quán)限及名稱有關(guān)的參數(shù)

find    /    -name   passwd
找出文件名為passwd的這個(gè)文件

d.其他可進(jìn)行的參數(shù)

find    /    -size    1000k //查找大小大于1000kB的文件
find    /    -size    1000M //查找大小大于1000MB的文件
  • c: 表示字節(jié)數(shù)
  • k: 表示 kilo bytes (1024字節(jié))
  • w: 字 (2字節(jié))
  • M:兆字節(jié)(1048576字節(jié))
  • G: 千兆字節(jié) (1073741824字節(jié))

5. grep用來在內(nèi)容中尋找特定內(nèi)容,并且支持正則表達(dá)式

grep     [-acinv]    ‘搜尋字串’   filename
#在 /etc/passwd 查找 student 字符串
grep    student      /etc/passwd
#搜索后顯示文件的一行
grep舉例
最后編輯于
?著作權(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)容