mkdir

Материал из Xgu.ru

Перейти к: навигация, поиск


mkdir — программа для создания пустых каталогов. Обратное действие, то есть удаление пустых каталогов, выполняется с помощью программы rmdir.


Содержание

[править] Примеры использования программ mkdir и rmdir

Создадим пустой каталог, в котором будем проводить наши дальнейшие операции.

$ mkdir ~/a/
$ cd ~/a/

Сначала, как и должно быть, каталог пуст.

$ ls

Создадим в нём пустые каталоги. Создание каталога можно выполнять с помощью команды mkdir. Аргументы, которые передаются программе, являются именами каталогов, которые создаст программа:

$ mkdir a b c

После выполнения команды в текущем каталоге будут созданы три пустых каталога a, b и c:

$ ls
a  b  c

Как видно по первому символу в выводе ls -l, это действительно каталоги.

$ ls -l
total 12
drwxr-xr-x 2 igor igor 4096 Dec 29 22:07 a
drwxr-xr-x 2 igor igor 4096 Dec 29 22:07 b
drwxr-xr-x 2 igor igor 4096 Dec 29 22:07 c

Можно создавать каталоги не на одном уровне, а вложенные. Например: в текущем каталоге создать каталог a/, в нём каталог b/, в нём c/, а в нём каталог d/.

$ mkdir -p a/b/c/d/

Действительно, так и получилось.

$ tree a
a
`-- b
    `-- c
        `-- d
3 directories, 0 files

Удалить цепочку пустых каталогов можно точно также просто, как и создать. Только использовать не программу mkdir, а программу rmdir для этого:

$ rmdir -p a/b/c/d

Удалился даже каталог a/:

$ ls
b  c

Если один из каталогов в цепочке не пуст, цепочка удаляется до того места, где встречается второй каталог:

$ mkdir -p a/b/c/d
$ mkdir -p a/b/e
$ tree a
a
`-- b
    |-- c
    |   `-- d
    `-- e
4 directories, 0 files

Удаление остановится на каталоге b, потому что после удаления цепочки c/d, он не будет пустым. В нём останется каталог e/:

$ rmdir -p a/b/c/d
rmdir: failed to remove directory `a/b': Directory not empty
$ ls a/b
e
$ tree a
a
`-- b
    `-- e
2 directories, 0 files

А теперь удаление пройдёт без всяких проблем.

$ rmdir a/b/e

Программа rm тоже может удалять каталоги, но только для этого нужно использовать специальный ключ -r, без которого она удаляет только файлы, а каталоги игнорирует.

$ mkdir -p a/b/c/d
$ rm a
rm: cannot remove `a': Is a directory
$ rm -r a

Создание дерева каталогов:

$ mkdir -p a/{b,c,d/{e,f},g/{h,i/{j,k}}}
$ tree a
a
|-- b
|-- c
|-- d
|   |-- e
|   `-- f
`-- g
    |-- h
    `-- i
        |-- j
        `-- k
10 directories, 0 files

[править] Создание и удаление каталогов в языках программирования

В скриптах можно создавать и удалять каталоги средствами языка или его модулей, не прибегая к использованию mkdir.

[править] Python

Если каталог не существует, создать его. Можно создавать цепочки каталогов. Используется модуль os[1].

import os
if not os.path.exists (...):
    os.makedirs (...)

[править] Примечания

  1. Подробнее: http://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python
Источник — «http://xgu.ru/wiki/mkdir»