Полезные алиасы в Bash
Операционная система Linux имеет в своем составе множество инструментов, которые могут существенно облегчить жизнь системным администраторам, особенно начинающим, для которых работа с консольными командами, использующими множество различных параметров зачастую кажется слишком сложной. В этой статье мы поговорим об использовании алиасов и разберем примеры создания наиболее полезных.
Временный алиас
По своей сути алиас (alias) это просто ярлык для команд. То есть, мы можем, введя всего одно слово запустить любую команду, или даже группу команд, включая параметры и имена файлов. Рассмотрим простой, но полезный пример. Предположим, нам необходимо отсортировать все файлы в выводе команды ls по размеру. К примеру, нам нужно понять какие файлы занимают в каталоге Downloads слишком много места и не надо ли их удалить.
Для реализации этой задачи с помощью ls нам бы потребовалась следующая конструкция:
ls --human-readable --size -1 -S –classify
Каждый раз набирать команду с таким количеством параметров не слишком удобно. Можно воспользоваться командой alias для того чтобы создать ярлык для данной команды.
alias lsrt='ls --human-readable --size -1 -S --classify'
Теперь запуск lsrt приведет к тому же результату, что и использование ls с параметрами.
В общем случае команда alias и ее значения могут иметь следующий вид:
alias name=value
alias name='command'
alias name='command arg1 arg2'
alias name='/path/to/script'
alias name='/path/to/script.sh arg1'
Если нам больше не нужен созданный алиас, мы можем воспользоваться командой:
unalias имя_алиаса
Хотя, на самом деле созданный таким образом алиас проживет до завершения сеанса данного пользователя. При новом входе в систему его придется создавать заново.
Замечу, что в качестве альтернативы алиасам можно использовать готовые скрипты, однако, для того, чтобы они были доступны из любого каталога, каталог со скриптами нужно будет прописать в $PATH и правильно раздать права на выполнение. При использовании алиасов в Bash все намного проще.
Добавляем в Bash
Для того, чтобы сделать наши алиасы постоянными мы должны добавить их в файл .bashrc. Синтаксис будет аналогичен использованному ранее. В качестве примера посмотрим ls с параметрами, выводящими в том числе и файлы, начинающиеся с точки:
alias ls_hid=’ls -d .* --color=auto’
Добавим данную строку в файл .bashrc и выполним в домашнем каталоге:
После запуска данного алиаса мы можем видеть файлы и каталоги, начинающиеся с точки, в том числе и сам .bashrc.
Продолжим настраивать наши админские полезности. Создадим алиас для обновления списков пакетов и самих пакетов:
alias update='sudo apt-get update && sudo apt-get upgrade'
Использование одного такого алиаса позволит на избавиться от целой строки команд.
Еще полезная короткая команда, которая позволит нам быстро находить нужную команду операционной системы в истории уже использовавшихся команд:
alias gh='history|grep'
Это может быть полезно, если вы не помните, какие именно параметры использовались с той или иной командой ранее, или какие каталоги и файлы использовались ранее с данной командой.
Вот как выглядит использование данного алиаса:
Посмотрим, как можно заменить более сложный «однострочник». В примере дальше мы отформатируем вывод команды mount, оставив в нем только список подмонтированных дисков. Если простой вывод команды mount содержит в себе довольно много ненужной информации, которая только мешает разобраться, то в результате форматирования мы получаем в первом столбце информацию о том что подмонтировано, а во втором столбце информацию о том, к какому ресурсу мы подмонтировались.
alias mnt="mount | awk -F' ' '{ printf \"%s\t%s\n\",\$1,\$3; }' | column -t | egrep ^/dev/ | sort"
Результат:
Еще пара небольших, но не менее полезных алиасов. Сортировка по времени модификации и подсчет файлов:
alias left='ls -t -1'
alias count='find . -type f | wc -l'
Виртуальные среды и сети
Следующий набор полезных алиасов будет посвящен работе с виртуальными средами Python и сетевым утилитам. Виртуальная среда Python представляет собой изолированную среду, предназначенную для работы проектов на Python. То есть, каждый проект в процессе работы может иметь свои собственные зависимости, вне зависимости от того, какие зависимости у другого проекта.
Ниже приводятся два алиаса для настройки виртуальных сред в Python:
alias ve='python3 -m venv ./venv'
alias va='source ./venv/bin/activate'
При работе с сетью тоже удобно иметь под рукой короткие алиасы, позволяющие быстро выполнить нужный набор команд. Например, если нам необходимо узнать, какие именно порты сейчас прослушиваются на машине можно воспользоваться следующим алиасом:
alias ports='netstat -tulanp'
Также, если нам необходимо посмотреть содержимое цепочек iptables, то нет необходимости каждый раз вспоминать весь набор необходимых ключей, а вместо этого можно воспользоваться следующим алиасом:
alias iptl='sudo /sbin/iptables -L -n -v --line-numbers'
И еще одна небольшая полезность, которую тоже неплохо было бы поместить в алиас — это возможность проверить, поддерживает ли удаленный сервер компрессию:
alias hdrc='curl -I --compress'
Полезности для Docker
При работе с контейнерами Docker приходится часто запускать и останавливать контейнеры. Удобнее всего заранее подготовить алиасы для выполнения соответствующих задач.
Так, если мы хотим запустить контейнер в привилегированном режиме, то можно составить такой алиас:
alias dockrun=’sudo docker run -i -t --privileged $@’
Для остановки контейнера создадим следующий алиас:
alias dockstop=’sudo docker stop $(docker ps -a -q) ‘
А для удаления воспользуемся следующим:
alias dockrm=’sudo docker rm $(docker ps -a -q)‘
Заключение
На этом я думаю, повествование об алиасах можно завершить. Естественно, приведенные выше алиасы не являются исчерпывающим списком всех команд, которые можно с их помощью «сократить». При необходимости, читатель может создать собственный набор сокращенных команд для работы.
Статья подготовлена в преддверии старта курса DevOps. Практики и инструменты. По ссылке ниже вы сможете узнать подробнее о программе курса и зарегистрироваться на бесплатный урок.