Мой утренний кофе еще не дошел до моего мозга, когда я забыл цитаты:
alias grep="grep --color=always"
поэтому вместо этого я напечатал:
alias grep=grep --color=always
оставив меня с:
--color=always
grep=grep
в моих псевдонимах.
Когда я пытаюсь очистить --color = всегда используя, unalias --color
я получаю:
bash: unalias: --: invalid option
unalias: usage: unalias [-a] name [name ...]
Я пытался убежать, цитировать и просить, но не могу понять, как заставить коммандос unalias убирать беспорядок.
(Я знаю, что перезапуск сработает, но наверняка должен быть другой путь)
bash
bash-alias
Requist
источник
источник
echo > \\?\c:\windows\x.
, или о том времени, когда яrm -rf * ~
случайно.Ответы:
Вы можете избежать POSIX-совместимых систем, интерпретирующих тире в командах, добавляя
--
перед любыми аргументами.Это также работает с другими утилитами, скажем, у вас есть файл с именем
-bla
. Если вы попытаетесь удалить его вместе сrm
вами, вы получите следующую ошибку:Используя
--
перед именем файла, вы удалите файл:источник
ls ./-bla
иrm ./-bla
(или указать полные пути, что проще в вашем случае). Очевидно, что это не работает для псевдонимов, хотя!Просто используйте тот же трюк, который вы использовали, чтобы установить псевдоним
источник
unalias unalias --color
Быстрое решение
Чтобы исправить оба неправильных псевдонима, вы можете просто запустить
Понимание того, что случилось
Вы даете неправильную команду
alias grep=grep --color=always
без"..."
.Вы устанавливаете два псевдонима
--color
иgrep
; на самом деле вы можете прочитать его в левой части вашего вывода (все слева от команды=
с псевдонимами):так что вам нужно сбросить оба.
Почему это случилось? В синоптических псевдонимов означает , что можно сделать несколько ассигнование в одной строке:
...
В выводе
help alias
вы можете прочитать синоптик, но изman bash
вы можете прочитать, что можно в одной строке даже перечислить и назначить одновременно:У вас есть проблемы, чтобы сбросить первый в
--color
одиночку .Это потому , что оно интерпретируется как варианты для
alias
вашей оболочки; чтобы избежать этого, вам нужно сообщить вашейbash
оболочке, что то, что следует за ней, не вариант.Святой Грааль в Linux:
man
в этом случае ,man bash
что является кессона заполнены сокровищами полезных в подобной ситуации.Вы можете прочитать из
man bash
:Как сообщается в другом ответе, POSIX способ заключается в использовании комбинации специальных символов
--
.Но почему
unalias grep --color
работает? Я имею в виду без использования--
?Поскольку он работал
alias
даже дляunalias
одного человека, можно дать более одного имени за один раз (опять же[...]
).Я могу только догадываться: хорошая привычка программирования - писать процедуры чтения и записи одновременно, по той же логике. Так должно быть для опций парсинга опций
alias
иunalias
.То, что это работает, вы можете увидеть даже из этой команды (из оболочки, открытой для этой цели), которая не удалит все ваши псевдонимы:
Последнее замечание
В разделе «ОШИБКИ»
man bash
среди немногих сообщений, о которых вы можете прочитать, вы можете прочитать:-)
источник