Создание синонимов команд в Linux. Команда alias
В Linux можно создавать синонимы для других команд. Рассмотрим, как это сделать.
Синонимы для команд (или псевдонимы, или алиасы) — это команда, состоящая из одного слова, но выполняющая другую заданную команду. Это удобно, например, когда нужно часто выполнять длинную команду или команду с различными ключами. Вместо ввода длинной команды достаточно выполнить одну команду-синоним.
Создание синонимов (команда alias)
В командной оболочке Bash для создания синонимов используется команда alias .
Синтаксис команды alias
Чтобы создать синоним нужно указать команду-синоним и в кавычках указать команду , которая должна выполняться:
синоним — короткая команда (алиас), которая будет использоваться для запуска команды .
команда — команда, которая будет запускаться при вызове синонима . Записывается в двойных или одинарных кавычках.
Примеры создания синонимов
Вывод списка файлов:
То есть, вместо выполнения ls -la теперь достаточно выполнить команду ll :
Создадим команду для быстрого перехода в заданную директорию:
Подключение по ssh к определенному серверу:
Сохранение синонимов
Когда вы создаете синоним с помощью команды alias, то он функционирует только в текущей сессии, пока открыто окно терминала. Чтобы сохранить синонимы на постоянной основе, нужно прописать выполнение команд alias в файл .bashrc .
Запустите терминал и откройте файл .bashrc для редактирования, выполнив команду:
Перейдите в конец файла и введите команды для создания синонимов, по одному на каждой строчке, например:
Сохраните изменения и закройте файл. Для этого нажмите Ctrl+X , откроется запрос на сохранение изменений в файле — нажмите y и затем Enter .
Чтобы изменения вступили в силу, можно выйти и снова войти в систему или выполните команду:
Просмотр списка синонимов
Чтобы просмотреть список всех активных в данный момент синонимов используется команда:
Во многих дистрибутивах несколько синонимов уже может быть создано в системе. Например у меня результат следующий:
Удаление синонимов
Чтобы удалить синоним используется команда unalias . Удаление происходит только в текущей сессии терминала.
Удаление синонима по заданному имени:
Удаление всех синонимов:
Несколько примеров синонимов
Очистка окна терминала:
Вывод подробного списка файлов:
Вывод списка скрытых файлов:
Поиск по истории команд (запускается, например, так hs ssh ):
Показать список открытых портов:
Выполнять ping только 5 раз, а не бесконечно:
Узнать свой внешний IP-адрес:
Создание синонимов, используя Bash-функции (синонимы с аргументами)
Командная оболочка Bash позволяет создавать функции, которые могут выполнять одну или несколько команд. Они относятся к программированию в Bash, но их иногда можно использовать и для создания синонимов. Такие функции могут принимать аргументы в командой строке, в отличии от синонимов, создаваемых командой alias.
Синтаксис функций в Bash
Данный код создает функцию , которая выполняет команды . Команда может быть одна или несколько. Чтобы выполнить функцию достаточно ввести в командной строке ее название. Через пробел можно передавать аргументы.
Чтобы внутри функции обратиться к аргументам, используются сокращения $1 , $2 и т.д. $1 соответсвует первому аргументу, $2 второму и т.д. $0 соответсвует имени функции.
Примеры создания функций
Функции можно создавать прямо в текущей сессии терминала, но лучше прописать их в файле .bashrc .
Создадим функцию которая принимает имя директории, создает данную директорию и переходит в нее:
Теперь, вместо того, чтобы выполнять mkdir для создания директории, а затем cd , чтобы перейти в нее, достаточно выполнить:
У вас может возникнуть вопрос, что означают символы — и && внутри нашей функции?
- — — используется, чтобы указать, конец опций команды. То есть все, что будет записываться после — это уже аргументы и они не будут интерпретироваться, как опции для данной команды. В нашем примере мы можем попробовать создать директорию имя которой начинается с символа — , и если бы мы не использовали — , то команда mkdir подумала бы, что мы пытаемся передать ей не имя директории а опцию.
- && — логическое И — сначала выполняется команда, стоящая слева от && и только если она выполнена успешно, запускается команда, стоящая справа от && .
Заключение
Синонимы команд в Linux очень удобный инструмент, упрощающий работу с системой. В данной статье мы рассмотрели создание синонимов командой alias , а также использование функций Bash для создания синонимов.
Не смотря на удобство использования синонимов, сильно увлекаться ими не стоит. Не нужно создавать тонну алиасов на все случаи жизни. Это может привести к путанице и банальному незнанию полных команд, когда пересаживаешься за другой компьютер.
Также нужно быть крайне аккуратным при создании синонимов, которые имеют такое же имя, как и сама команда, которую они выполняют. Переписывая таким образом поведение команды, выполнение синонима, вместо команды, иногда может приводить к неочевидным результатам.
Полезные alias Linux
Alias Linux — это, по сути, ярлыки команд Linux. Команда alias позволяет пользователю запускать любую команду или даже группу команд, в том числе с опциями, параметрами и файлами, вводом одного слова или даже символа. Это очень удобно во многих ситуациях, например чтобы не вводить полностью команду при обновлении или же очень быстро перемещаться по каталогам.
В этой инструкции будет рассмотрена команда alias linux, а также полезные алиасы, которые без сомнения must have в каждой системе.
Команда alias
Чтобы посмотреть какие псевдонимы linux команд уже заданны в вашей системе просто выполните:
В выводе вы увидите что-то подобное:
alias beep=’echo -en «\007″‘
alias cd..=’cd ..’
alias dir=’ls -l’
alias egrep=’egrep —color=auto’
alias fgrep=’fgrep —color=auto’
alias grep=’grep —color=auto’
Команда покажет все alias команд linux определенные для текущего пользователя. Вывод очень сильно зависит от вашего дистрибутива. Общий синтаксис команды выглядит следующим образом:
$ alias имя = «значение»
$ alias имя = «команда аргумент1 аргумент2»
$ alias имя = «/путь/к/исполняемому/файлу»
Вы можете создавать новые псевдонимы, просто выполняя эту команду в терминале. Но созданные таким образом алиасы linux будут работать только в этом терминале и только до его закрытия.
Давайте для примера создадим alias linux для такой часто используемой команды, как clear (очистить вывод терминала):
Теперь, чтобы очистить терминал достаточно выполнить:
Удалить созданный alias можно с помощью команды unalias:
Но как я уже сказал, такие alias команд linux сохраняются только до закрытия терминала. Поэтому их необходимо создавать в начале каждой терминальной сессии. Для этого можно записать все нужные команды в
/.bashrc. При запуске терминала, каждый раз выполняется этот скрипт, чтобы установить переменные окружения и подготовить оболочку. Таким образом добавив нужные строки в конец файла мы получим работающие alias linux в каждом терминале.
Продолжим создание alias для команды clear:
Добавьте эту строку в конец файла:
Затем сохраните и закройте редактор (:wq). Чтобы проверить работоспособность запустите новый терминал. Если вы хотите чтобы ваши алиасы linux были доступны для всех пользователей, необходимо использовать файл /etc/bashrc.
Поскольку .bashrc, это обычный bash скрипт, перед нами открываются большие возможности. Например мы можем добавить alias команд с использованием sudo, если текущий пользователь не root:
if [ $UID -ne 0 ]; then
alias reboot=’sudo reboot’
alias update=’sudo apt-get upgrade’
fi
Так же само, мы можем менять команды алиасов в зависимости от дистрибутива:
case $_myos in
Linux) alias foo=’/path/to/linux/bin/foo’;;
FreeBSD|OpenBSD) alias foo=’/path/to/bsd/bin/foo’ ;;
SunOS) alias foo=’/path/to/sunos/bin/foo’ ;;
*) ;;
esac
Чтобы удалить alias достаточно просто удалить запись о нем, из того файла в который вы ее добавили. Мы рассмотрели основы добавления alias linux, теперь давайте перейдем к списку полезных алиасов linux.
Полезные alias Linux
Вы можете добавить в своей системе любые или даже все эти алиасы linux чтобы повысить продуктивность своей работы в терминале.
1. Вывод ls
alias ls=’ls —color=auto’
Показывать скрытые файлы и представлять вывод в виде списка:
Показать только скрытые файлы:
alias l.=’ls -d .* —color=auto’
2. Перемещение по каталогам
Быстрое перемещение от текущей директории:
3. Вывод grep
Делаем вывод цветным:
alias grep=’grep —color=auto’
alias egrep=’egrep —color=auto’
alias fgrep=’fgrep —color=auto’
4. Калькулятор
Запускать калькулятор с поддержкой стандартной библиотеки mathlib:
5. Создание хеша
alias sha1=’openssl sha1′
6. Создание каталогов
Создавать дерево каталогов, если оно не существует:
alias mkdir=’mkdir -pv’
6. Вывод diff
Делаем вывод diff цветным:
7. Вывод mount
Сделаем вывод mount читаемым:
alias mount=’mount |column -t’
8. Ярлыки
Сократим команды для экономии времени:
alias h=’history’
alias j=’jobs -l’
9. Информация и дата
alias path=’echo -e $
alias now=’date +»%T»‘
alias nowtime=now
alias nowdate=’date +»%d-%m-%Y»‘
10. Редактор Vim
alias команд linux для использования редактора vim по умолчанию:
alias vi=vim
alias svi=’sudo vi’
alias vis=’vim «+set si»‘
alias edit=’vim’
11. Ping
Посылать только пять запросов:
alias ping=’ping -c 5′
Интервал между запросами одна секунда:
alias fastping=’ping -c 100 -s.2′
12. Открытые порты
alias ports=’netstat -tulanp’
13. Wakeup
Будим серверы в режиме сна по mac адресу с помощью утилиты wakeonlan:
alias wakeupnas01=’/usr/bin/wakeonlan 00:11:32:11:15:FC’
alias wakeupnas02=’/usr/bin/wakeonlan 00:11:32:11:15:FD’
alias wakeupnas03=’/usr/bin/wakeonlan 00:11:32:11:15:FE’
14. Управление iptables
alias iptlist=’sudo /sbin/iptables -L -n -v —line-numbers’
alias iptlistin=’sudo /sbin/iptables -L INPUT -n -v —line-numbers’
alias iptlistout=’sudo /sbin/iptables -L OUTPUT -n -v —line-numbers’
alias iptlistfw=’sudo /sbin/iptables -L FORWARD -n -v —line-numbers’
alias firewall=iptlist
15. Curl
Получить заголовки сервера:
alias header=’curl -I»
Проверять поддержку сжатия на сервере:
alias headerc=’curl -I —compress’
16. Работа с файлами
Не удалять корень и предупреждать об удалении файлов:
alias rm=’rm -I —preserve-root’
alias mv=’mv -i’
alias cp=’cp -i’
alias ln=’ln -i’
Защита от изменения прав для /:
alias chown=’chown —preserve-root’
alias chmod=’chmod —preserve-root’
alias chgrp=’chgrp —preserve-root’
17. Обновление Debian
alias apt-get=»sudo apt-get»
alias updatey=»sudo apt-get —yes»
Обновление одной командой:
alias update=’sudo apt-get update && sudo apt-get upgrade’
18. Обновление RedHat
В семействе дистрибутивов Red Hat используется пакетный менеджер yum:
alias update=’yum update’
alias updatey=’yum -y update’
19. Стать суперпользователем
alias root=’sudo -i’
alias su=’sudo -i’
20. Выключение
Выполнять команды выключения через sudo:
alias reboot=’sudo /sbin/reboot’
alias poweroff=’sudo /sbin/poweroff’
alias halt=’sudo /sbin/halt’
alias shutdown=’sudo /sbin/shutdown’
21. Управление серверами
alias nginxreload=’sudo /usr/local/nginx/sbin/nginx -s reload’
alias nginxtest=’sudo /usr/local/nginx/sbin/nginx -t’
alias lightyload=’sudo /etc/init.d/lighttpd reload’
alias lightytest=’sudo /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf -t’
alias httpdreload=’sudo /usr/sbin/apachectl -k graceful’
alias httpdtest=’sudo /usr/sbin/apachectl -t && /usr/sbin/apachectl -t -D DUMP_VHOSTS’
22. Резервное копирование
alias backup=’sudo /home/scripts/admin/scripts/backup/wrapper.backup.sh —type local —taget /raid1/backups’
23. Мультимедиа
Открыть видео в текущей директории:
alias playavi=’mplayer *.avi’
alias vlc=’vlc *.avi’
Добавить в плейлист музыку из текущей директории:
alias playwave=’for i in *.wav; do mplayer «$i»; done’
alias playogg=’for i in *.ogg; do mplayer «$i»; done’
alias playmp3=’for i in *.mp3; do mplayer «$i»; done’
Открыть музыку из устройства nas:
alias nplaywave=’for i in /nas/multimedia/wave/*.wav; do mplayer «$i»; done’
alias nplayogg=’for i in /nas/multimedia/ogg/*.ogg; do mplayer «$i»; done’
alias nplaymp3=’for i in /nas/multimedia/mp3/*.mp3; do mplayer «$i»; done’
23. Системное администрирование
Работать с интерфейсом eth1:
alias dnstop=’dnstop -l 5 eth1′
alias vnstat=’vnstat -i eth1′
alias iftop=’iftop -i eth1′
alias tcpdump=’tcpdump -i eth1′
alias ethtool=’ethtool eth1′
Работать с интерфейсом wlan0 по умолчанию:
alias iwconfig=’iwconfig wlan0′
24. Информация о системе
alias meminfo=’free -m -l -t’
Показать процессы потребляющие больше всего памяти:
alias psmem=’ps auxf | sort -nr -k 4′
alias psmem10=’ps auxf | sort -nr -k 4 | head -10′
Показать процессы использующие процессор:
alias pscpu=’ps auxf | sort -nr -k 3′
alias pscpu10=’ps auxf | sort -nr -k 3 | head -10′
Информация о процессоре:
Посмотреть память видеокарты:
alias gpumeminfo=’grep -i —color memory /var/log/Xorg.0.log’
25. Управление роутером
alias rebootlinksys=»curl -u ‘admin:my-super-password’ ‘http://192.168.1.2/setup.cgi?todo=reboot'»
alias reboottomato=»ssh admin@192.168.1.1 /sbin/reboot»
27. Wget
Продолжать незавершенную загрузку по умолчанию:
28. Браузеры
alias ff4=’/opt/firefox4/firefox’
alias ff13=’/opt/firefox13/firefox’
alias chrome=’/opt/google/chrome/chrome’
alias opera=’/opt/opera/opera’
Браузер по умолчанию:
29. Алиасы для ssh
Вы можете создавать псевдонимы Linux команд для подключений по ssh с помощью конфигурационного файла OpenSSL —
/.ssh/config. Не нужно этого делать с помощью обычных алиасов, здесь функционал шире. Например:
Host server10
Hostname 1.2.3.4
IdentityFile
/backups/.ssh/id_dsa
user foobar
Port 30000
ForwardX11Trusted yes
TCPKeepAlive yes
30. Другие
Правильное отображение для df и du:
alias df=’df -H’
alias du=’du -ch’
alias nfsrestart=’sync && sleep 2 && /etc/init.d/httpd stop && umount netapp2:/exports/http && sleep 2 && mount -o rw,sync,rsize=32768,wsize=32768,intr,hard,proto=tcp,fsc natapp2:/exports /http/var/www/html && /etc/init.d/httpd start’
Состояние кеширующего сервера:
alias mcdstats=’/usr/bin/memcached-tool 10.10.27.11:11211 stats’
alias mcdshow=’/usr/bin/memcached-tool 10.10.27.11:11211 display’
Выводы
Если вы знаете другие полезные alias команд linux, то поделитесь ими с нами в комментариях!
Оцените статью:
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux интересуюсь всем, что связано с информационными технологиями и современной наукой.
9 комментариев
Кхе, кхе. Что будет — ежели сотворить текстовый файл с набором alias, который будучи вставленным в
/.bashrc после первой установки системы, выполнял бы обновление, удаление гостевого сеанса, открывал бы скрытые пункты автозагрузки? Список можно продолжить. Черновой работы подобного рода море, особенно в классической Ubuntu.
P.S. Не судите строго. 😉
Интересно, но это уже не alias, а просто скрипт.
это и есть алиася. Или сделать /etc/profile.d/aliases.sh — рекомеднуют туда. Это для всех пользователей будет действовать.
Еще бы статью про функции, я их тоже в /etc/profile.d/файл помещаю. Но надо обязательно все проверить перед перезагрузкой.
И к функциям сделать bash-completion
Хмм. Можно попробовать
alias sizes=»du —summarize —human-readable *»
df -h и free -h по умолчанию
Обновление, наверное, лучше всё же скриптами. Тот же «
root/update » лично у меня запускает что-то вида emerge -DuNv$1 $2 —keep-going @world && emerge -vD$1 $2 —depclean && emerge @preserved-rebuild && revdep-rebuild && beep -f 2000 -l 50 || beep -f 100 -l 150″ плюс записывает время начала выполнения, time разных процессов обновления, запускает пакетный менеджер с нужными nice и ionice, и так далее. В перспективе можно прикрутить к этому cgroups, чтоб уж точно не поджимал по быстродействию, и цветное перенаправление во временные файлы для дальнейшего курения в случае ошибок. А запускаться всё равно будет так же. И не надо писать лютый однострочник с сомнительной поддержкой переменных и прочего.
Введенные на не_той раскладе команды, алиас запуска не умеющего в rc-файлы эмулятора терминала, sublime-text=»/opt/. «, и так далее. Простор огромен.
//а, и ещё манпейджи говорят про интересные применения в плане чтения истории команд плюс команду «type», показывающую текущие алиасы для команды, и «command», пропускающую алиасы при выполнении.
Ну и удобные алиасы для каждого всё равно будут своими.
Что бы не корёжить файл .bashrc, можно создать рядом файл .bash_aliases и добавлять алиасы в него.
Хорошая статья. Я делаю дополнительный файл алиасов — host-specific. Модифицирую .bashrc добавив пару строчек.
[[ -f $HOME/.bashrc.$HOSTNAME ]] && . «$HOME/.bashrc.$HOSTNAME»Хорошо бы еще написать статью про внедрение функций для расширения функционала. (PS прошу прощения если таковая уже иммется. )
Допустим, я сделал алиас apt=’aptitude’.
Как мне вызвать прежний apt (unalias не предлагать)?