Próbuję sprawdzić najnowszą przeglądarkę Firefox i chcę uzyskać wszystkie skróty w jednym pliku TXT.
Staram się:
sha1sum firefox.tar.gz > sha.txt
i próbuję również:
md5sum firefox.tar.gz > sha.txt | sha1sum firefox.tar.gz > sha.txt | sha512sum firefox.tar.gz > sha.txt
ale tylko ostatnia w tym przypadku sha512 jest drukowana na sha.txt.
Co ja robię źle? Czy ktoś może mi w tym pomóc?
command-line
bash
XBMCuser
źródło
źródło
{}
lub()
? Dziękuję Ci.()
.Musisz użyć append redirector
>>
zamiast>
do kolejnych poleceń npZobacz
Appending Redirected Output
sekcję strony podręcznika bash (man bash
).źródło
>
Redirector pisze wyjścia polecenia (stdout
, a niestderr
- 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:
źródło