學習Linux 《鳥哥的Linux私房菜 基礎學習篇(第三版)》--第7章 Linux檔案與目錄管理 筆記

Linux目錄與路徑

特殊的目錄

   .  代表當前目錄
   ..  代表上級目錄
   -   代表前一個工作目錄
   ~  代表(目前登錄用戶)home目錄  如當前登錄人爲master則代表(/home/master)

常見的處理目錄的指令

  • cd 切換目錄
  • pwd 顯示當前目錄
  • mkdir 建立一個新目錄
  • rmdir 刪除一個空的目錄
cd (Change Directory) 
 cd ~master 進入master的home目錄;   cd 回到登錄人員home目錄

pwd (Print Working Directory) [-P] 顯示當前路徑   
  pwd -P(P是大寫)顯示實際路徑而不是鏈接路徑

mkdir [-mp] 新建目錄       
mkdir [-mp] 目錄名稱     -m:設置目錄權限    -p:建立遞歸目錄(包括所需上層目錄)

rmdir [-p] 刪除目錄  
mkdir[-p] 目錄名稱 -p 連同上級空目錄一起刪除

複製、刪除和移動

  • cp(copy)
  • rm(remove)
  • mv(move)

cp [-adfilprsu] 源文件 目標文件

cp [-options] source1 source2 source3 source4 ... directory



rm [-fir] 文件或目錄


mv [-fiu] source directory
mv [-option] source1 source2 source3 source4 ... directory


另外,獲取文件的文件名,或者路徑名還有兩個命令:basename filename 和 dirname filename


查看文件內容

查看文件內容有以下這些常用命令

cat  由第一行開始顯示檔案內容 
tac  從最後一行開始顯示,可以看出 tac 是 cat 的倒着寫! 
nl   顯示的時候,順道輸出行號! 
more 一頁一頁的顯示文件內容 
less 與 more 類似,但是比 more 更好的是,他可以往前翻頁! 
head 只看頭幾行 
tail 只看尾巳幾行 
od   以二進制的方式讀取文件內容! 

cat(concatenate)[-ABeNTV]



nl [-bnw] 文件

more 和 less 命令能提供一頁一頁的翻頁查看功能

more  filename
1、空格鍵 (space):代表向下翻一頁; 
2、Enter         :代表向下翻『一行』; 
3、/字符串         :代表在這個顯示癿內容弼中,向下搜尋『字符串』這個關鍵詞; 
4、:f            :立刻顯示出文件名以及目前顯示的行數; 
5、q             :代表立刻離開 more ,不再顯示該檔案內容。 
6、b 或 [ctrl]-b :代表往回翻頁,不過過這個命令對文件有用,對管線無用。 

less filename(逐頁翻動)
1、空格鍵    :向下翻一頁; 
2、[pagedown]:向下翻一頁; 
3、[pageup]  :向上翻一頁; 
4、/字符串     :向下搜尋『字符串』
5、?字符串     :向上搜尋『字符串』 
6、n         :重複前一個搜尋 (與 / 或 ? 有關!) 
7、N         :反向的重複前一個搜尋 (與 / 或 ? 有關!) 
8、q         :離開 less 這個程序; 
9、j           :向下一行
10、k :向上一行

修改文檔時間或創建新文檔:touch

在使用ls命令時  可以看到很多時間,其實主要的就是以下三個:默認顯示的是mtime
  • modification time (mtime)在修改文件內容時改變
  • status time (ctime)在文檔狀態發生改變時變化,例如修改文檔權限
  • access time (atime)在文檔內容被讀取時修改,例如cat 文件
touch [-acdmt] 文件
-a :修改access time;
-c :修改文件時間,若該文件不存在則不建立新文件;
-d :後面可以接要修訂的日期而不是使用當前時間,也可以用 --date="日期或時間"
-m:修改mtime;
-t :後面可以接需要修改的時間,格式爲[YYMMDDhhmm]

文件和目錄的默認權限和隱藏權限

除了基本 r, w, x權限外,在 Linux的Ext2/Ext3 文件系統下,我們還可以設定其他的系統隱藏屬性,
這部份可使用 chattr 來設定,而以 lsattr 來查看,最重要的屬性就是可以設定其不可修改的特性!
就連文件的擁有者都不能進行修改這個屬性是相當重要的,尤其是在安全機制上面 (security)! 

文件預設權限:umask

umask 就是指定[目前用戶在建立文件或目錄時候的權限默認值]。

