Mi café de la mañana aún no había llegado a mi cerebro cuando olvidé las citas en:
alias grep="grep --color=always"
así que en su lugar escribí:
alias grep=grep --color=always
dejándome con:
--color=always
grep=grep
en mis alias
Cuando intento limpiar --color = siempre usando unalias --color
, obtengo:
bash: unalias: --: invalid option
unalias: usage: unalias [-a] name [name ...]
Intenté escapar, citar y rogar, pero no puedo entender cómo hacer que el comando unalias limpie el desorden.
(Sé que un reinicio hará el truco, pero seguramente debe haber otra forma)
bash
bash-alias
Requist
fuente
fuente
echo > \\?\c:\windows\x.
, o esa vez querm -rf * ~
por accidente.Respuestas:
Puede evitar que los sistemas compatibles con POSIX interpreten guiones en los comandos agregando
--
antes de cualquier argumento.Esto también funciona con otras utilidades, digamos que tiene un archivo llamado
-bla
. Si intenta eliminarlorm
, obtendrá el siguiente error:Al usar
--
antes del nombre de archivo, eliminará el archivo:fuente
ls ./-bla
yrm ./-bla
(o especificar las rutas completas, lo que sea más fácil en su caso). ¡Obviamente, esto no funciona para los alias!Solo usa el mismo truco que usaste para establecer el alias
fuente
unalias unalias --color
Solución rápida
Para solucionar tanto los alias equivocadas que pueden funcionar simplemente
Entendiendo lo que pasó
Usted da el comando equivocado
alias grep=grep --color=always
sin"..."
.Estableces dos alias
--color
ygrep
; de hecho, puede leerlo en el lado izquierdo de su salida (todo a la izquierda=
es un comando con alias):entonces necesitas desarmar ambos.
¿Por qué sucedió esto?
El
...
sinóptico de alias significa que es posible hacer asignaciones múltiples en una línea:En la salida de
help alias
puede leer el sinóptico, pero desdeman bash
usted puede leer que es posible en la misma línea incluso enumerar y asignar al mismo tiempo:Tiene problemas para desarmar el primero
--color
solo .Esto porque se interpreta como opciones para
alias
que su concha; Para evitar esto, debe comunicarle a subash
shell que lo que sigue no es una opción.El Santo Grial de Linux:
man
en este caso,man bash
es un cofre lleno de tesoros útiles en situaciones como esta.Puedes leer de
man bash
:Como se informó en otra respuesta, la forma POSIX es utilizar la combinación de caracteres especiales
--
.¿
unalias grep --color
Pero por qué está funcionando? Quiero decir sin usar--
?Como funcionó
alias
incluso paraunalias
es posible dar más de un nombre a la vez (de nuevo el[...]
).Solo puedo dar mi suposición: un buen hábito de programación es escribir las rutinas de lectura y escritura al mismo tiempo, por debajo de la misma lógica. Por lo tanto, tiene que ser para la opción analizar las rutinas de
alias
yunalias
.Esto puede funcionar incluso desde este comando (desde un shell abierto para este propósito) que no borrará todos sus alias:
Comentario final
En la sección ERRORES de
man bash
entre las pocas cosas informadas, puede leer:-)
fuente