Программы
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 позволяет делать такое. Это здорово, когда нужно быстро что-то сделать и одна строчка решает проблему.

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

Также может быть вам интересно:

Имя нам легион. История хактивизма

Очередная попытка понять феномен хактивизма, его роль в нашем обществе. Очевидно, что фильм был снят на волне громких дел группы хакеров «Anonymous».

Читать »

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

Это продолжение цикла заметок о том, как можно использовать командную оболочку Linux более эффективно/интересно. Используйте эти советы на свой страх и риск — не каждый ваш коллега их оценит.

Читать »
Фото Так ли безопасен Linux? Несколько коммитов с уязвимосятми в stable

Так ли безопасен Linux? Несколько коммитов с уязвимосятми в stable

Исследователи сумели пройти code-review с реквестами в ядро Linux, заведомо содержащими добавление уязвимостей.

Фото Маленькая книга о Go (golang)

Маленькая книга о Go (golang)

Маленькая книга о Go распространяется под лицензией Attribution-NonCommercial-ShareAlike 4.0 International license. Вы не должны платить за эту книгу.

Фото Microsoft открывает исходники, а её IDE супер-популярна

Microsoft открывает исходники, а её IDE супер-популярна

Решил сложить пару фактов и немного над этим поразмыслить. Реально ли Microsoft "переобулись"?

Фото Пример своей консольной команды в Django проекте

Пример своей консольной команды в Django проекте

Если вы работали с Django проектом, то, скорее всего, запускали команды из консоли (manage.py). В Django есть простой способ писать свои команды для управления проектом.

Фото Из Golang уберут термины whitelist/blacklist и master/slave

Из Golang уберут термины whitelist/blacklist и master/slave

На самом деле, это заметят только разработчики языка и встроенных инструментов, но почему бы об этом не написать?

Фото Зачем писать "hello world"?

Зачем писать "hello world"?

Немного размышлений об одной из самых известных программ для обучения программированию.

Фото Как на Bash получить файлы, изменённые за сегодняшний день

Как на Bash получить файлы, изменённые за сегодняшний день

Bash имеет огромные возможности по программированию/скриптованию и администрированию операционной системы. Не важно: Linux это, FreeBSD, или MacOS – на Bash можно сделать многое.

Фото Как установить часовой пояс в Linux

Как установить часовой пояс в Linux

В рамках первичной настройки Операционной Системы важно установить и по какому времени вы живёте, ведь при следующем обновлении времени через Интернет ваше время слетит.