LinuxRuLinux без лишней теории
Командная строка

Aliases в Linux: псевдонимы команд, которые экономят время

Редакция LinuxRu6 мин чтенияСоветы

Alias в Linux создаётся командой alias имя='команда', а чтобы псевдоним сохранился после закрытия терминала, строку записывают в ~/.bashrc или ~/.bash_aliases. Ниже синтаксис с подвохами кавычек, файлы для bash, zsh и fish, готовый набор и случаи, когда вместо псевдонима нужна функция.

Aliases в Linux: псевдонимы команд, которые экономят время
Содержание
  1. Что такое alias
  2. Список псевдонимов
  3. Синтаксис
  4. Постоянные псевдонимы
  5. Готовый набор
  6. Обход и удаление
  7. Функции
  8. Alias и sudo
  9. Частые вопросы

Что такое alias и зачем он нужен

Alias, или псевдоним, это короткое имя, которое оболочка подставляет вместо длинной команды. Вы набираете ll, а bash выполняет ls -alF. Подстановка происходит до запуска программы, поэтому к псевдониму можно дописывать обычные аргументы: ll /etc превратится в ls -alF /etc.

Где это реально экономит время: обновление системы одной командой, проверка открытых портов, переход в рабочие каталоги, команды с длинными ключами, которые всё время забываются. Плюс защита от ошибок: псевдоним может добавить подтверждение к rm или mv.

Механизм не менялся годами и одинаково работает в bash 5.x, который стоит по умолчанию в Debian 13, Ubuntu 26.04 LTS, Fedora 44 и Arch. В zsh синтаксис тот же, в fish немного другой, об этом ниже.

Какие псевдонимы уже есть в системе

Команда alias без аргументов выводит всё, что определено в текущей оболочке:

alias
# один конкретный псевдоним
alias ll
# что именно скрывается за именем: alias, функция или файл
type ll
Вывод команды alias в терминале Linux со списком псевдонимов
Команда alias показывает псевдонимы, уже заданные в системе

Список у разных дистрибутивов разный. В Debian и Ubuntu стандартный ~/.bashrc включает цветной вывод ls и grep, а в Ubuntu добавлены ещё ll, la, l и alert. В Fedora часть псевдонимов приходит из скриптов в /etc/profile.d/, например цветной ls. В Arch стандартный .bashrc минимален и задаёт только ls --color=auto и grep --color=auto.

Команда type полезнее, чем кажется. Если какая-то программа ведёт себя странно, type имя сразу покажет, не перехватывает ли её псевдоним.

Как создать alias: синтаксис и кавычки

Формат один: слово alias, имя, знак равенства без пробелов и команда в кавычках.

alias ll='ls -alF'
alias ..='cd ..'
alias ports='ss -tulpn'

Пробел вокруг = ломает команду: bash воспримет alias ll = 'ls' как три отдельных аргумента и выдаст ошибку. Кавычки нужны всегда, когда в команде есть пробелы.

Одинарные или двойные кавычки

Разница существенная. В двойных кавычках переменные и подстановки раскрываются в момент создания псевдонима, в одинарных при каждом запуске.

alias today="echo $(date +%F)"   # дата застынет на момент чтения .bashrc
alias today='echo $(date +%F)'   # дата будет свежей при каждом вызове

Если сомневаетесь, используйте одинарные кавычки. Двойные нужны, когда вы сознательно хотите зафиксировать значение, например путь из переменной окружения.

Несколько команд в одном псевдониме

Команды объединяются через && (следующая выполнится только при успехе предыдущей) или через точку с запятой (выполнятся все подряд):

alias upd='sudo apt update && sudo apt upgrade'

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

Постоянные псевдонимы в .bashrc, .zshrc и fish

Bash при запуске интерактивного сеанса читает ~/.bashrc. Добавьте псевдонимы в конец файла и перечитайте его без перезапуска терминала. Если nano для вас непривычен, загляните в базовые команды редактора nano.

nano ~/.bashrc
# после сохранения файла
source ~/.bashrc

В Debian и Ubuntu удобнее отдельный файл ~/.bash_aliases. Стандартный .bashrc этих систем уже содержит проверку: если файл существует, он подключается автоматически. Так псевдонимы не теряются среди остальных настроек и их легко перенести на другой компьютер.

В Fedora стандартный ~/.bashrc подключает все файлы из каталога ~/.bashrc.d/. Создайте там, например, aliases.sh:

