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

Содержание
Что такое 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
Список у разных дистрибутивов разный. В 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 или ~/.bashrc | source ~/.bashrc |
| bash в Fedora | ~/.bashrc.d/*.sh или ~/.bashrc | source ~/.bashrc |
| bash в Arch | ~/.bashrc | source ~/.bashrc |
| zsh | ~/.zshrc | source ~/.zshrc |
| fish | alias с 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 псевдонимы по умолчанию не раскрываются. Пишите команды полностью или используйте функции.
Документация и источники
- Bash Reference Manual: Aliases, GNU Project, 2025
- fish shell documentation: alias, abbr, funcsave, fish-shell, 2026
- rm invocation (GNU Coreutils), GNU Project, 2025
Читайте также
Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.