Вопрос Как увидеть команду, связанную с псевдонимом bash?


Предположим, у меня есть псевдоним в оболочке bash. Есть ли простая команда для печати какой команды будет выполняться псевдоним?


258
2018-02-07 03:24


происхождения




ответы:


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

$ type ls
ls is aliased to `ls --color=auto'
$ type rm
rm is /bin/rm
$ type cd
cd is a shell builtin
$ type psgrep
psgrep is a function
psgrep () 
{ 
    ps -ef | { 
        read -r;
        echo "$REPLY";
        grep --color=auto "$@"
    }
}

342
2018-02-12 09:52



что делать, если псевдоним содержит MORE aliases? - user251046
@ user251046 продолжают использовать type пока вы не нажмете что-то другое, кроме псевдонима ... - geirha
Мне нравится этот ответ, потому что type будут анализировать или интерпретировать любые кавычки, поэтому вы можете убедиться, что кавычки правильные. - wisbucky


Просто введите alias в командной строке. Он должен вывести список всех активных в настоящее время псевдонимов.

Или вы можете ввести alias [command] чтобы увидеть, какой особый псевдоним псевдоним, например, если вы хотите узнать, что ls псевдоним был псевдонимом, вы могли бы сделать alias ls,


127
2018-02-07 03:30



Или введите alias ls узнать, что конкретно ls сглаживается. - poolie
@poolie Действительно. Я думаю, что вопрос состоял в том, чтобы увидеть все псевдонимы, тем не менее, поэтому я еще не уточнил команду alias. - Thomas Ward♦
в то время как это работает для псевдонимов, это не работает, если вы определили пользовательскую функцию оболочки. type однако работает в обоих случаях. - Sujay Phadke


мне действительно нравится Ctrl+Alt+Е как я узнал из этот ответ, Он «расширяет» введенную в настоящее время командную строку, что означает, что он выполняет расширение псевдонимов (среди прочего).

Что это значит? Он превращает любой псевдоним, который в настоящее время записывается в командной строке, в то, что означает псевдоним.

Например, если я набираю:

$ ls

и затем нажмите Ctrl+Alt+Е, он превращается в

$ ls --time-style=locale --color=auto

51
2018-02-13 17:52



имеют ли это эквивалент на других дистрибутивах? - sepehr
@sepehr Работает на Debian, я предполагаю, что это функция bash и должна работать над любым дистрибутивом. - Der Hochstapler
вы правы, это работает на bash, но у меня есть zsh, и это не работает, к сожалению. - sepehr
был действительно полезен. У меня была другая цель - расширить одну из предыдущих команд bash, зарегистрированных в истории, с помощью, т. Е.! 394, чтобы я мог сначала ее отредактировать до выполнения - XXL
Как это сделать на bash OSX? - Govind Rai


Строго говоря, правильный ответ заключается в использовании массива BASH_ALIASES, например:

$ echo ${BASH_ALIASES[ls]}
ls -F --color=auto --show-control-chars

6
2018-01-13 12:12



Я нашел это полезным в ситуации, когда я хотел, чтобы программный доступ к фактическому утверждению был псевдонимом без полезного для человека материала. - M. Justin
Очень полезно, спасибо! - Noldorin
это не работает в zsh - ProGrammar
@ProGrammar вопрос был о bash - для zsh вы должны посмотреть вопросы о zsh - noonex


Вы можете использовать which команда.

Если вы установите псевдоним для ls в виде ls -al и затем введите which ls, ты увидишь:

ls: aliased to ls -al,


1
2017-08-05 07:36



bash не имеет which команда. - geirha
Не работает для меня .. - Chiel ten Brinke
Он работает на меня. благодаря - Indrajeet Gour
which это плохой способ поиска псевдонимов, как описано здесь: unix.stackexchange.com/questions/10525/...   Это даже не работает для меня для псевдонимов в bash на Ubuntu. - Sujay Phadke