>Redirector pisze wyjścia polecenia ( stdout, a nie stderr- możesz użyć 2>do tego) do pliku podanego po niej. Jeśli już istnieje, plik zostanie zastąpiony.
To zachowanie jest przydatne w przypadku pierwszego polecenia: jeśli istnieje plik, należy go usunąć i zastąpić nowym.
Ponieważ jednak musisz zastąpić wszystkie dalsze dane wyjściowe zamiast zastąpić poprzednie, musisz użyć append-redirector >>. Spowoduje to utworzenie pliku, jeśli jeszcze nie istnieje, ale doda przekierowane wyjście do pliku, jeśli już istnieje.
I proszę nie używać potoku |do pisania wielu poleceń w jednym wierszu, co przekierowałoby wynik pierwszego polecenia ( stdout) do wejścia drugiego polecenia ( stdin).
Możesz użyć średnika ( ;), aby po prostu powiedzieć bashowi, aby wykonał jedno polecenie po drugim, tak jakby to był plik skryptu. Jeśli polecenie nie powiedzie się (kod powrotu nie jest równy 0), pozostałe polecenia nadal będą wykonywane.
Lub możesz wybrać operatory logiczne AND ( &&) lub OR ( ||):
Jeśli użyjesz &&do połączenia dwóch poleceń, drugie zostanie wykonane tylko wtedy , gdy pierwsze się powiedzie (kod powrotu to 0). Jeśli się nie powiedzie, żadne z poniższych poleceń nie zostanie uruchomione. Jednak tylko uruchamia drugie polecenie , jeśli pierwszy udało (kod zwrotny nie jest 0)!
||
Tak więc w twoim przypadku polecam użyć średnika:
md5sum firefox.tar.gz > sha.txt ; sha1sum firefox.tar.gz >> sha.txt ; sha512sum firefox.tar.gz >> sha.txt
{}lub()? Dziękuję Ci.