查看的方式有兩種,一種是直接輸入umask可以產看到數字形態的權限設定分數,一種是加入-S(Symbolic),就會以符號的形式顯示出權限。但是可以看到umask有四組數字,這裏的第一個就是特殊權限的權限,後三個就是user group 和other了。

需要注意的是,在默認權限的屬性上,目錄與文件是不一樣的,x對於目錄來說是很重要的,但是一般的文件是不需要x的,因此默認情況下:
       如果是文件,則預設的是沒有X權限的,只有rw,因此最大值爲666 默認的是 -rw-rw-rw-
       如果是目錄的話,則是可以進入的,有X權限,因此默認爲777 drwxrwxrwx
但是需要注意的是!!!umask的分數指的是[該默認權限需要扣除的權限!]因爲r、w、x分別是4、2、1.
所以當要去除掉寫的權限時,就是輸入2.

拿上面的例子來說,因爲umask爲022,所以user並沒有去除任何權限,不過group 和 other都拿掉了2權限,那麼,當用戶
創建文件時:(-rw-rw-rw-) - (-----w--w-) == > -rw-r--r--
創建目錄時:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
下面來試一下


修改umask

例如想讓group中擁有w權限


關於umask的設定可以在 /etc/bashrc 查看


文件隱藏屬性

chattr (配置文件隱藏屬性)

chattr [+-=] [ASacdistu] 文件或目錄    i 和 a會比較常使用




lsattr [-adR] 文件或目錄


文件的特殊權限 SUID、SGID、SBIT

Set UID

當s標誌在文件擁有着(user)的執行位置x上時
SUID 權限僅對二進制程序(binary program)有效; 
執行者對於該程序需要具有 x 的可執行權限; 
本權限僅在執行該程序的過程中有效 (run-time); 
執行者將具有該程序擁有者 (owner) 的權限。 
SUID 僅可用在binary program 上, 不能夠用在 shell script 上面

Set GID

當s標誌在文件或者目錄的(group)的執行位置x上時

SUID可以針對文件和目錄設置

SGID 對二進制程序有用; 
程序執行者對於該程序來說,需具備 x 的權限; 
執行者在執行的過程中將會獲得該程序羣組的支持。


目錄設定了 SGID 的權限後,他將具有如下的功能: 
用戶若對亍此目錄具有 r 和 x 的權限時,該用戶能夠進入此目錄; 
用戶在此目錄下的有效羣組(effective group)將會變成該目錄的羣組; 
用途:若用戶在此目錄下具有 w 的權限(可以新建檔案),則使用者所建立的新檔案,該新檔案的羣組與此目錄的羣組相同。 

Sticky Bit

SBIT僅對於目錄有效:
當用戶對於此目錄具有 w, x 權限,亦具有寫入的權限時; 
當用戶在該目錄下建立檔案或目錄時,僅有自己和 root 纔有權力刪除該檔案 。

SUID/SGID/SBIT 權限設定

在權限數字前再添加一個數字就可以了
4 爲 SUID 
2 爲 SGID 
1 爲 SBIT 

例如要將一個文件權限改爲『-rwsr-xr-x』時,由於 s 在用戶權力中,所以是 SUID ,因此, 在原先癿 
755 之前還要加上 4 ,也就是:『 chmod 4755 filename 』來設定!

也可以通過符號法來處理,其中 SUID 爲 u+s ,而 SGID 爲 g+s ,SBIT 則是 o+t。  

查看文件類型:file

如果想知道文件是什麼類型,例如是屬亍 ASCII 或者是 data 文件,或者是 binary , 且其中
有沒有使用動態函數庫 (share library) 等等的信息,就可以利用 file 這個命令來查看。



搜索可執行命令 which [-a] command
搜索文件 whereis或者是locate 如果找不到了再用find
whereis和locate使用數據庫來查詢的,比較快

whereis [-bmsu] 文件或目錄

-b 只查找binary類型文件
-m 只找在說明文件manual路徑下的文件
-s  只找source來源文件
-u   搜索不在上面三個目錄中的文件

locate [-ir] keyword

-i :忽略大小寫差異
-r :後面可以接正則表達式

locate是使用自己的數據庫進行查詢,因此速度很快。locate數據庫建立在/var/lib/mlocate.db
但是數據庫是需要更新的,centos 默認的是一天更新一次,如果需要更新數據庫可以使用updatedb命令

find

find [PATH] [option] [action] 
find /home -size +500k -exec ls -l {} \;

-exec後面可以接要執行的操作 {}表示find的結果 \;表示結束。 ;千萬不能漏掉,不然會提示find: 遺漏“-exec”的參數



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章