Perché `tar -xvfz` fallisce, ma funziona` tar xvfz`?

tar -xvfz foo.tar.gz restituisce un errore tar: z: Cannot open: No such file or directory

Questo è completamente comprensibile – l'interruttore f prevede un nome di file e quindi deve essere l'ultimo.

  • Linux si blocca each pochi secondi
  • Come posso condividere la mia connessione a Internet con la mia LAN con Debian?
  • Eseguiamo il burattinaio e il cliente solo su commit e una volta al giorno
  • Imposta gid bit non funzionante
  • Come faccio ad accedere al volume allegato in Amazon EC2
  • Ottieni il tempo impiegato da un process su Linux
  • Tuttavia, omettendo il trattino tar xvfz foot.tar.gz funziona e decomprime e annulla il file.

    Ho testato questo su OS X 10.8 e Ubuntu 12.04.

    Qualche idea di perché?

    [modificato per aggiungere]

    Io uso sempre tar -zxvf foo.tar.gz Tuttavia, questa domanda è sorta a causa di questo xkcd e la mia sorpresa quando qualcuno ha insistito che il tar xvfz functionrebbe.

    immettere qui la descrizione dell'immagine

  • Come mappare in modo affidabile i dischi vSphere <-> dispositivi Linux
  • Come faccio a pipare i comandi in un file predefinito debian?
  • Qual è il dispositivo di backup a nastro che può leggere una cartuccia DC 2120 XL?
  • Affinità CPU sui processri ARM
  • Scrivere l'attributo arbitrario in ENV da LDAP dopo l'authentication PAM di successo
  • Risorse di amministrazione del server Windows per gli amministratori Linux?
  • One Solution collect form web for “Perché `tar -xvfz` fallisce, ma funziona` tar xvfz`?”

    il tar ha 3 tipi di syntax (secondo questo ):

    • opzioni lunghe (–file)
    • opzioni brevi (-f)
    • vecchie opzioni (f)

    Per la syntax dell'ultima opzione, tutte le lettere devono seguire "tar" e devono rientrare in un unico block senza spazi. L'ordine delle lettere non import davvero, a patto che gli argomenti a quelle lettere seguano lo stesso ordine dopo il cumulo di opzioni.

    Questo vecchio modo di scrivere opzioni di tar può sorprendere anche utenti esperti. Ad esempio, i due comandi:

      # tar cfz archive.tar.gz file # tar -cfz archive.tar.gz file 

    sono piuttosto diversi. Il primo esempio utilizza 'archive.tar.gz' come valore per l'opzione 'f' e riconosce l'opzione 'z'. Il secondo esempio, tuttavia, usa 'z' come valore per l'opzione 'f' – probabilmente non quello che era stato inteso.

    Le vecchie opzioni sono conservate per essere compatibili con le vecchie versioni di catrame.

    Il command con un '-' equivale a

     tar -czf archive.tar.gz file tar -cf archive.tar.gz -z file tar cf archive.tar.gz -z file 

    Questo è il motivo per cui il tuo esempio sta lavorando senza un "-" e non con "-"

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.