В Linux можно создавать синонимы для других команд. Рассмотрим, как это сделать.
Синонимы для команд (или псевдонимы, или алиасы) — это команда, состоящая из одного слова, но выполняющая другую заданную команду. Это удобно, например, когда нужно часто выполнять длинную команду или команду с различными ключами. Вместо ввода длинной команды достаточно выполнить одну команду-синоним.
Создание синонимов (команда alias)
В командной оболочке Bash для создания синонимов используется команда alias.
Синтаксис команды alias
Чтобы создать синоним нужно указать команду-синоним и в кавычках указать команду, которая должна выполняться:
синоним — короткая команда (алиас), которая будет использоваться для запуска команды.
команда — команда, которая будет запускаться при вызове синонима. Записывается в двойных или одинарных кавычках.
Примеры создания синонимов
Вывод списка файлов:
alias ll="ls -la"
То есть, вместо выполнения ls -la теперь достаточно выполнить команду ll:
> ll Documents/
итого 16480
drwxr-xr-x 3 yuriy yuriy 4096 дек 7 17:46 .
drwxr-xr-x 45 yuriy yuriy 4096 янв 4 13:23 ..
-rw-rw-r-- 1 yuriy yuriy 155 июл 25 16:12 code.md
drwxrwxr-x 2 yuriy yuriy 4096 июл 27 14:48 data
..
-rw-r--r-- 1 yuriy yuriy 11116 июл 24 22:01 Pingvinus.docx
-rw-rw-r-- 1 yuriy yuriy 251 июл 25 16:31 pingvinus.md
Создадим команду для быстрого перехода в заданную директорию:
alias cdwork=”cd /home/pingvinus/Documents/data”
Пример выполнения:
yuriy@pingvinus:~$ cdwork
yuriy@pingvinus:~/Documents/data$
Подключение по ssh к определенному серверу:
alias serv="ssh -p 1234 pingvinus@192.168.0.123"
Сохранение синонимов
Когда вы создаете синоним с помощью команды alias, то он функционирует только в текущей сессии, пока открыто окно терминала. Чтобы сохранить синонимы на постоянной основе, нужно прописать выполнение команд alias в файл .bashrc.
Запустите терминал и откройте файл .bashrc для редактирования, выполнив команду:
nano ~/.bashrc
Перейдите в конец файла и введите команды для создания синонимов, по одному на каждой строчке, например:
alias ll="ls -la"
alias cdwork="cd /home/pingvinus/Documents/data"
alias serv="ssh -P 1234 pingvinus@192.168.0.123"
Сохраните изменения и закройте файл. Для этого нажмите Ctrl+X, откроется запрос на сохранение изменений в файле — нажмите y и затем Enter.
Чтобы изменения вступили в силу, можно выйти и снова войти в систему или выполните команду:
source ~/.bashrc
Просмотр списка синонимов
Чтобы просмотреть список всех активных в данный момент синонимов используется команда:
alias -p
Во многих дистрибутивах несколько синонимов уже может быть создано в системе. Например у меня результат следующий:
> alias -p
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
Удаление синонимов
Чтобы удалить синоним используется команда unalias. Удаление происходит только в текущей сессии терминала.
Удаление синонима по заданному имени:
unalias имя_синонима
Удаление всех синонимов:
unalias -a
Несколько примеров синонимов
Очистка окна терминала:
alias c="clear"
Вывод подробного списка файлов:
alias ll="ls -la"
Вывод списка скрытых файлов:
alias l.="ls -d .* --color=auto"
Поиск по истории команд (запускается, например, так hs ssh):
alias hs="history | grep"
Показать список открытых портов:
alias ports="netstat -tulanp"
Выполнять ping только 5 раз, а не бесконечно:
alias ping5="ping -c 5"
Узнать свой внешний IP-адрес:
alias ipe="curl ipinfo.io/ip"
Создание синонимов, используя Bash-функции (синонимы с аргументами)
Командная оболочка Bash позволяет создавать функции, которые могут выполнять одну или несколько команд. Они относятся к программированию в Bash, но их иногда можно использовать и для создания синонимов. Такие функции могут принимать аргументы в командой строке, в отличии от синонимов, создаваемых командой alias.
Синтаксис функций в Bash
команда1
команда2
...
}
Или:
команда1
команда2
...
}
Данный код создает функцию, которая выполняет команды. Команда может быть одна или несколько. Чтобы выполнить функцию достаточно ввести в командной строке ее название. Через пробел можно передавать аргументы.
имя_функции аргумент1 аргумент2
Чтобы внутри функции обратиться к аргументам, используются сокращения $1, $2 и т.д. $1 соответсвует первому аргументу, $2 второму и т.д. $0 соответсвует имени функции.
Примеры создания функций
Функции можно создавать прямо в текущей сессии терминала, но лучше прописать их в файле .bashrc.
Создадим функцию которая принимает имя директории, создает данную директорию и переходит в нее:
mkcd ()
{
mkdir -p -- "$1" && cd -P -- "$1"
}
Теперь, вместо того, чтобы выполнять mkdir для создания директории, а затем cd, чтобы перейти в нее, достаточно выполнить:
mkcd mynewdir
У вас может возникнуть вопрос, что означают символы -- и && внутри нашей функции?
- -- - используется, чтобы указать, конец опций команды. То есть все, что будет записываться после -- это уже аргументы и они не будут интерпретироваться, как опции для данной команды. В нашем примере мы можем попробовать создать директорию имя которой начинается с символа -, и если бы мы не использовали --, то команда mkdir подумала бы, что мы пытаемся передать ей не имя директории а опцию.
- && — логическое И — сначала выполняется команда, стоящая слева от && и только если она выполнена успешно, запускается команда, стоящая справа от &&.
Заключение
Синонимы команд в Linux очень удобный инструмент, упрощающий работу с системой. В данной статье мы рассмотрели создание синонимов командой alias, а также использование функций Bash для создания синонимов.
Не смотря на удобство использования синонимов, сильно увлекаться ими не стоит. Не нужно создавать тонну алиасов на все случаи жизни. Это может привести к путанице и банальному незнанию полных команд, когда пересаживаешься за другой компьютер.
Также нужно быть крайне аккуратным при создании синонимов, которые имеют такое же имя, как и сама команда, которую они выполняют. Переписывая таким образом поведение команды, выполнение синонима, вместо команды, иногда может приводить к неочевидным результатам.
Комментарии
00:43
mkcd mynewdir
17:02
11:44
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
Использовать .bash_aliases для своих алиасов :)
14:16
06:04