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”的參數