Bash: псевдонимы

Очень полезно в файле ~/.bashrc определить псевдонимы (aliases) для некоторых часто используемых команд. Псевдоним -- это просто некоторое условное имя, подменяющее определённую команду с теми её опциями, которые мы используем чаще всего. Причём, что характерно, псевдоним команды может совпадать с ее именем. То есть, например, -- набирая просто ls, мы получаем список файлов не в умолчальном формате, а в том, в каком нам угодно было пожелать.

Устанавливаются псевдонимы одноименной командой alias, в качестве аргументов которой выступают имя псевдонима и его значение, соединенные оператором присваивания (именуемым в просторечии знаком равенства). А именно, если мы хотим ныне, и присно, и во веки веков видеть вывод команды ls в цвете, нам достаточно вписать в конфиг bash такой псевдоним:

$ alias ls='ls --color=auto'

Вспомним команды типа cp и mv, которыми мы можем скопировать или переместить какие-то файлы из каталога в каталог. А что произойдет, если чисто случайно в целевом каталоге уже имеются файлы, одноимённые копируемым/перемещаемым? Произойдёт штука, могущая иметь весьма неприятные последствия: файлы в целевом каталоге будут заменены новыми, теми, что копируются туда или перемещаются. То есть исходное содержание этих файлов будет утрачено -- и утрачено безвозвратно.

Разумеется, иногда так и нужно: например, при резервном копировании старые версии файлов и должны быть заменены более свежими их вариантами. Однако такое приемлемо далеко не всегда. И потому в большинстве команд, связанных с необратимыми изменениями файловой системы, предусматривается специальная опция -- -i (или --interactive). Если задать эту опцию с командой cp или mv, то при совпадении имен исходного и целевого файлов будет запрошено подтверждение на выполнение соответствующего действия. И, дабы не держать в голове необходимость опции -i, для команд cp и mv (а также для команды rm, эта операция также практически необратима) целесообразно определить одноимённые им псевдонимы примерно такого вида:

$ alias cp='cp -i'alias mv='mv -i'alias rm='rm -i'

Но что, если заведомо известно, что сотни, а то и тысячи файлов целевого каталога должны быть именно переписаны новыми своими версиями? В этом случае можно прибегнуть к опции -f (или --force). Которая, будучи введённой в командной строке, отменяет действие опции -i из конфига, и предписывает принудительно переписать все файлы целевого каталога их обновлёнными тезками. И никто не мешает нам на этот случай создать ещё один псевдоним для команды cp, например:

$ alias cpf='cp -f'

Второй способ временно избавиться от подтверждения на копирование или удаление файлов -- просто отменить псевдоним. Что делается командой -- unalias. То есть, дав директиву

$ unalias cp

мы вернем команде копирования её первозданный смысл. Ну а узнать, какие псевдонимы у нас определены в данный момент, и каковы их значения, ещё проще: команда

$ alias

без опций и аргументов выведет полный их список.


Главная
Содержание

. .