4.操作文件與目錄(快樂的Linux命令行)

  1.  最常用的五個命令(cp — 複製文件和目錄   mv — 移動/重命名文件和目錄    mkdir — 創建目錄    rm — 刪除文件和目錄    ln — 創建硬鏈接和符號鏈接)
  2. 通配符詳解
    通配符 意義
    * 匹配任意多個字符(包括零個或一個) 注:這是任意的意思
    ? 匹配任意一個字符(不包括零個)        注:這個叫做佔位符
    [characters] 匹配任意一個屬於字符集中的字符        注:[ab]符合一個即可
    [!characters] 匹配任意一個不是字符集中的字符        注:[!ab]符合不是ab即可
    [[:class:]] 匹配任意一個屬於指定字符類中的字符 注:[[:lower:]ab]多了一個形式而已
    常用字符類 
    字符類 意義
    [:alnum:] 匹配任意一個字母或數字
    [:alpha:] 匹配任意一個字母
    [:digit:] 匹配任意一個數字
    [:lower:] 匹配任意一個小寫字母
    [:upper:] 匹配任意一個大寫字母
    通配符範例
    模式 匹配對象
    * 所有文件
    g* 文件名以“g”開頭的文件
    b*.txt 以"b"開頭,中間有零個或任意多個字符,並以".txt"結尾的文件
    Data??? 以“Data”開頭,其後緊接着3個字符的文件
    [abc]* 文件名以"a","b",或"c"開頭的文件
    BACKUP.[0-9][0-9][0-9] 以"BACKUP."開頭,並緊接着3個數字的文件
    [[:upper:]]* 以大寫字母開頭的文件
    [![:digit:]]* 不以數字開頭的文件
    *[[:lower:]123] 文件名以小寫字母結尾,或以 “1”,“2”,或 “3” 結尾的文件
  3. mkdir - 創建目錄 (mkdir directory...    注:當有三個圓點跟在一個命令的參數後面, 這意味着那個參數可以重複)  
  4. cp - 複製文件和目錄(cp item item cp item... directory
    -a, --archive 複製文件和目錄,以及它們的屬性,包括所有權和權限。 通常,副本具有用戶所操作文件的默認屬性。
    -i, --interactive 在重寫已存在文件之前,提示用戶確認。如果這個選項不指定, cp 命令會默認重寫文件。
    -r, --recursive 遞歸地複製目錄及目錄中的內容。當複製目錄時, 需要這個選項(或者-a 選項)。
    -u, --update 當把文件從一個目錄複製到另一個目錄時,僅複製 目標目錄中不存在的文件,或者是文件內容新於目標目錄中已經存在的文件。
    -v, --verbose 顯示翔實的命令操作信息 
    cp範例
    cp file1 file2 複製文件 file1 內容到文件 file2。如果 file2 已經存在, file2 的內容會被 file1 的內容重寫。如果 file2 不存在,則會創建 file2。
    cp -i file1 file2 這條命令和上面的命令一樣,除了如果文件 file2 存在的話,在文件 file2 被重寫之前, 會提示用戶確認信息。
    cp file1 file2 dir1 複製文件 file1 和文件 file2 到目錄 dir1。目錄 dir1 必須存在。
    cp dir1/* dir2 使用一個通配符,在目錄 dir1 中的所有文件都被複制到目錄 dir2 中。 dir2 必須已經存在。
    cp -r dir1 dir2 複製目錄 dir1 中的內容到目錄 dir2。如果目錄 dir2 不存在, 創建目錄 dir2,操作完成後,目錄 dir2 中的內容和 dir1 中的一樣。 如果目錄 dir2 存在,則目錄 dir1 (和目錄中的內容)將會被複制到 dir2 中。
  5. mv 移動和重命名文件(cp item item cp item... directory
    選項 意義
    -i --interactive 在重寫一個已經存在的文件之前,提示用戶確認信息。 如果不指定這個選項,mv 命令會默認重寫文件內容。
    -u --update 當把文件從一個目錄移動另一個目錄時,只是移動不存在的文件, 或者文件內容新於目標目錄相對應文件的內容。
    -v --verbose 當操作 mv 命令時,顯示翔實的操作信息。
     mv範例
    mv file1 file2 移動 file1 到 file2。如果 file2 存在,它的內容會被 file1 的內容重寫。 如果 file2 不存在,則創建 file2。 這兩種情況下,file1 都不再存在。
    mv -i file1 file2 除了如果 file2 存在的話,在 file2 被重寫之前,用戶會得到 提示信息外,這個和上面的選項一樣。
    mv file1 file2 dir1 移動 file1 和 file2 到目錄 dir1 中。dir1 必須已經存在。
    mv dir1 dir2 如果目錄 dir2 不存在,創建目錄 dir2,並且移動目錄 dir1 的內容到 目錄 dir2 中,同時刪除目錄 dir1。如果目錄 dir2 存在,移動目錄 dir1(及它的內容)到目錄 dir2。
  6. rm - 刪除文件和目錄(rm item...
    選項 意義
    -i, --interactive 在刪除已存在的文件前,提示用戶確認信息。 如果不指定這個選項,rm 會默默地刪除文件
    -r, --recursive 遞歸地刪除文件,這意味着,如果要刪除一個目錄,而此目錄 又包含子目錄,那麼子目錄也會被刪除。要刪除一個目錄,必須指定這個選項。
    -f, --force 忽視不存在的文件,不顯示提示信息。這選項覆蓋了“--interactive”選項。注:與提示相反,強制執行。
    -v, --verbose 在執行 rm 命令時,顯示翔實的操作信息。
     rm實例
    命令 運行結果
    rm file1 默默地刪除文件
    rm -i file1 除了在刪除文件之前,提示用戶確認信息之外,和上面的命令作用一樣。
    rm -r file1 dir1 刪除文件 file1, 目錄 dir1,及 dir1 中的內容。
    rm -rf file1 dir1 同上,除了如果文件 file1,或目錄 dir1 不存在的話,rm 仍會繼續執行。 
  7. rm 注意事項(必須先用ls命令來測試通配符。知道刪除的是啥,然後再代替ls爲rm重新調用。否則慎用)
  8. ln - 創建鏈接(ln file link 和 ln -s ite link  硬鏈接侷限性:不能鏈接文件和文件系統之外的文件)
  9. 實戰演練(創建遊戲場)
    [me@linuxbox ~]$ cd
    [me@linuxbox ~]$ mkdir playground
    [me@linuxbox ~]$ cd playground
    [me@linuxbox playground]$ mkdir dir1 dir2
    [me@linuxbox playground]$ cp /etc/passwd .
    [me@linuxbox playground]$ ls -l
    total 12
    drwxrwxr-x 2  me  me   4096 2008-01-10 16:40 dir1
    drwxrwxr-x 2  me  me   4096 2008-01-10 16:40 dir2
    -rw-r--r-- 1  me  me   1650 2008-01-10 16:07 passwd
    [me@linuxbox playground]$ cp -v /etc/passwd .
    `/etc/passwd' -> `./passwd'
    [me@linuxbox playground]$ cp -i /etc/passwd .
    cp: overwrite `./passwd'?
    [me@linuxbox playground]$ mv passwd fun
    [me@linuxbox playground]$ mv fun dir1
    [me@linuxbox playground]$ mv dir1/fun dir2
    [me@linuxbox playground]$ mv dir2/fun .
    [me@linuxbox playground]$ mv fun dir1
    [me@linuxbox playground]$ mv dir1 dir2
    [me@linuxbox playground]$ ls -l dir2
    total 4
    drwxrwxr-x 2 me me 4096 2008-01-11 06:06 dir1
    [me@linuxbox playground]$ ls -l dir2/dir1
    total 4
    -rw-r--r-- 1 me me 1650 2008-01-10 16:33 fun
    [me@linuxbox playground]$ mv dir2/dir1 .
    [me@linuxbox playground]$ mv dir1/fun .
    [me@linuxbox playground]$ ln fun fun-hard
    [me@linuxbox playground]$ ln fun dir1/fun-hard
    [me@linuxbox playground]$ ln fun dir2/fun-hard
    [me@linuxbox playground]$ ls -l
    total 16
    drwxrwxr-x 2 me  me 4096 2008-01-14 16:17 dir1
    drwxrwxr-x 2 me  me 4096 2008-01-14 16:17 dir2
    -rw-r--r-- 4 me  me 1650 2008-01-10 16:33 fun
    -rw-r--r-- 4 me  me 1650 2008-01-10 16:33 fun-hard
    [me@linuxbox playground]$ ls -li
    total 16
    12353539 drwxrwxr-x 2 me  me 4096  2008-01-14  16:17  dir1
    12353540 drwxrwxr-x 2 me  me 4096  2008-01-14  16:17  dir2
    12353538 -rw-r--r-- 4 me  me 1650  2008-01-10  16:33  fun
    12353538 -rw-r--r-- 4 me  me 1650  2008-01-10  16:33  fun-hard
    [me@linuxbox playground]$ ln -s fun fun-sym
    [me@linuxbox playground]$ ln -s ../fun dir1/fun-sym
    [me@linuxbox playground]$ ln -s ../fun dir2/fun-sym
    [me@linuxbox playground]$ ls -l dir1
    total 4
    -rw-r--r-- 4 me  me 1650 2008-01-10 16:33 fun-hard
    lrwxrwxrwx 1 me  me    6 2008-01-15 15:17 fun-sym -> ../fun
    [me@linuxbox playground]$ ln -s dir1 dir1-sym
    [me@linuxbox playground]$ ls -l
    total 16
    ...省略
    [me@linuxbox playground]$ rm fun-hard
    [me@linuxbox playground]$ ls -l
    total 12
    ...省略
    [me@linuxbox playground]$ rm -i fun
    rm: remove regular file `fun'?
    [me@linuxbox playground]$ ls -l
    total 8
    drwxrwxr-x 2 me  me     4096 2008-01-15 15:17 dir1
    lrwxrwxrwx 1 me  me        4 2008-01-16 14:45 dir1-sym -> dir1
    drwxrwxr-x 2 me  me     4096 2008-01-15 15:17 dir2
    lrwxrwxrwx 1 me  me        3 2008-01-15 15:15 fun-sym -> fun
    [me@linuxbox playground]$ less fun-sym
    fun-sym: No such file or directory
    [me@linuxbox playground]$ rm fun-sym dir1-sym
    [me@linuxbox playground]$ ls -l
    total 8
    drwxrwxr-x 2 me  me    4096 2008-01-15 15:17 dir1
    drwxrwxr-x 2 me  me    4096 2008-01-15 15:17 dir2
    [me@linuxbox playground]$ cd
    [me@linuxbox ~]$ rm -r playground
  10. 如何識別硬鏈接是相同的文件。(ls -li 文件名 i 會顯示 inode 節點信息。相同文件inode一樣)
發佈了59 篇原創文章 · 獲贊 11 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章