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

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

  • Bash: используйте псевдоним переменной
  • Как получить то же самое с цветами, работающими как на OSX, так и на Ubuntu?
  • Является ли наложение псевдослучайной команды на ядро?
  • как добавить параметр в bash alias без пробела между ними?
  • вызов функции Bash из определения псевдонима
  • Одинарные или двойные кавычки при определении псевдонима?
  • В zsh как установить псевдоним для `less` для получения вывода stderr?
  • Разрешить вложенные псевдонимы в исходные команды
  • 6 Solutions collect form web for “Запустите команду, которая затенена псевдонимом”

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

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

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

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

    Введите команду: "ls" или 'ls' согласно комментарию Микеля.

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

    Это для command строки.

    Пытаться

     command ls 

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

    Этот способ поддерживается bash , zsh и ash / dash.

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

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

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

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

     $(which ls) `which ls` 

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

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

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

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

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

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

    Linux и Unix - лучшая ОС в мире.