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

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

Сегодня мы рассмотрим работу со списками команд, запуском их в командной оболочке и использованием результата в дальнейшей работе. Это шестая часть перевода статьи «Learn 10 good UNIX usage habits» от IBM.

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

Это шестая часть перевода статьи «Learn 10 good UNIX usage habits» от IBM.

6. Группируйте команды в списки.

Большинство из командных оболочек предоставляет различные способы группировать команды вместе. Таким образом вы можете передавать результат их общего выполнения дальше в пайп (на вход другой программе), либо писать весь их вывод в одно и то же место. Вы можете это делать, выполняя список команд прямо в этой же оболочке, либо в подоболочке (дочерней командной оболочке).

Выполняем список команд в подоболочке

Чтобы выполнить список команд в подоболочке, заключаем их в круглые скобочки. Сделаем это и перенаправим вывод в утилиту mailx:

~ $ ( cd tmp/a/b/c/ || mkdir -p tmp/a/b/c && \
> VAR=$PWD; cd ~; tar xvf -C $VAR archive.tar ) \
> | mailx admin -S "Archive contents"

В этом примере содержимое архива распаковывается в директорию tmp/a/b/c, а вся информация, включая список распакованных файлов, будет передана на вход утилите mailx. Та же отправит этот вывод на адрес admin.

Подоболочки удобно использовать, если вы не хотите, чтобы используемые переменные окружения были переопределены для вашей текущей командной оболочки.

В примере выше переменная $VAR не будет определена после выполнения списка команд, так как была определена не в текущей оболочке, а в подоболочке. Также, если $VAR был определён до в вашей текущей оболочке, он не будет изменён данной командой.

Выполняем список команд в текущей оболочке

Аналогично можно выполнять списки команд в текущей оболочке. Для этого вместо круглых скобок используем фигурные. Обратите внимание: необходимо ставить пробелы между фигурными скобками и командами, чтобы командная оболочка вас правильно поняла. Также последнюю команду в списке нужно заканчивать точкой с запятой, как это сделано в примере:

~ $ { cp ${VAR}a . && chown -R guest.guest a && \
> tar cvf newarchive.tar a; } | mailx admin -S "New archive"
Также может быть вам интересно:

10 хороших примеров работы в Linux, FreeBSD и прочих Unix. Часть 5 — длинные команды

Используйте эскейп-символы, чтобы управлять отображением длинных команд. Это пятая «хорошая привычка» из статьи «Learn 10 good UNIX usage habits» от IBM.

Читать »

git push в non-bare репозиторий

Возможно, для вас подобная проблема не так важна, но от того и сложнее вспомнить, как она решается.

Читать »
Фото Как установить PostgreSQL на Linux и создать базу и пользователя

Как установить PostgreSQL на Linux и создать базу и пользователя

PostgreSQL - система управления базой данных общего назначения. Одна из самых распространённых баз данных, используемая на многих коммерческих и некоммерческих проектах.

Фото Как сделать свою middleware в Django (с примерами)

Как сделать свою middleware в Django (с примерами)

Middleware или "промежуточное программное обеспечение" - элегантный способ установить общие правила обработки запросов и ответов приложения. Давайте напишем парочку middleware, чтобы понять, как они работают.

Фото Как настроить отправку почты из Django

Как настроить отправку почты из Django

Письма об ошибках, отчёты на почту, восстановление паролей - всё это полезно при работе с сайтом. Django предоставляет удобный способ это сделать с минимумом настроек!

Фото Добавляем поддержку медиа-файлов в Django проект

Добавляем поддержку медиа-файлов в Django проект

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

Фото Новый оператор match-case в Python

Новый оператор match-case в Python

В новой версии Python (3.10) появится новый оператор. Новый оператор сопоставления по шаблону (match-case).

Фото Нет слов, одни... однострочники

Нет слов, одни... однострочники

На днях вышел пост со списком полезных однострочников для JavaScript программистов. Памятуя Perl-овую молодость, заглянул туда.

Фото Добавляем переменные в контекст Django шаблонов (свой контекст-процессор)

Добавляем переменные в контекст Django шаблонов (свой контекст-процессор)

В Django вы можете передавать данные в шаблоны посредством контекстов. Контекст передаётся из контроллера (view в терминах Django), однако, если одни и те же данные нужны в разных местах, лучше сделать свой контекст-процессор.

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

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

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