Il >
redirector scrive l'output del comando ( stdout
, non stderr
- che usi 2>
per quello) nel file specificato dopo di esso. Se esiste già, il file verrà sovrascritto.
Questo comportamento è utile per il primo dei tuoi comandi: se esiste un file esistente, dovrebbe essere eliminato e sostituito con quello nuovo.
Tuttavia, poiché è necessario aggiungere tutti gli altri output invece di sostituire quelli precedenti, è necessario utilizzare il redirector append >>
. Questo creerà un file se non esiste ancora, ma aggiunge l'output reindirizzato al file, se esiste già.
E per favore non usare la pipe |
per scrivere più comandi in una riga, che reindirizzerebbe l'output del primo comando ( stdout
) all'input del secondo comando ( stdin
).
Puoi usare il punto e virgola ( ;
) per dire a bash di eseguire un comando dopo l'altro, come se fosse un file di script. Se un comando fallisce (il codice di ritorno non è 0), i comandi rimanenti vengono comunque eseguiti.
Oppure puoi scegliere gli operatori logici AND ( &&
) o OR ( ||
):
se usi &&
per connettere due comandi, il secondo verrà eseguito solo se il primo ha esito positivo (il codice di ritorno è 0). Se fallisce, nessuno dei seguenti comandi verrà eseguito.
L' ||
però solo corre il secondo comando se il primo non è riuscita (codice di ritorno non è 0)!
Quindi nel tuo caso ti consiglierei di usare il punto e virgola:
md5sum firefox.tar.gz > sha.txt ; sha1sum firefox.tar.gz >> sha.txt ; sha512sum firefox.tar.gz >> sha.txt
{}
o()
? Grazie.