mkdir -p ~/.bashrc.d
nano ~/.bashrc.d/aliases.sh
Оболочка или системаКуда писать псевдонимыКак применить
bash в Debian, Ubuntu, Mint~/.bash_aliases или ~/.bashrcsource ~/.bashrc
bash в Fedora~/.bashrc.d/*.sh или ~/.bashrcsource ~/.bashrc
bash в Arch~/.bashrcsource ~/.bashrc
zsh~/.zshrcsource ~/.zshrc
fishalias с funcsave или abbr в config.fishСразу
Для всех пользователей/etc/bash.bashrc (Debian, Arch) или /etc/bashrc (Fedora)Новый сеанс

В fish команда alias на самом деле создаёт функцию, а funcsave сохраняет её в ~/.config/fish/functions/. Многие пользователи fish предпочитают abbr: аббревиатура разворачивается в полную команду прямо в строке ввода, и в истории остаётся настоящая команда, а не короткое имя.

# fish
alias ll 'ls -alF'
funcsave ll
abbr -a gs 'git status'

Набор полезных псевдонимов

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

# обновление системы, оставьте строку для своего дистрибутива
alias upd='sudo apt update && sudo apt full-upgrade'      # Debian, Ubuntu
alias upd='sudo dnf upgrade --refresh'                    # Fedora
alias upd='sudo pacman -Syu'                              # Arch

# навигация и списки
alias ll='ls -alFh'
alias ..='cd ..'
alias ...='cd ../..'

# подтверждение перед перезаписью и удалением
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -I'

# диагностика
alias ports='ss -tulpn'
alias dfh='df -h -x tmpfs -x devtmpfs'
alias errs='journalctl -b -p err'
alias myip='curl -s ipinfo.io/ip'

Ключ -I у rm мягче, чем -i: GNU rm спросит подтверждение один раз, если удаляется больше трёх файлов или каталог рекурсивно, и не будет дёргать на каждом файле. Подробнее про ключи обновления в Arch читайте в статье pacman: команды и обслуживание пакетов.

Не привыкайте к защитным псевдонимам слишком сильно. На чужом сервере или в свежей системе rm без вашего .bashrc ничего не спросит. Полезная привычка: держать файл псевдонимов в git или в облаке и подтягивать его на каждую машину, где вы работаете.

Как обойти или удалить псевдоним

Иногда нужна исходная команда без подмены. Есть три способа:

\rm файл          # обратная косая черта отключает псевдоним
command rm файл   # то же через встроенную команду
/usr/bin/rm файл  # полный путь к программе

Удалить псевдоним из текущего сеанса можно командой unalias ll, все сразу снимает unalias -a. Это действует только до закрытия терминала. Чтобы удалить навсегда, сотрите строку из файла настроек и перечитайте его через source или откройте новый терминал.

Когда вместо alias нужна функция

Псевдоним умеет только подставлять текст в начало строки. Аргументы всегда оказываются в конце, вставить их в середину нельзя. Как только нужна логика или аргумент внутри команды, пишите функцию. Она живёт в тех же файлах, что и псевдонимы:

# создать каталог и сразу перейти в него
mkcd() {
    mkdir -p -- "$1" && cd -- "$1"
}

# найти процесс по имени
psg() {
    ps aux | grep -i -- "$1" | grep -v grep
}

Ещё одно ограничение: в неинтерактивных скриптах bash псевдонимы по умолчанию не раскрываются. Если скрипт полагается на ваш ll, он упадёт с ошибкой command not found. В скриптах пишите команды полностью или используйте функции. Включить раскрытие можно через shopt -s expand_aliases, но это скорее костыль.

Псевдонимы и sudo

Частая ситуация: ll работает, а sudo ll выдаёт command not found. Причина в том, что bash проверяет на псевдоним только первое слово команды, а здесь первое слово sudo. Руководство bash описывает выход: если значение псевдонима заканчивается пробелом, следующее слово тоже проверяется на псевдоним.

alias sudo='sudo '

После этого sudo ll раскроется в sudo ls -alFh. Функции так не работают: sudo запускает программу напрямую и не видит функций вашей оболочки. Про настройку прав и группы sudo рассказано в материале пользователи и sudo в Linux, а приёмы ускорения работы в командной строке собраны в статье горячие клавиши терминала.

Если псевдоним не срабатывает при входе по SSH, проверьте ~/.bash_profile: в некоторых системах login-оболочка читает его, а не .bashrc. Обычно там уже есть строка, подключающая .bashrc, если её нет, добавьте. Полное описание механизма есть в разделе Aliases руководства GNU Bash.

Частые вопросы

Почему alias пропадает после закрытия терминала?

Псевдоним, заданный в командной строке, живёт только в текущем сеансе. Запишите его в ~/.bashrc или ~/.bash_aliases и выполните source ~/.bashrc.

Можно ли передать аргумент в середину alias?

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

Как временно выполнить команду без псевдонима?

Поставьте обратную косую черту перед именем (\rm), используйте command rm или полный путь /usr/bin/rm.

Почему alias не работает с sudo?

Bash раскрывает псевдонимы только в первом слове. Добавьте alias sudo='sudo ' с пробелом в конце, тогда следующее слово тоже раскроется.

Работают ли псевдонимы в скриптах?

В неинтерактивных скриптах bash псевдонимы по умолчанию не раскрываются. Пишите команды полностью или используйте функции.

Документация и источники

Читайте также

Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.