Mein Morgenkaffee hatte mein Gehirn noch nicht erreicht, als ich die Anführungszeichen in vergaß:
alias grep="grep --color=always"
Also schrieb ich stattdessen:
alias grep=grep --color=always
Lass mich mit:
--color=always
grep=grep
in meinen Pseudonymen.
Wenn ich versuche, die --color = always using aufzuräumen, erhalte unalias --color
ich:
bash: unalias: --: invalid option
unalias: usage: unalias [-a] name [name ...]
Ich habe versucht zu fliehen, zu zitieren und zu betteln, aber ich kann nicht herausfinden, wie ich mit dem Kommando-Unalias das Chaos beseitigen kann.
(Ich weiß, ein Neustart reicht aus, aber es muss doch einen anderen Weg geben.)
bash
bash-alias
Requist
quelle
quelle
echo > \\?\c:\windows\x.
oder die Zeit, als ichrm -rf * ~
versehentlich war.Antworten:
Sie können verhindern, dass POSIX-kompatible Systeme Bindestriche in Befehlen interpretieren, indem Sie
--
vor Argumenten weitere hinzufügen .Dies funktioniert auch mit anderen Dienstprogrammen. Nehmen wir an, Sie haben eine Datei mit dem Namen
-bla
. Wenn Sie versuchen, es mit zu entfernen,rm
wird der folgende Fehler angezeigt:Indem Sie
--
vor dem Dateinamen verwenden, entfernen Sie die Datei:quelle
ls ./-bla
und verwendenrm ./-bla
(oder die vollständigen Pfade angeben, was in Ihrem Fall einfacher ist). Offensichtlich funktioniert dies jedoch nicht für Aliase!Verwenden Sie einfach denselben Trick, den Sie zum Festlegen des Alias verwendet haben
quelle
unalias unalias --color
Schnelle Lösung
Um die beiden falschen Aliase zu beheben , können Sie einfach ausführen
Verstehen, was passiert ist
Sie geben den falschen Befehl
alias grep=grep --color=always
ohne"..."
.Sie setzen zwei Aliase
--color
undgrep
; in der Tat können Sie es auf der linken Seite Ihrer Ausgabe lesen (alles links von=
ist ein Alias-Befehl):Sie müssen also beide deaktivieren.
Warum ist das passiert?
Das
...
in der Synoptik von Alias bedeutet, dass mehrere Zuweisungen in einer Zeile möglich sind:In der Ausgabe von
help alias
können Sie dieman bash
Übersicht lesen, aber von Ihnen können Sie lesen, dass es möglich ist, in derselben Zeile sogar gleichzeitig aufzulisten und zuzuweisen:Sie haben Probleme, die erste Einstellung
--color
alleine zu deaktivieren .Dies , weil sie als Optionen interpretiert für
alias
von Shell; Um dies zu vermeiden, müssen Sie Ihrerbash
Shell mitteilen, dass das, was darauf folgt, keine Option ist.Der Heilige Gral von Linux:
man
In diesem Fallman bash
handelt es sich um eine Truhe voller Schätze, die in einer solchen Situation nützlich sind.Sie können lesen von
man bash
:Wie in einer anderen Antwort angegeben, besteht die POSIX-Methode darin, die Sonderzeichenkombination zu verwenden
--
.Aber warum
unalias grep --color
arbeitet? Ich meine ohne zu benutzen--
?Da es
alias
auch für funktionierteunalias
, ist es möglich, mehr als einen Namen auf einmal zu vergeben (wieder der[...]
).Ich kann nur raten: Eine gute Programmiergewohnheit besteht darin, die Lese- und Schreibroutinen gleichzeitig unter der gleichen Logik zu schreiben. Also muss es für die Option Parsing-Routinen von
alias
und seinunalias
.Dass dies funktioniert, können Sie auch an diesem Befehl (in einer zu diesem Zweck geöffneten Shell) erkennen, mit dem nicht alle Ihre Aliase gelöscht werden:
Letzte Bemerkung
man bash
Unter den wenigen Dingen, über die Sie berichtet haben, finden Sie im Abschnitt BUGS eine Liste:-)
quelle