page counter next up previous contents
Next: 隱藏權限及特殊屬性 Up: Linux 檔案存取管理 Previous: 檔案權限管理命令   Contents   DYWANG_HOME

檔案與目錄管理

  1. 常用指令
    ls 顯示檔案名稱、屬性等。
    cp 拷貝檔案或目錄。
    rm 移除檔案或目錄。
    mv 檔案移動或改名。
    basename 移除前導目錄及字尾,顯示檔名。
    dirname 移除檔名,顯示目錄。
  2. ls (list directory contents):顯示檔案名稱、屬性等。
    [root @test /root ]# ls [-ailS] 
    參數說明: 
    -a       :全部的檔案都列出(連同隱藏檔) 
    -i       :印出 inode 的值 
    -l       :長的列出,連同檔案大小的資料等等 
    -S       :以檔案大小排序 
    --color=never     :不要顯示顏色 
    --color=always    :均顯示顏色 
    --color=auto      :由系統自行判斷
    
  3. ls 範例:
    [root@dywHome2 ~]# ls
    col.txt  drakx/  echoname*  findnewer  sed  tmp/
    [root@dywHome2 ~]# ls -a
    ./                findnewer          .kde.bak/  .tcshrc
    ../               .gconf/            .lesshst   .test.txt.swp
    .bash_completion  .gconfd/           .local/    tmp/
    .bash_history     .gstreamer-0.8/    .mc/       .viminfo
    .bash_logout      .gtk-bookmarks     .mcop/     .vimrc
    .bash_profile     .gtk_qt_engine_rc  .mcoprc    .xauth/
    .bashrc           .gtkrc*            .mplayer/  .Xdefaults
    col.txt           .gtkrc-2.0*        .qt/       .xdg_menu_cache/
    .cshrc            .gtkrc-2.0.bak*    .rpmdrake
    drakx/            .ICEauthority      sed
    echoname*         .kde/              .ssh/
    [root@dywHome2 ~]# ls -l
    total 6
    -rw-r--r-- 1 root root 2939 Feb  2  2008 col.txt
    drwx------ 2 root root 1024 Dec 27  2007 drakx/
    -rwxr-xr-x 1 root root   11 Jan 28  2008 echoname*
    -rw-r--r-- 1 root root    0 Aug 30 08:44 findnewer
    -rw-r--r-- 1 root root    0 Apr 16 09:35 sed
    drwx------ 5 root root 1024 Sep  3 19:59 tmp/
    [root@dywHome2 ~]# ls -al
    total 90
    drwx------ 17 root root  2048 Sep  3 20:33 ./
    drwxr-xr-x 21 root adm   1024 Sep  3 19:59 ../
    -rw-r--r--  1 root root   145 Aug  4  2006 .bash_completion
    -rw-------  1 root root 23796 Sep  3 17:47 .bash_history
    -rw-r--r--  1 root root    24 Aug  4  2006 .bash_logout
    -rw-r--r--  1 root root   106 Aug  4  2006 .bash_profile
    -rw-r--r--  1 root root   226 Aug  4  2006 .bashrc
    -rw-r--r--  1 root root  2939 Feb  2  2008 col.txt
    -rw-r--r--  1 root root   233 Aug  4  2006 .cshrc
    drwx------  2 root root  1024 Dec 27  2007 drakx/
    ### 中間省略 ###
    -rw-r--r--  1 root root  1479 Aug  4  2006 .Xdefaults
    drwxr-xr-x  2 root root  1024 Apr 20 10:45 .xdg_menu_cache/
    [root@dywHome2 ~]# ls -al | more
    
  4. cp (copy files and directories):拷貝檔案或目錄。
    [root@dywHome2 ~]# cp [-dLprRsufa] [來源檔] [目的檔] 
    參數說明: 
    -d        :連結檔維持其路徑之連結 
    -L        :解除連結,直接 copy 連結的檔案(預設) 
    -p        :維持檔案之屬性 
    -r, -R   :連同目錄下之所有檔案及次目錄都 copy 
    -s        :做成連結檔,而不 copy,與 ln 指令相同功能 
    -u, --update:來源檔較新才會進行 copy 的動作,常用於備份的動作 
    -f        :強制 copy,不再尋問是否覆蓋
    -a        :與 -dpR 相同
    
  5. mkdir 範例:
    [root@dywHome2 ~]# mkdir test
    [root@dywHome2 ~]# cd test
    [root@dywHome2 test]# touch foo
    [root@dywHome2 test]# cp foo foo1
    [root@dywHome2 test]# ln -s foo lnfoo
    [root@dywHome2 test]# ll
    total 0
    -rw-r--r-- 1 root root 0 Sep  3 20:50 foo
    -rw-r--r-- 1 root root 0 Sep  3 20:50 foo1
    lrwxrwxrwx 1 root root 3 Sep  3 20:52 lnfoo -> foo
    [root@dywHome2 test]# cp lnfoo foo2
    [root@dywHome2 test]# cp -d lnfoo foo3
    [root@dywHome2 test]# ll
    total 0
    -rw-r--r-- 1 root root 0 Sep  3 21:03 foo
    -rw-r--r-- 1 root root 0 Sep  3 20:50 foo1
    -rw-r--r-- 1 root root 0 Sep  3 20:52 foo2
    lrwxrwxrwx 1 root root 3 Sep  3 21:11 foo3 -> foo
    lrwxrwxrwx 1 root root 3 Sep  3 20:52 lnfoo -> foo
    [root@dywHome2 test]# chown dywang:users foo2
    [root@dywHome2 test]# ll
    total 0
    -rw-r--r-- 1 root   root  0 Sep  3 21:03 foo
    -rw-r--r-- 1 root   root  0 Sep  3 20:50 foo1
    -rw-r--r-- 1 dywang users 0 Sep  3 20:52 foo2
    lrwxrwxrwx 1 root   root  3 Sep  3 21:11 foo3 -> foo
    lrwxrwxrwx 1 root   root  3 Sep  3 20:52 lnfoo -> foo
    [root@dywHome2 test]# cp foo2 foo4
    [root@dywHome2 test]# cp -p foo2 foo5
    [root@dywHome2 test]# ll
    total 0
    -rw-r--r-- 1 root   root  0 Sep  3 21:03 foo
    -rw-r--r-- 1 root   root  0 Sep  3 20:50 foo1
    -rw-r--r-- 1 dywang users 0 Sep  3 20:52 foo2
    lrwxrwxrwx 1 root   root  3 Sep  3 21:11 foo3 -> foo
    -rw-r--r-- 1 root   root  0 Sep  3 21:12 foo4
    -rw-r--r-- 1 dywang users 0 Sep  3 20:52 foo5
    lrwxrwxrwx 1 root   root  3 Sep  3 20:52 lnfoo -> foo
    [root@dywHome2 test]# cd ..
    [root@dywHome2 ~]# cp -a test test1
    [root@dywHome2 ~]# ll test test1
    test:
    total 0
    -rw-r--r-- 1 root   root  0 Sep  3 21:03 foo
    -rw-r--r-- 1 root   root  0 Sep  3 20:50 foo1
    -rw-r--r-- 1 dywang users 0 Sep  3 20:52 foo2
    lrwxrwxrwx 1 root   root  3 Sep  3 21:11 foo3 -> foo
    -rw-r--r-- 1 root   root  0 Sep  3 21:12 foo4
    -rw-r--r-- 1 dywang users 0 Sep  3 20:52 foo5
    lrwxrwxrwx 1 root   root  3 Sep  3 20:52 lnfoo -> foo
    
    test1:
    total 0
    -rw-r--r-- 1 root   root  0 Sep  3 21:03 foo
    -rw-r--r-- 1 root   root  0 Sep  3 20:50 foo1
    -rw-r--r-- 1 dywang users 0 Sep  3 20:52 foo2
    lrwxrwxrwx 1 root   root  3 Sep  3 21:13 foo3 -> foo
    -rw-r--r-- 1 root   root  0 Sep  3 21:12 foo4
    -rw-r--r-- 1 dywang users 0 Sep  3 20:52 foo5
    lrwxrwxrwx 1 root   root  3 Sep  3 21:13 lnfoo -> foo
    
  6. rm (remove files or directories):移除檔案或目錄。
    [root@dywHome2 ~]# rm [-fir] [檔名] 
    參數說明: 
    -i     :提供使用者確認(預設值) 
    -r,-R  :循環,含次目錄 
    -f     :忽略不存在的檔,強制移除不提示。
    
  7. rm 範例:
    [root@dywHome2 ~]# rm test/foo1
    rm: remove regular empty file `test/foo1'? y
    [root@dywHome2 ~]# rm -rf test
    
  8. mv (move (rename) files):檔案移動或改名。
    [root@dywHome2 ~]#  mv [-u] [來源檔] [目的檔] 
    參數說明: 
    -u,--updates :來源檔比目的檔新時才動作
    
  9. mv 範例:
    [root@dywHome2 ~]# mkdir test
    [root@dywHome2 ~]# cd test
    [root@dywHome2 test]# touch foo
    [root@dywHome2 test]# ll
    total 0
    -rw-r--r-- 1 root root 0 Sep  3 21:25 foo
    [root@dywHome2 test]# mv foo foo1
    [root@dywHome2 test]# ll
    total 0
    -rw-r--r-- 1 root root 0 Sep  3 21:25 foo1
    [root@dywHome2 test]# cp foo1 foo2
    [root@dywHome2 test]# ll
    total 0
    -rw-r--r-- 1 root root 0 Sep  3 21:25 foo1
    -rw-r--r-- 1 root root 0 Sep  3 21:26 foo2
    [root@dywHome2 test]# mv foo1 foo2
    mv: overwrite `foo2'? n
    [root@dywHome2 test]# mv -u foo1 foo2
    [root@dywHome2 test]# mv foo1 foo2 /tmp
    [root@dywHome2 test]# ll /tmp/foo[12]
    -rw-r--r-- 1 root root 0 Sep  3 21:25 /tmp/foo1
    -rw-r--r-- 1 root root 0 Sep  3 21:26 /tmp/foo2
    
  10. basename:移除前導目錄及字尾,顯示檔名。
    [root@dywHome2 test]#  basename NAME [字尾]
    
  11. basename 範例:
    [root@dywHome2 test]# basename /root/test/foo.sh
    foo.sh
    [root@dywHome2 test]# basename /root/test/foo.sha
    foo.sha
    [root@dywHome2 test]# basename /root/test/foo.sh .sh
    foo
    [root@dywHome2 test]# basename /root/test/foo.sh o.sh
    fo
    
  12. dirname:移除檔名,顯示目錄。
    [root @test /root ]# dirname NAME
    
  13. dirname 範例:
    [root@dywHome2 test]# dirname /root/test/foo.sh
    /root/test
    [root@dywHome2 test]# dirname /root/test/
    /root
    [root@dywHome2 test]# dirname foo.sh
    .  %*<== foo.sh 沒有前導目錄,故輸出為 . 表示目前目錄。*)
    


De-Yu Wang 2020-05-14