4 votos

¿Qué significa rm -rf $(!!) en MacOS?

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á?

9voto

  • !! 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 esto

Así 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).

8 votos

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.

0 votos

@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

0 votos

@innisfree Punto válido, añadido un enfoque alternativo.

AppleAyuda.com

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.

Powered by:

X