Создать несколько псевдонимов оболочки одновременно

8

Я хочу вставить в псевдоним разные возможные варианты написания, например, catкоманду. Могу ли я сделать это, используя какой-то символ «или», или он должен быть в новой строке?

alias at|cart|cst '/bin/cat'
Йозеф Климук
источник
7
Напоминает мне один псевдоним, который у меня есть:alias kk='ll'
pLumo
14
Я бы не рекомендовал использовать atв качестве псевдонима для cat. Есть актуальная команда atдля составления расписания: askubuntu.com/a/339301/295286
Сергей Колодяжный

Ответы:

17

Справка для aliasуказывает, что он может назначить несколько псевдонимов одновременно:

alias: alias [-p] [name[=value] ... ]
    Define or display aliases.

    Without arguments, `alias' prints the list of aliases in the reusable
    form `alias NAME=VALUE' on standard output.

    Otherwise, an alias is defined for each NAME whose VALUE is given.
    A trailing space in VALUE causes the next word to be checked for
    alias substitution when the alias is expanded.

Таким образом, вы можете использовать скобки для генерации name=valueпар:

alias {at,cart,cst}='/bin/cat'

Так:

$ alias {at,cart,cst}='/bin/cat'
$ type at cart cst
at is aliased to `/bin/cat'
cart is aliased to `/bin/cat'
cst is aliased to `/bin/cat'

Тем не менее, посмотрите на zsh, который имеет встроенную коррекцию опечаток (которая не поможет at, но поможет другим):

% setopt correct
% sl
zsh: correct `sl' to `ls' [nyae]? y
% setopt correctall
% ls x.v11r4
zsh: correct `x.v11r4' to `X.V11R4' [nyae]? n
/usr/princton/src/x.v11r4 not found
% ls /etc/paswd
zsh: correct to `/etc/paswd' to `/etc/passwd' [nyae]? y
/etc/passwd

Если вы нажмете, yкогда оболочка спросит вас, хотите ли вы исправить слово, оно будет исправлено. Если вы нажмете n, он останется один. Нажатие aотменяет команду, а нажатие eвозвращает строку для редактирования снова, если вы согласны, что слово написано неправильно, но вам не нравится исправление.

Мур
источник
7

Я не думаю, что вы можете назначить несколько псевдонимов одновременно.
Но вы можете перебрать список следующим образом:

for a in cart xat vat xst cst vst dog; do alias "$a"='/bin/cat'; done

Убедитесь, что псевдонимы еще не используются другими программами (как atв вашем примере).

pLumo
источник
Спасибо за ответ, он работает хорошо. У меня есть одна из моих машин linux с tsch по умолчанию. Я попробовал это: foreach x (cst cart); псевдоним $ x = '/ bin / cat'; end.
Йозеф Климук
2
@JosefKlimuk: Похоже, это стоило бы своего ответа. :-)
Дэвид Фёрстер
@ Дэвид Фёрстер, я должен задать это как независимый вопрос?
Йозеф Климук
2
@JosefKlimuk: Нет. Я имею в виду, что вы должны написать правильный ответ на этот вопрос на основе вашего предыдущего комментария.
Дэвид Фёрстер