Запустите команду, которая затенена псевдонимом

Предположим, у меня есть следующий псевдоним в bash - alias ls='ls --color=auto' - и я хочу вызвать обычный ls без параметров. Единственный способ сделать это - это сделать unalias, выполнить команду, а затем снова добавить псевдоним? Или есть какой-то отличный трюк или обход?

135 голосов | спросил Mirzhan Irkegulov 25 Mayam12 2012, 00:22:02

6 ответов


181

Вы также можете префикс обратной косой черты, чтобы отключить псевдоним: \ls

Изменить: Другие способы сделать то же самое:

Используйте команду «команда»: command ls согласно Mikel .

Используйте полный путь: /bin/ls согласно uther .

Отправьте команду: "ls" или 'ls' в соответствии с комментарием Mikel.

Вы можете временно удалить псевдоним для сеанса терминала с помощью unalias command_name.

ответил Alex 12 AMpTue, 12 Apr 2016 07:15:26 +030015Tuesday 2016, 07:15:26
67

Это команда command.

Try

command ls

Это говорит оболочке обходить псевдонимы и функции.

Этот способ поддерживается bash , zsh и золы /тире

ответил Mikel 25 Mayam12 2012, 02:22:51
19

Псевдоним - это всего лишь определенный ярлык. В этом примере определяемый псевдоним представляет собой строку ls, которая выполняет ls --color=auto. Если вы не хотите этого поведения, вы можете вызвать двоичный ls, используя абсолютный путь.

Таким образом, выполнение только /bin/ls приведет к выпуску без цвета, потому что это не тот псевдоним, который вы определили.

Вы также можете изменить псевдоним на что-то другое или добавить новый псевдоним, который выполняет только ls без цветовых параметров.

ответил George M 25 Mayam12 2012, 00:33:02
9

Другой способ, основываясь на ответе @ uther, заключается в использовании $(which ...) или `which ...` (с использованием backticks ``), чтобы автоматически найти путь исполняемого файла. Это будет работать в bash:

$(which ls)

`which ls`

Несомненно, просто префикс команды с \ намного короче.

ОБНОВЛЕНИЕ . Согласно Как использовать `which` в команде с псевдонимом? , это не кажется надежным вообще.

ответил krlmlr 25 Maypm12 2012, 13:13:24
2

Лично я просто избегаю определения псевдонимов с теми же именами, что и команды, поэтому ls всегда вызывает действительную команду. У меня есть псевдонимы или функции для различных комбинаций опций, таких как l, ll и lg. (Это означает, что мне нужно unalias ls в моем .bashrc или .cshrc.)

Я нахожу, что предположения OS о том, какие параметры я могу предпочесть (переопределяя предположения разработчиков самой команды ls), редко соответствуют моим личным вкусам. Мне не нравится внешний вид ls --color=auto, и его разборчивость может сильно различаться между черным по белому и белым-на-черном.

YMMV, и другие решения, конечно, все еще хорошо знать.

ответил Keith Thompson 26 Mayam12 2012, 01:00:01
1

Ввод команды в верхнем регистре, похоже, работает, например LS, хотя я не совсем уверен, почему.

ответил asmeurer 25 Mayam12 2012, 03:06:37

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132