El >
redirector escribe la salida del comando ( stdout
no stderr
, usted usa 2>
para eso) en el archivo especificado después. Si ya existe, el archivo se sobrescribirá.
Este comportamiento es útil para el primero de sus comandos: si hay un archivo existente, debe eliminarse y reemplazarse por el nuevo.
Sin embargo, como necesita agregar todas las salidas adicionales en lugar de reemplazar las anteriores, debe usar el redireccionador de agregación >>
. Esto creará un archivo si aún no existe, pero agrega la salida redirigida al archivo, si ya existe.
Y no utilice la tubería |
para escribir varios comandos en una línea, lo que redirigiría la salida del primer comando ( stdout
) a la entrada del segundo comando ( stdin
).
Puede usar el punto y coma ( ;
) para decirle a bash que ejecute un comando después del otro, como si fuera un archivo de script. Si un comando falla (el código de retorno no es 0), los comandos restantes aún se ejecutan.
O puede elegir los operadores lógicos AND ( &&
) u OR ( ||
):
si usa &&
para conectar dos comandos, el segundo solo se ejecutará, si el primero tiene éxito (el código de retorno es 0). Si falla, ninguno de los siguientes comandos se ejecutará.
¡Sin ||
embargo, solo ejecuta el segundo comando si falla el primero (el código de retorno no es 0)!
Entonces, en su caso, le recomendaría que use el punto y coma:
md5sum firefox.tar.gz > sha.txt ; sha1sum firefox.tar.gz >> sha.txt ; sha512sum firefox.tar.gz >> sha.txt
{}
o()
? Gracias.