mkdir:創建目錄


mkdir:命令

  1、命令詳解

    【功能說明】

      mkdir命令是“make  directories”中每個單詞的粗體字母組合而成,其功能是創建目錄,默認情況下,如果要創建的目錄已經存在,則會提示此文件已經存在;而不會繼續創建目錄

    【語法格式】

  mkdir    [option]    [directory]

  mkdir  [選項]       [目錄]

    【選項說明】

參數選項 解釋說明(帶  Δ  的為重點)
-p
  1. 遞歸創建目錄,遞歸的意思是父目錄及其子目錄的子目錄           Δ 
  2. 即使要創建的目錄實現已存在也不會報錯提示目錄已經存在
-m 設置新創建目錄的默認目錄對應的權限
-v 顯示創建目錄的過程

  2、使用案例

    1、基礎范例

      案例1、不使用任何命令參數創建目錄用法示例。

      我們先來查看下當前的目錄樹結構,命令如下:

  [root@1-230 ~]# cd
  [root@1-230 ~]# tree -d
  .                                 #根據結果可以看出當前目錄下沒有任何目錄

  0 directories

      開始測試創建目錄,並檢查:

  [root@1-230 ~]# mkdir data         #在當前目錄下創建data目錄,此處data是相對路徑
  [root@1-230 ~]# tree -d
  .
  └── data                         #可以看到data目錄已經創建。

  1 directory
  [root@1-230 ~]# mkdir data          #再次執行創建命令會提示目錄已經存在。
  mkdir: 無法創建目錄"data": 文件已存在

      擴展知識:

        windows下的目錄路徑樣式為d:\data\test,而linux下的路徑樣式為/data/test,它們的目錄頂點和分隔符均不同。

      案例2:使用-p參數遞歸創建目錄

          當我們創建多級目錄時,如果第一級目錄(cc)不存在,那么我們創建結果會報錯,導致無法創建成果,操作如下:

[root@1-230 ~]# mkdir cc/test
mkdir: cannot create directory 'cc/test': No such file or directory        #提示沒有這個文件或目錄

          此時,可以指定-P參數遞歸創建多級目錄:

[root@1-230 ~]# mkdir -p cc/test

[root@1-230 ~]# tree -d
.
|-- cc
| `-- test
`-- data

3 directories

         使用mkdir創建多級目錄時,建議直接使用-p參數,可以避免出現“no such file or directory”這樣沒有文件或目錄的報錯了,不會影響已存在的目錄。

      案例3:加-v參數顯示創建目錄的過程。

           使用-v參數顯示創建目錄的詳細過程,具體操作命令如下:

[root@1-230 ~]# mkdir -pv aa/test
mkdir: created directory 'aa'
mkdir: created directory 'aa/test'

           提示:

             其實這個-v沒有什么實際用途。

      案例4:創建目錄時可使用-m參數設置目錄的默認權限。

[root@1-230 ~]# mkdir dir1
[root@1-230 ~]# ls -ld dir1                           #ls命令的使用方法見后面的ls命令
drwxr-xr-x 2 root root 6 Oct 22 22:00 dir1      #創建該目錄默認權限為755
[root@1-230 ~]# mkdir -m 755 dir2              #創建目錄時指定755的數字權限
[root@1-230 ~]# ls -ld dir2
drwxr-xr-x 2 root root 6 Oct 22 22:00 dir2      #可以看到權限已經發生變化了

              提示:

               有關權限的知識可參數后面的chmod命令

      案例5:技巧性范例,

        同時創建多個目錄及多級子目錄。

              在生產環境中,常常需要創建目錄用來存放文件,如果同時創建多個目錄並且每個目錄下可能還有很多個子目錄,哪就需要執行多次mkdir命令,這種做法比較不妥,事實上,我們可以使用mkdir命令同時創建多個多級目錄,具體命令操作如下:

