GNU/Linux >> Linux Esercitazione >  >> Linux

Perché il carattere jolly * è così diverso tra i comandi Zip e Rm?

Ho messo insieme uno script per eseguire alcune operazioni sui file per me. Sto utilizzando l'operatore jolly * per applicare funzioni a tutti i file di un tipo, ma c'è una cosa che non ottengo. Posso unzip tutti i file in una cartella come questa

unzip "*".zip

Tuttavia, per rimuovere tutti i file zip in seguito, devo farlo

rm *.zip

Cioè, non vuole le virgolette. L'unzip, d'altra parte, non funziona se gli do solo il * (mi avvisa che "i file non sono stati abbinati").

Perché è diverso? A me sembra la stessa identica operazione. O sto usando il carattere jolly in modo errato?

Le introduzioni al jolly in Unix non entrano in questo aspetto e non sono riuscito a individuare nulla nel rm o zip documenti.

Sto usando il terminale su un Mac (Yosemite).

Risposta accettata:

Hai spiegato molto bene la situazione. L'ultimo pezzo del puzzle è che unzip può gestire i caratteri jolly da solo:

http://www.info-zip.org/mans/unzip.html

ARGOMENTI

file[.zip]

Le espressioni jolly sono simili a quelle supportate nelle shell Unix comunemente usate (sh, ksh, csh) e possono contenere:

* corrisponde a una sequenza di 0 o più caratteri

Citando il carattere jolly *, hai impedito alla tua shell di espanderla, in modo che unzip vede il carattere jolly e si occupa di espanderlo secondo la propria logica.

rm , al contrario, non supporta i caratteri jolly da soli , quindi il tentativo di citare un carattere jolly indicherà rm per cercare invece un asterisco letterale nel nome del file.

Il motivo per cui unzip *.zip non funziona è che unzip La sintassi di 's semplicemente non consente più file zip; se sono presenti più parametri, si aspetta che il 2° e quelli successivi siano file nell'archivio:

unzip [-Z] [-cflptTuvz[abjnoqsCDKLMUVWX$/:^]] file[.zip] [file(s) …] [-x xfile(s) …] [-d exdir]


Linux
  1. Scopri la differenza tra i comandi "su" e "su -" in Linux

  2. Qual è la differenza tra InnoDB e MyISAM?

  3. Qual è la differenza tra Sudo Su – e Sudo Su –?

  4. La differenza tra Getty e Agety?

  5. Qual è la differenza tra unlink e rm?

Qual è la differenza tra Linux e Unix?

La differenza tra più, meno e la maggior parte dei comandi

Spiegato! La differenza tra i comandi grep, egrep e fgrep

Qual è la differenza tra i comandi kill e killall?

Comprimere e decomprimere i comandi in Linux/Unix

Quale è più efficiente:compressione tar o zip? Qual è la differenza tra tar e zip?