Программы
10 хороших примеров работы в Linux, FreeBSD и прочих Unix. Часть 1 — mkdir

10 хороших примеров работы в Linux, FreeBSD и прочих Unix. Часть 1 — mkdir

Работая в консоли, у вас вырабатываются некоторые привычки, шаблоны. Это некоторые «просветления», как надо делать некоторые вещи.

Работая в консоли, у вас вырабатываются некоторые привычки, шаблоны. Это некоторые «просветления», как надо делать некоторые вещи. Общие, не связанные с конкретной задачей. Это и есть те небольшие крупицы, из которых и складывается понимание шелла (оболочки командной строки). Давайте разберём некоторые из них — быть может у вас добавится ещё 10 крупинок в вашу тележку со знаниями.

Сразу скажу, что эта заметка навеяна англоязычной статьёй от IBM. Мне она показалась неплохой для новичков. Но некоторые моменты мне бы хотелось осветить по-своему, дать свои комментарии.

  1. Создавайте дерево директорий одним запросом

Предположим, нам нужно создать несколько директорий. Простой и плохой способ сделать это:

~ $ mkdir tmp
~ $ cd tmp
~/tmp $ mkdir a
~/tmp $ cd a
~/tmp/a $ mkdir b
~/tmp/a $ cd b
~/tmp/a/b/ $ mkdir c
~/tmp/a/b/ $ cd c
~/tmp/a/b/c $

Сразу хочу сказать. Нижеописанные способы — это прекрасно для понимания Unix, для понимания bash, но это иной раз печально, когда продуктовый код изобилует этим. Тема эта обширная, но важная — поэтому напишу в другой заметке.

Теперь рассмотрим некоторые возможности команды mkdir (подробнее можно ознакомиться в man mkdir). Одним из наиболее часто используемых ключей этой утилиты является «-p» — если нет промежуточного пути — создать и его.

То есть, предположим нам надо создать папку «/home/bugov/Project/9000913/website/html/css/main/», при том, что даже папки Project нет. Если мы это сделаем через простой mkdir:

home:~ Gosha$ mkdir /home/Gosha/Project/9000913/website/html/css/main/

mkdir: /home/Gosha/Project/9000913/website/html/css: No such file or directory

С другой стороны вы можете использовать всего 1 ключ «-p» — и весь путь до папки и сама папка создадутся, как вы и хотели.

home:~ Gosha$ mkdir -p /home/Gosha/Project/9000913/website/html/css/main/

И здесь можно сделать фокус на том, что «ребята, у утилиты mkdir есть ключ -p». Мне же кажется, что куда важнее то, что у всех утилит, которые вы используете, есть сотни ключей, которые могу сильно упростить жизнь.

Но можно сделать создание папок ещё более «интересным». Предположим, нам нужно сделать такую структуру папок:

.
└── project
    ├── bin
    ├── demo
    │   └── stat
    │       └── a
    ├── doc
    │   ├── html
    │   ├── info
    │   └── pdf
    ├── lib
    │   └── ext
    └── src

И даже это можно сделать одной командой:

home:~ Gosha$ mkdir -p \ project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}

Вся суть здесь, естественно в конструкциях {что-то,что-то}. Эта конструкция говорит о том, что сейчас идёт перечисление поддиректорий, которые надо создать. То есть сначала создаём ./project, а дальше разворачиваем первые скобочки:

  • создай поддиректорию lib, а в ней ext,
  • создай bin,
  • создай папку src,
  • создай каталог doc, в котором (пошли вложенные скобочки):
    • поддиректории html, info, pdf,
  • ну и добавь папку demo/stat/a.

Вот таким образом можно создание целого дерева директорий также сделать одной командой. Это здорово, что bash позволяет делать такое. Это здорово, когда нужно быстро что-то сделать и одна строчка решает проблему.

Но это не здорово, когда приходится возвращаться к такому коду, исправлять его. Используйте это знание с умом и читайте дальше!

Изображение Шпаргалка по командам Linux, FreeBSD и MacOS