Jak zażądać pliku, ale nie zapisać go w Wget? [Zamknięte]
140
Używam Wget do wysyłania żądań http do nowego serwera WWW. Robię to, aby ogrzać pamięć podręczną MySQL. Nie chcę zapisywać plików po ich udostępnieniu.
wget -nv -do-not-save-file $url
Czy mogę zrobić coś takiego -do-not-save-filez wget?
To jest lepsze pytanie dla Super User lub Unix.SE.
Matt Ball
4
jako programista chcę przetestować serwer za pomocą wget, a to pytanie jest poważnie na temat. Ponieważ najlepsza odpowiedź na temat otrzymała 142 pozytywnych głosów, więc to pytanie powinno zostać ponownie włączone jako na temat
Mladen Adamovic
Alternatywnie do -q i -O, użyj flag -nd (brak katalogu) i --delete-after.
Suzana,
1
Zgodnie z dokumentacją pomocy (wget -h), możesz użyć opcji --spider, aby pominąć pobieranie (wersja 1.14).
rocky qi
Odpowiedzi:
257
Użyj qflagi dla trybu cichego i powiedz, wgetaby wyprowadzić na standardowe wyjście z O-(wielką literą o) i przekierować do, /dev/nullaby odrzucić wyjście:
wget -qO- $url &> /dev/null
>przekierowuje wyjście aplikacji (do pliku). jeśli >jest poprzedzone ampersandem, powłoka przekierowuje wszystkie wyjścia (błędy i normalne) do pliku na prawo od >. Jeśli nie określisz znaku ampersand, przekierowane zostanie tylko normalne wyjście.
./app &> file # redirect error and standard output to file
./app > file # redirect standard output to file
./app 2> file # redirect error output to file
jeśli plik ma wartość, /dev/nullwszystko jest odrzucane.
Zimno wyjaśniasz, co oznacza 2> i 1? Dostaję> ale po co to koniec?
apscience,
2
@gladoscc pierwszy >/dev/nullprzekierowuje std out do / dev / null ( >/dev/nulljest skrótem od 1>/dev/null), a drugi przekierowuje std err na std out.
Oleg Mikheev
@apscience Wystarczy dodać. Deskryptor pliku dla wyjścia standardowego to 1. Powłoki przyjmują wyjście na wyjście standardowe, gdy zostawisz deskryptor z przekierowania. Tak >foojest interpretowane jako 1>foo. Gdy &następuje przekierowanie, instruuje powłokę, aby przekierowała poprzedni deskryptor pliku na to samo wyjście, co później. W tym przypadku, 2>&1mówi deskryptor pliku 2 przekierowania (błąd std) do tego samego miejsca, co deskryptor pliku 1 (wyjście std). Ponieważ std out jest już przekierowane do / dev / null, tam również zostanie przekierowany błąd std. Możesz też napisać: 1>/dev/null 2>/dev/nulllub 2>/dev/null >&2.
ktbiz
Ta odpowiedź jest poprawna, ale zawiera to samo przekierowanie wyjścia, co wybrana odpowiedź. Wystarczy bieganie curl http://www.example.com.
Aaron Cicali,
40
Możesz użyć -O-(wielkie litery o), aby przekierować zawartość na standardowe wyjście (standardowe wyjście) lub do pliku (nawet do plików specjalnych, takich jak /dev/null/dev/stderr/dev/stdout)
Odpowiedzi:
Użyj
q
flagi dla trybu cichego i powiedz,wget
aby wyprowadzić na standardowe wyjście zO-
(wielką literą o) i przekierować do,/dev/null
aby odrzucić wyjście:wget -qO- $url &> /dev/null
>
przekierowuje wyjście aplikacji (do pliku). jeśli>
jest poprzedzone ampersandem, powłoka przekierowuje wszystkie wyjścia (błędy i normalne) do pliku na prawo od>
. Jeśli nie określisz znaku ampersand, przekierowane zostanie tylko normalne wyjście.jeśli plik ma wartość,
/dev/null
wszystko jest odrzucane.Działa to również i jest prostsze:
źródło
Curl robi to domyślnie bez żadnych parametrów ani flag, użyłbym go do twoich celów:
W Curl chodzi bardziej o strumienie, a wget o kopiowanie witryn na podstawie tego porównania .
źródło
>/dev/null
przekierowuje std out do / dev / null (>/dev/null
jest skrótem od1>/dev/null
), a drugi przekierowuje std err na std out.>foo
jest interpretowane jako1>foo
. Gdy&
następuje przekierowanie, instruuje powłokę, aby przekierowała poprzedni deskryptor pliku na to samo wyjście, co później. W tym przypadku,2>&1
mówi deskryptor pliku 2 przekierowania (błąd std) do tego samego miejsca, co deskryptor pliku 1 (wyjście std). Ponieważ std out jest już przekierowane do / dev / null, tam również zostanie przekierowany błąd std. Możesz też napisać:1>/dev/null 2>/dev/null
lub2>/dev/null >&2
.curl http://www.example.com
.Możesz użyć
-O-
(wielkie litery o), aby przekierować zawartość na standardowe wyjście (standardowe wyjście) lub do pliku (nawet do plików specjalnych, takich jak/dev/null
/dev/stderr
/dev/stdout
)Lub:
Lub: (taki sam wynik jak ostatnie polecenie)
źródło