... La solución más común a este peligro es poner un alias a rm para que ejecute rm -i , de modo que pida confirmación antes de cada borrado:

$ alias rm='rm -i'                  Often found in a shell configuration file
$ rm *.txt
/bin/rm: remove regular file 'a.txt'? y
/bin/rm: remove regular file 'b.txt'? y
/bin/rm: remove regular file 'c.txt'? y

En consecuencia, un carácter de espacio de más no tiene por qué ser fatal, porque las indicaciones de rm -i te advertirán de que estás eliminando los archivos equivocados:

$ rm * .txt
/bin/rm: remove regular file '123'?      Something is wrong: kill the command

Sin embargo, la solución del alias es engorrosa, porque la mayoría de las veces puede que no quieras o necesites que rm te avise. Tampoco funciona si estás conectado a otra máquina Linux sin tus alias. Te mostraré una forma mejor de evitar que coincidan los nombres de archivo erróneos con un patrón. La técnica tiene dos pasos y se basa en la expansión del historial:

  1. Compruébalo. Antes de ejecutar rm, ejecuta ls con el patrón deseado para ver qué archivos coinciden.

    $ ls *.txt
    a.txt   b.txt   c.txt
  2. Borra. Si la salida de ls parece correcta, ejecuta rm !$ para borrar los mismos archivos que coincidieron.2

    $ rm !$
    rm *.txt

La expansión del historial !$ ("dólar bang") significa "la última palabra que escribiste en el comando anterior". Por lo tanto, rm !$ aquí es la abreviatura de "borra lo que acabo de listar con ls," es decir,*.txt. Si accidentalmente añades un espacio después del asterisco, la salida de ...

Get Linux eficiente en la línea de comandos now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.