分类: LINUX
2009-02-05 17:30:02
. 代表此層目錄
.. 代表上一層目錄
- 代表前一個工作目錄
~ 代表『目前使用者身份』所在的家目錄
~account 代表 account 這個使用者的家目錄(account是個帳號名稱)
ls:-a :全部的檔案,連同隱藏檔( 開頭為 . 的檔案) 一起列出來(常用)
-d :僅列出目錄本身,而不是列出目錄內的檔案資料(常用)
-l :長資料串列出,包含檔案的屬性與權限等等資料;(常用)
ls [--full-time] 目錄名稱
复制\删除\移动
#cp [-adfilprsu] 來源檔(source) 目標檔(destination)
-a :相當於 -pdr 的意思,至於 pdr 請參考下列說明;(常用) -d :若來源檔為連結檔的屬性(link file),則複製連結檔屬性而非檔案本身;
-i :若目標檔(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用)
p :連同檔案的屬性一起複製過去,而非使用預設屬性(備份常用);
-r :遞迴持續複製,用於目錄的複製行為;(常用)
cp -r /etc/ /tmp # 還是要再次的強調喔! -r 是可以複製目錄,但是,檔案與目錄的權限可能會被改變 # 所以,也可以利用『 cp -a /etc /tmp 』來下達指令喔!尤其是在備份的情況下!
rm (移除檔案或目錄)
rm [-fir] 檔案或目錄 選項與參數: -f :就是 force 的意思,忽略不存在的檔案,不會出現警告訊息; -i :互動模式,在刪除前會詢問使用者是否動作 -r :遞迴刪除啊!最常用在目錄的刪除了!這是非常危險的選項!!!
mv (移動檔案與目錄,或更名)
[root@www ~]# mv [-fiu] source destination
選項與參數: -f :force 強制的意思,如果目標檔案已經存在,不會詢問而直接覆蓋; -i :若目標檔案 (destination) 已經存在時,就會詢問是否覆蓋! -u :若目標檔案已經存在,且 source 比較新,才會更新 (update)
取得路徑的檔案名稱與目錄名稱
[root@localhost ~]# basename /etc/sysconfig
sysconfig
[root@localhost ~]# dirname /etc/sysconfig
/etc
[root@localhost ~]#
檔案內容查閱:
持續偵測/var/log/messages的內容
[root@www ~]# tail -f /var/log/messages
如果不知道/etc/man.config有幾行,卻只想列出100行以後的資料時?
[root@www ~]# tail -n +100 /etc/man.config
修改檔案時間或建置新檔: touch
[root@www ~]# lsattr [-adR] 檔案或目錄 選項與參數: -a :將隱藏檔的屬性也秀出來; -d :如果接的是目錄,僅列出目錄本身的屬性而非目錄內的檔名; -R :連同子目錄的資料也一併列出來! |
當 s 這個標誌出現在檔案擁有者的 x 權限上時,例如剛剛提到的 /usr/bin/passwd 這個檔案的權限狀態:『-rwsr-xr-x』,此時就被稱為 Set UID,簡稱為 SUID 的特殊權限。 那麼SUID的權限對於一個檔案的特殊功能是什麼呢?基本上SUID有這樣的限制與功能:
這個 Sticky Bit, SBIT 目前只針對目錄有效,對於檔案已經沒有效果了。 SBIT 對於目錄的作用是:
必須瞭解 SUID 不是用在目錄上,而 SBIT 不是用在檔案上
觀察檔案類型:file
如果你想要知道某個檔案的基本資料,例如是屬於 ASCII 或者是 data 檔案,或者是 binary , 且其中有沒有使用到動態函式庫 (share library) 等等的資訊,就可以利用 file 這個指令來檢閱喔!
[root@localhost ~]# file install.log.syslog
install.log.syslog: ASCII text
[root@localhost ~]#
[root@localhost sbin]# file ypbind
ypbind: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Lin
2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
[root@localhost sbin]#
指令與檔案的搜尋
#which
因為 which 是根據使用者所設定的 PATH 變數內的目錄去搜尋可執行檔的!所以,
# 不同的 PATH 設定內容所找到的指令當然不一樣啦!因為 /sbin 不在 vbird 的
# PATH 中,找不到也是理所當然的啊!瞭乎?
這個指令是根據『』這個環境變數所規範的路徑,去搜尋『執行檔』的檔名~ 所以,重點是找出『執行檔』而已!且 which 後面接的是『完整檔名』喔!若加上 -a 選項,則可以列出所有的可以找到的同名執行檔,而非僅顯示第一個而已!
檔案檔名的搜尋:
在 Linux 底下也有相當優異的搜尋指令呦!通常 find 不很常用的!因為速度慢之外, 也很操硬碟!通常我們都是先使用 whereis 或者是 locate 來檢查,如果真的找不到了,才以 find 來搜尋呦! 為什麼呢?因為 whereis 與 locate 是利用資料庫來搜尋資料,所以相當的快速,而且並沒有實際的搜尋硬碟, 比較省時間啦
whereis [-bmsu] 檔案或目錄名
選項與參數:
-b :只找 binary 格式的檔案
-m :只找在說明檔 manual 路徑下的檔案
-s :只找 source 來源檔案
-u :搜尋不在上述三個項目當中的其他特殊檔案
FIND的详细用法:
#find [PATH] [OPTION] [ACTION]
1、与时间有关的参数
1. 與時間有關的選項:共有 -atime, -ctime 與 -mtime ,以 -mtime 說明
-mtime n :n 為數字,意義為在 n 天之前的『一天之內』被更動過內容的檔案;
-mtime +n :列出在 n 天之前(不含 n 天本身)被更動過內容的檔案檔名;
-mtime -n :列出在 n 天之內(含 n 天本身)被更動過內容的檔案檔名。
-newer file :file 為一個存在的檔案,列出比 file 還要新的檔案檔名
將過去系統上面 24 小時內有更動過內容 (mtime) 的檔案列出
[root@www ~]# find / -mtime 0
# 那個 0 是重點!0 代表目前的時間,所以,從現在開始到 24 小時前,
# 有變動過內容的檔案都會被列出來!那如果是三天前的 24 小時內?
# find / -mtime 3 有變動過的檔案都被列出的意思!
尋找 /etc 底下的檔案,如果檔案日期比 /etc/passwd 新就列出
[root@www ~]# find /etc -newer /etc/passwd
# -newer 用在分辨兩個檔案之間的新舊關係是很有用的!
選項與參數:
-uid n :n 為數字,這個數字是使用者的帳號 ID,亦即 UID ,這個 UID 是記錄在
/etc/passwd 裡面與帳號名稱對應的數字。這方面我們會在第四篇介紹。
-gid n :n 為數字,這個數字是群組名稱的 ID,亦即 GID,這個 GID 記錄在
/etc/group,相關的介紹我們會第四篇說明
-user name :name 為使用者帳號名稱喔!例如 dmtsai
-group name:name 為群組名稱喔,例如 users ;
-nouser :尋找檔案的擁有者不存在 /etc/passwd 的人!
-nogroup :尋找檔案的擁有群組不存在於 /etc/group 的檔案!
當你自行安裝軟體時,很可能該軟體的屬性當中並沒有檔案擁有者,
這是可能的!在這個時候,就可以使用 -nouser 與 -nogroup 搜尋。
搜尋 /home 底下屬於 vbird 的檔案
[root@www ~]# find /home -user vbird
:搜尋系統中不屬於任何人的檔案
[root@www ~]# find / -nouser
與檔案權限及名稱有關的參數:
-name filename:搜尋檔案名稱為 filename 的檔案;
-size [+-]SIZE:搜尋比 SIZE 還要大(+)或小(-)的檔案。這個 SIZE 的規格有:
c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB
還要大的檔案,就是『 -size +50k 』
-type TYPE :搜尋檔案的類型為 TYPE 的,類型主要有:一般正規檔案 (f),
裝置檔案 (b, c), 目錄 (d), 連結檔 (l), socket (s),
及 FIFO (p) 等屬性。
-perm mode :搜尋檔案權限『剛好等於』 mode 的檔案,這個 mode 為類似 chmod
的屬性值,舉例來說, -rwsr-xr-x 的屬性為 4755 !
-perm -mode :搜尋檔案權限『必須要全部囊括 mode 的權限』的檔案,舉例來說,
我們要搜尋 -rwxr--r-- ,亦即 0744 的檔案,使用 -perm -0744,
當一個檔案的權限為 -rwsr-xr-x ,亦即 4755 時,也會被列出來,
因為 -rwsr-xr-x 的屬性已經囊括了 -rwxr--r-- 的屬性了。
-perm +mode :搜尋檔案權限『包含任一 mode 的權限』的檔案,舉例來說,我們搜尋
-rwxr-xr-x ,亦即 -perm +755 時,但一個檔案屬性為 -rw-------
也會被列出來,因為他有 -rw.... 的屬性存在!
找出檔名為 passwd 這個檔案
[root@www ~]# find / -name passwd
找出 /var 目錄下,檔案類型為 Socket 的檔名有哪些?
[root@www ~]# find /var -type s
# 這個 -type 的屬性也很有幫助喔!尤其是要找出那些怪異的檔案,
# 例如 socket 與 FIFO 檔案,可以用 find /var -type p 或 -type s 來找!
. 額外可進行的動作:
-exec command :command 為其他指令,-exec 後面可再接額外的指令來處理搜尋到
的結果。
-print :將結果列印到螢幕上,這個動作是預設動作!
將上個範例找到的檔案使用 ls -l 列出來~
[root@www ~]# find / -perm +7000 -exec ls -l {} \;
# 注意到,那個 -exec 後面的 ls -l 就是額外的指令,指令不支援命令別名,
# 所以僅能使用 ls -l 不可以使用 ll 喔!注意注意!
範例九:找出系統中,大於 1MB 的檔案
[root@www ~]# find / -size +1000k
# 雖然在 man page 提到可以使用 M 與 G 分別代表 MB 與 GB,
# 不過,俺卻試不出來這個功能~所以,目前應該是僅支援到 c 與 k 吧!
[root@www ~]# find /etc -name '*httpd*'