Chinaunix首页 | 论坛 | 博客
  • 博客访问: 171105
  • 博文数量: 65
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 720
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-16 08:59
文章分类

全部博文(65)

文章存档

2011年(3)

2010年(3)

2009年(43)

2008年(16)

我的朋友

分类: LINUX

2009-02-05 17:30:02

常用命令:
.         代表此層目錄
..        代表上一層目錄
-         代表前一個工作目錄
~         代表『目前使用者身份』所在的家目錄
~account  代表 account 這個使用者的家目錄(account是個帳號名稱)
  • cd:變換目錄
  • pwd:顯示目前的目錄 (显示绝对的路:pwd -p)
  • mkdir:建立一個新的目錄 (mkdir -p test1/test2/test3 幫助你直接將所需要的目錄(包含上層目錄)遞迴建立起來 mkdir -m 711 test1 設定檔案的權限喔!直接設定,不需要看預設權限 (umask) 的臉色 )
  • rmdir:刪除一個空的目錄
  • PATH="$PATH":/root

 

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 ~]#

 

檔案內容查閱:

  • cat  由第一行開始顯示檔案內容
  • tac  從最後一行開始顯示,可以看出 tac 是 cat 的倒著寫!
  • nl   顯示的時候,順道輸出行號!
  • more 一頁一頁的顯示檔案內容
  • less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!
  • head 只看頭幾行
  • tail 只看尾巴幾行
  • od   以二進位的方式讀取檔案內容!
  • [root@www ~]# cat [-AbEnTv] 選項與參數:-A :相當於 -vET 的整合選項,可列出一些特殊字符而不是空白而已; -b :列出行號,僅針對非空白行做行號顯示,空白行不標行號!-E :將結尾的斷行字元 $ 顯示出來; -n :列印出行號,連同空白行也會有行號,與 -b 的選項不同; -T :將 [tab] 按鍵以 ^I 顯示出來;-v :列出一些看不出來的特殊字符

    如果後面100行的資料都不列印,只列印/etc/man.config的前面幾行,該如何是好?
    [root@www ~]# head -n -100 /var/log/messages

    範例的-n -100時,代表列前的所有行數, 但不包括後面100行。舉例來說,/etc/man.config共有141行,則上述的指令『head -n -100 /etc/man.config』 就會列出前面41行,後面100行不會列印出來了
    显示前20行 #head -n 20 /var/log/messages

    持續偵測/var/log/messages的內容
    [root@www ~]# tail -f /var/log/messages

    如果不知道/etc/man.config有幾行,卻只想列出100行以後的資料時?
    [root@www ~]# tail -n +100 /etc/man.config

    修改檔案時間或建置新檔: touch

  • modification time (mtime)
    當該檔案的『內容資料』變更時,就會更新這個時間!內容資料指的是檔案的內容,而不是檔案的屬性或權限喔!

  • status time (ctime)
    當該檔案的『狀態 (status)』改變時,就會更新這個時間,舉例來說,像是權限與屬性被更改了,都會更新這個時間啊。

  • access time (atime)
    當『該檔案的內容被取用』時,就會更新這個讀取時間 (access)。舉例來說,我們使用 cat 去讀取 /etc/man.config , 就會更新該檔案的 atime 了。
  • [root@www ~]# touch [-acdmt] 檔案
    選項與參數:
    -a  :僅修訂 access time;
    -c  :僅修改檔案的時間,若該檔案不存在則不建立新檔案;
    -d  :後面可以接欲修訂的日期而不用目前的日期,也可以使用 --date="日期或時間"
    -m  :僅修改 mtime ;
    -t  :後面可以接欲修訂的時間而不用目前的時間,格式為[YYMMDDhhmm]
  • touch -t 0901011320 messages

  • 檔案預設權限:umask
    [root@localhost log]# umask
    0022
    [root@localhost log]# umaks -S
    -bash: umaks: command not found
    [root@localhost log]# umask -S
    u=rwx,g=rx,o=rx
    [root@localhost log]#
    • 若使用者建立為『檔案』則預設『沒有可執行( x )權限』,亦即只有 rw 這兩個項目,也就是最大為 666 分,預設權限如下:
      -rw-rw-rw-

    • 若使用者建立為『目錄』,則由於 x 與是否可以進入此目錄有關,因此預設為所有權限均開放,亦即為 777 分,預設權限如下:
      drwxrwxrwx
    • 強調的是,底下的chattr指令只能在Ext2/Ext3的檔案系統上面生效, 其他的檔案系統可能就無法支援這個指令了
  • chattr (設定檔案隱藏屬性)
    a  :當設定 a 之後,這個檔案將只能增加資料,而不能刪除也不能修改資料,只有root      才能設定這個屬性。
    i  :這個 i 可就很厲害了!他可以讓一個檔案『不能被刪除、改名、設定連結也無法     寫入或新增資料!』對於系統安全性有相當大的助益!只有 root 能設定此屬性
  • lsattr (顯示檔案隱藏屬性)
    [root@www ~]# lsattr [-adR] 檔案或目錄
    選項與參數:
    -a :將隱藏檔的屬性也秀出來;
    -d :如果接的是目錄,僅列出目錄本身的屬性而非目錄內的檔名;
    -R :連同子目錄的資料也一併列出來! 
    
  • [root@www tmp]# chattr +aij attrtest
    [root@www tmp]# lsattr attrtest

    ----ia---j--- attrtest

    檔案特殊權限: SUID, SGID, SBIT

  • Set UID
  • 當 s 這個標誌出現在檔案擁有者的 x 權限上時,例如剛剛提到的 /usr/bin/passwd 這個檔案的權限狀態:『-rwsr-xr-x』,此時就被稱為 Set UID,簡稱為 SUID 的特殊權限。 那麼SUID的權限對於一個檔案的特殊功能是什麼呢?基本上SUID有這樣的限制與功能:

  • SUID 權限僅對二進位程式(binary program)有效;
  • 執行者對於該程式需要具有 x 的可執行權限;
  • 本權限僅在執行該程式的過程中有效 (run-time);
  • 執行者將具有該程式擁有者 (owner) 的權限
  • SUID 僅可用在binary program 上, 不能夠用在 shell script 上面!這是因為 shell script 只是將很多的 binary 執行檔叫進來執行而已!所以 SUID 的權限部分,還是得要看 shell script 呼叫進來的程式的設定, 而不是 shell script 本身。當然,SUID 對於目錄也是無效的

  • Set GID
  • 當 s 標誌在檔案擁有者的 x 項目為 SUID,那 s 在群組的 x 時則稱為 Set GID, SGID 囉!是這樣沒錯!^_^。 舉例來說,你可以用底下的指令來觀察到具有 SGID 權限的檔案喔

    與 SUID 不同的是,SGID 可以針對檔案或目錄來設定!如果是對檔案來說, SGID 有如下的功能(略去)
  • 事實上 SGID 也能夠用在目錄上,這也是非常常見的一種用途! 當一個目錄設定了 SGID 的權限後,他將具有如下的功能:
    • 使用者若對於此目錄具有 r 與 x 的權限時,該使用者能夠進入此目錄;
    • 使用者在此目錄下的有效群組(effective group)將會變成該目錄的群組;
    • 用途:若使用者在此目錄下具有 w 的權限(可以新建檔案),則使用者所建立的新檔案,該檔案的群組與此目錄的群組相同。
    SGID 對於專案開發來說是非常重要的!因為這涉及群組權限的問題

    Sticky Bit:
  • 這個 Sticky Bit, SBIT 目前只針對目錄有效,對於檔案已經沒有效果了。 SBIT 對於目錄的作用是:

    • 當使用者對於此目錄具有 w, x 權限,亦即具有寫入的權限時;
    • 當使用者在該目錄下建立檔案或目錄時,僅有自己與 root 才有權力刪除該檔案
  • 4 為 SUID
  • 2 為 SGID
  • 1 為 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*'
    









     

     

     



     


     

     

     

     

     

     

     

     

     

    阅读(501) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~