Strumenti Unix: cosa succede se un file viene denominato less qualcosa?

Sto sempre chiedendo: la maggior parte degli strumenti GNU / Unix prende opzioni nella forma "less qualcosa", talvolta seguita da un argomento. Cosa succede se hai un file chiamato less qualcosa?

$ ls -f $ rm -f $ ls -f $ mv -f abc mv: missing destination file operand after `abc' Try `mv --help' for more information. $ cat -f cat: invalid option -- 'f' Try `cat --help' for more information. 

o

 $ ls -ohello.c $ gcc -ohello -ohello.c gcc: fatal error: no input files compilation terminated. 

Questo è solo per curiosità; Non ho un caso d'uso per questo.

Per rimuovere un file denominato -x , utilizzare rm -- -x ( -- significa fine delle opzioni) o rm ./-x .

È abbastanza comune chiedere questo tipo di domanda nelle impostazioni di intervista. Un modo comune per gestire i file con i trattini è:

 $ rm -- -f $ rm ./-f 

Una domanda comune in Unix. Il modo principale è quello di dare il nome completo del path al file, quindi non ha un trattino davanti a esso:

 $ rm -file.txt unknown option -l $ rm ./-file.txt #No problem! $ rm $PWD/-file.txt #Same thing 

Alcuni comandi, è ansible utilizzare un trattino in sé (o un doppio trattino) per terminare le opzioni. Tuttavia, questo non è necessariamente vero con tutti i comandi, o addirittura lo stesso command su diversi sisthemes.

 $ rm -- -file.txt #Works on Linux but not on some Unix systems 

devi usare

  rm -- <filename> 

Ex:

  rm -- -f