Создание синонимов (алиасов) команд в Linux. Команда alias. Linux статьи
Написать статью
Войдите, чтобы писать статьи

Создание синонимов команд в Linux. Команда alias

5

Синонимы команд alias

В Linux можно создавать синонимы для других команд. Рассмотрим, как это сделать.

Синонимы для команд (или псевдонимы, или алиасы) — это команда, состоящая из одного слова, но выполняющая другую заданную команду. Это удобно, например, когда нужно часто выполнять длинную команду или команду с различными ключами. Вместо ввода длинной команды достаточно выполнить одну команду-синоним.

Создание синонимов (команда alias)

В командной оболочке Bash для создания синонимов используется команда alias.

Синтаксис команды 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 
    ...
}

Или:

function имя_функции {
    команда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 для создания синонимов.

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

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

Лайков: +1
войдите, чтобы ставить лайки
5
  • Опубликовано: 04.02.2019

Комментарии

Agafron
05.02.2019
00:43
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
опечатко:
mkcd mynewdir
yuriy
Активный пользователь
Активный
05.02.2019
17:02
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийAgafronРодительский комментарий
+1
войдите, чтобы ставить лайки
Спасибо! Исправлено.
Артем
10.03.2020
11:44
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+2
войдите, чтобы ставить лайки
Хм, у меня в bashrc вот что написано:
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

Использовать .bash_aliases для своих алиасов :)
Артём
24.07.2021
14:16
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Спасибо! полезная информация, для новичка
Тони
28.07.2023
06:04
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
А зачем отдельный инструмент для алиасов, если можно просто написать скрипт на bash и добавить его в ...bin (чтобы его имя воспринималось терминалом как команда)?

Написать комментарий

Ваше имя:
Текст комментария:
  • Уважать других.
  • Не ругаться.
  • Без оскорблений.
  • Без грубости.
  • Не переходить на личности.
  • Писать на русском языке.
  • Без политики.
  • Без флуда.
Правила