mkdir:建立目錄

mkdir:命令linux

  一、命令詳解windows

    【功能說明】測試

      mkdir命令是「make  directories」中每一個單詞的粗體字母組合而成,其功能是建立目錄,默認狀況下,若是要建立的目錄已經存在,則會提示此文件已經存在;而不會繼續建立目錄spa

    【語法格式】遞歸

  mkdir    [option]    [directory]ci

  mkdir  [選項]       [目錄]字符串

    【選項說明】io

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

  二、使用案例table

    一、基礎範例test

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

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

  [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

  三、生產案例

    案例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

相關文章
相關標籤/搜索