[root@1-230 ~]# mkdir -pv aa/{dir1_1,dir1_2}/{dir2_1,dir2_2}       #大括號{} 里用逗號分隔
mkdir: created directory 'aa'
mkdir: created directory 'aa/dir1_1'
mkdir: created directory 'aa/dir1_1/dir2_1'
mkdir: created directory 'aa/dir1_1/dir2_2'
mkdir: created directory 'aa/dir1_2'
mkdir: created directory 'aa/dir1_2/dir2_1'
mkdir: created directory 'aa/dir1_2/dir2_2'

 

[root@1-230 ~]# tree -d aa/         #上面創建的目錄命令所對應的目錄結構如下。
aa/
|-- dir1_1
| |-- dir2_1
| `-- dir2_2
`-- dir1_2
|-- dir2_1
`-- dir2_2

6 directories

 

 

[root@1-230 ~]# mkdir -p cc/dir1_{1..3}/dir2_{1..3}/dir3_{a..c}          #{1..3} 以及 {a..c}表示序列
[root@1-230 ~]# tree -d cc/
cc/
|-- dir1_1
| |-- dir2_1
| | |-- dir3_a
| | |-- dir3_b
| | `-- dir3_c
| |-- dir2_2
| | |-- dir3_a
| | |-- dir3_b
| | `-- dir3_c
| `-- dir2_3
| |-- dir3_a
| |-- dir3_b
| `-- dir3_c
|-- dir1_2
| |-- dir2_1
| | |-- dir3_a
| | |-- dir3_b
| | `-- dir3_c
| |-- dir2_2
| | |-- dir3_a
| | |-- dir3_b
| | `-- dir3_c
| `-- dir2_3
| |-- dir3_a
| |-- dir3_b
| `-- dir3_c
`-- dir1_3
|-- dir2_1
| |-- dir3_a
| |-- dir3_b
| `-- dir3_c
|-- dir2_2
| |-- dir3_a
| |-- dir3_b
| `-- dir3_c
`-- dir2_3
|-- dir3_a
|-- dir3_b
`-- dir3_c

39 directories

