Sé que rm -rf es un borrado forzado de todo lo que hay en un directorio determinado. Pero no entiendo qué hará rm -rf $(!!) en la línea de comandos.
¿Cómo puedo buscar esta sintaxis o entender lo que hará?
Sé que rm -rf es un borrado forzado de todo lo que hay en un directorio determinado. Pero no entiendo qué hará rm -rf $(!!) en la línea de comandos.
¿Cómo puedo buscar esta sintaxis o entender lo que hará?
!!
es un comando de historia de bash
se sustituye por el último comando que hayas ejecutado. Puede probar ls
seguido de echo !!
$(...)
realiza la Sustitución de Comandos, la salida de un comando reemplaza el nombre del comando (la parte dentro del ()
). De nuevo, echo $(!!)
ayuda a ilustrar estoAsí que rm $(!!)
elimina todos los archivos cuyos nombres se imprimen después de volver a ejecutar el último comando. Tenga cuidado con los nombres de archivos que contengan espacios o caracteres especiales como *
o ?
o ~
no funcionará para esos, o eliminará un conjunto diferente de archivos de lo que se piensa.
Dados los riesgos, probablemente sea más seguro correr echo PATTERN
verifique el resultado y luego retroceda una línea en el historial, sustituya echo
por rm
y ejecutar esto. En lugar de navegar hacia atrás también puedes simplemente ejecutar ^echo^rm^
(que utiliza la expansión del historial para sustituir el comando utilizado en la línea anterior).
No veo ninguna buena razón para utilizar nunca rm -rf $(!!)
¿podría hacerlo? Parece peligroso. Tal vez valga la pena declararlo explícitamente, si estás de acuerdo.
@innisfree: Estoy de acuerdo con eso. Si quieres comprobar primero tu comando rm, haz echo rm foo/* bar
o lo que sea, entonces recuérdalo y quita el echo
desde el frente. Haciendo ls foo/* bar
entonces rm -rf $(!!)
parece una idea terrible. Por ejemplo, si bar/x
existe, esa secuencia eliminará ./x
AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.