Rimuovere i file che iniziano con il trattino
Postato da ROb | nella categoria Linux | martedì, 9 marzo 2010
3

Mi è capitato spesso di creare inavvertitamente dei file che iniziano con il trattino.
Quando ho provato a cancellarli o semplicemente a farne il listing i comandi bash tradizionali mi davano errore.
Facciamo infatti questa prova. Creiamo nella directory /tmp due file con il trattino in questo modo (digitate anche il carattere “>“):
cd /tmp/ > '-foo.txt' > '--bar.txt'
A questo punto se provate a farne il listing in questo modo modo resterete sorpresi:
ls -l *.txt
ls: unrecognized option '--bar.txt' Try `ls --help' for more information.
Esiste però un’opzione importante di molti comandi bash che ci viene in aiuto e delimita la lista delle opzioni dei comandi stessi. Quest’opzione è “–“.
Se infatti proviamo il seguente comando i file “speciali” verranno listati correttamente:
ls -l -- *.txt
In pratica senza specificare quest’opzione i comandi espandono la lista dei file e interpretano quelli che iniziano con il trattino come se fossero delle opzioni del comando stesso. Sfruttando invece l’opzione speciale “–” il comando conosce esattamente dove termina la lista delle opzioni specificate dall’utente.
Tale logica è applicabile anche per molti altri comandi quali: rm, mv e cp. In generale la regola è:
comando opzioni -- '--filename'
L’articolo originale che tratta questo problema lo trovate su NixCraft.

Molto più facile:
ls -l ./–*
Wow, fantastico
Ebbi anche io problemi del genere… ora saprò come comportarmi.
Ciao
Sì anche questa soluzione non è male, sicuramente più intuitiva.
Grazie SIGLAZY.