[root@1-230 ~]# mkdir -p bb/dir1{1..3}/dir2{1..3}/dir3{a..c}      #
[root@1-230 ~]# tree -d bb/
bb/
|-- dir11
| |-- dir21
| | |-- dir3a
| | |-- dir3b
| | `-- dir3c
| |-- dir22
| | |-- dir3a
| | |-- dir3b
| | `-- dir3c
| `-- dir23
| |-- dir3a
| |-- dir3b
| `-- dir3c
|-- dir12
| |-- dir21
| | |-- dir3a
| | |-- dir3b
| | `-- dir3c
| |-- dir22
| | |-- dir3a
| | |-- dir3b
| | `-- dir3c
| `-- dir23
| |-- dir3a
| |-- dir3b
| `-- dir3c
`-- dir13
|-- dir21
| |-- dir3a
| |-- dir3b
| `-- dir3c
|-- dir22
| |-- dir3a
| |-- dir3b
| `-- dir3c
`-- dir23
|-- dir3a
|-- dir3b
`-- dir3c

39 directories

        擴展知識:

          大括號( { } )的特殊用法。

          在{ } 中使用逗號分隔多個字符或單詞時,使用echo命令可以將這些被分隔的字符或單詞分別輸出到屏幕上,示例如下:

[root@1-230 ~]# echo {a,c}           #會輸出a  c到屏幕上。
a c

          如果{ }前有字符時,輸出結果如下:

[root@1-230 ~]# echo 1{2,3}
12 13
[root@1-230 ~]# echo 1{,3}   #如果逗號前面什么都沒有,可以認為是一個空字符串。
1 13

  3、生產案例

    案例1:克隆目錄結構

[root@1-230 ~]# tree -fid --noreport cc            #顯示所有目錄樹,--noreport不顯示最后一行統計信息,也可以用find命令輸出下面的目錄樹。
cc
cc/dir1_1
cc/dir1_1/dir2_1
cc/dir1_1/dir2_1/dir3_a
cc/dir1_1/dir2_1/dir3_b
cc/dir1_1/dir2_1/dir3_c
cc/dir1_1/dir2_2
cc/dir1_1/dir2_2/dir3_a
cc/dir1_1/dir2_2/dir3_b
cc/dir1_1/dir2_2/dir3_c
cc/dir1_1/dir2_3
cc/dir1_1/dir2_3/dir3_a
cc/dir1_1/dir2_3/dir3_b
cc/dir1_1/dir2_3/dir3_c
cc/dir1_2
cc/dir1_2/dir2_1
cc/dir1_2/dir2_1/dir3_a
cc/dir1_2/dir2_1/dir3_b
cc/dir1_2/dir2_1/dir3_c
cc/dir1_2/dir2_2
cc/dir1_2/dir2_2/dir3_a
cc/dir1_2/dir2_2/dir3_b
cc/dir1_2/dir2_2/dir3_c
cc/dir1_2/dir2_3
cc/dir1_2/dir2_3/dir3_a
cc/dir1_2/dir2_3/dir3_b
cc/dir1_2/dir2_3/dir3_c
cc/dir1_3
cc/dir1_3/dir2_1
cc/dir1_3/dir2_1/dir3_a
cc/dir1_3/dir2_1/dir3_b
cc/dir1_3/dir2_1/dir3_c
cc/dir1_3/dir2_2
cc/dir1_3/dir2_2/dir3_a
cc/dir1_3/dir2_2/dir3_b
cc/dir1_3/dir2_2/dir3_c
cc/dir1_3/dir2_3
cc/dir1_3/dir2_3/dir3_a
cc/dir1_3/dir2_3/dir3_b
cc/dir1_3/dir2_3/dir3_c

[root@1-230 ~]# tree -fid --noreport cc >> ~/cc.test          #將目錄樹內容追加到家目錄下的cc.txt文件里
[root@1-230 ~]# cd /tmp/
[root@1-230 tmp]# mkdir -p `cat ~/cc.test`              #mkdir命令后面可以接很多目錄名稱批量創建目錄,但是如果將所有目錄都放在mkdir命令后面勢必會導致命令太長,因此這里采用了一個巧妙的用法,使用了一對反引號(在鍵盤ESC下方),反引內部使用cat命令讀取~(家目錄下的cc.txt文件內容, 這個文件內容就包含了所有的目錄名稱。最后大家要知道的是,一個命令語句中如果反引號包含的命令,那么需要優先執行反引號中的命令語句,就像本例應先執行cat命令,然后執行mkdir命令,cat命令使用方法見cat命令)
[root@1-230 tmp]# tree -d /tmp/cc             #查看上述命令操作結果
/tmp/cc
|-- dir1_1
| |-- dir2_1
| | |-- dir3_a
| | |-- dir3_b
| | `-- dir3_c
| |-- dir2_2
| | |-- dir3_a
| | |-- dir3_b
| | `-- dir3_c
| `-- dir2_3
| |-- dir3_a
| |-- dir3_b
| `-- dir3_c
|-- dir1_2
| |-- dir2_1
| | |-- dir3_a
| | |-- dir3_b
| | `-- dir3_c
| |-- dir2_2
| | |-- dir3_a
| | |-- dir3_b
| | `-- dir3_c
| `-- dir2_3
| |-- dir3_a
| |-- dir3_b
| `-- dir3_c
`-- dir1_3
|-- dir2_1
| |-- dir3_a
| |-- dir3_b
| `-- dir3_c
|-- dir2_2
| |-- dir3_a
| |-- dir3_b
| `-- dir3_c
`-- dir2_3
|-- dir3_a
|-- dir3_b
`-- dir3_c

39 directories


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM