OS X: odpowiednik wget Linuxa

497

Jak mogę wykonać HTTP GET ze skryptu powłoki Un * x na standardowym systemie OS X? (instalowanie oprogramowania innych firm nie wchodzi w grę, ponieważ musi działać na wielu różnych systemach, nad którymi nie mam kontroli).

Na przykład, jeśli uruchomię serwer Mercurial lokalnie, wykonując serwer hg :

... $ hg serve 

Następnie z Linuksa, który ma polecenie wget , wykonuję wget:

... $  wget http://127.0.0.1:8000
--2010-12-31 22:18:25--  http://127.0.0.1:8000/
Connecting to 127.0.0.1:8000... connected.
HTTP request sent, awaiting response... 200 Script output follows
Length: unspecified [text/html]
Saving to: `index.html

A na terminalu, w którym uruchomiłem polecenie „hg służyć” , rzeczywiście widzę, że trafił HTTP GET:

127.0.0.1 - - [30/Dec/2010 22:18:17] "GET / HTTP/1.0" 200 -

Tak więc w Linuksie jednym ze sposobów wykonania HTTP GET ze skryptu powłoki jest użycie wget (jeśli to polecenie jest oczywiście zainstalowane).

Jakie są inne sposoby na zrobienie odpowiednika wgeta ? Szukam w szczególności czegoś, co działałoby na standardowych instalacjach OS X.

Składnia T3rr0r
źródło

Odpowiedzi:

712

Będę musiał powiedzieć curl http://127.0.0.1:8000 -o outfile

SiegeX
źródło
27
Ponadto wget jest dostępny zarówno przez MacPorts, jak i Fink .
Brian Clapper,
47
Przybyłem tutaj z wyszukiwarki Google, w jaki sposób uzyskać wget na Macu, więc pomimo wymogu PO, aby unikać instalacji oprogramowania innych firm, podam link do szybkiego przewodnika, który znalazłem, jak zainstalować wget bez używania MacPorts na przyszłość odniesienie.
Eirik H
32
Jest również dostępny w Homebrew.
Daniel mówi Przywróć Monikę
2
Nie wydaje się podążać naprzód.
nroose
14
Aby pobrać pliki, możesz użyć -Olub --remote-nameoflagować automatyczną zmianę nazwy pobranego pliku. np.curl -O http://somehost.org/file.zip
nimcap
461

brew install wget

Homebrew to menedżer pakietów dla OSX, analogiczny do yum, apt-get, choco, emerge itp. Pamiętaj, że będziesz musiał także zainstalować Xcode i narzędzia wiersza poleceń. Praktycznie każdy, kto korzysta z wiersza poleceń w OSX, i tak będzie chciał zainstalować te rzeczy.

Jeśli nie możesz lub nie chcesz używać homebrew, możesz również:

Zainstaluj wget ręcznie:

curl -# "http://ftp.gnu.org/gnu/wget/wget-1.17.1.tar.xz" -o "wget.tar.xz"
tar xf wget.tar.xz
cd wget-1.17.1
./configure --with-ssl=openssl -with-libssl-prefix=/usr/local/ssl && make -j8 && make install

Lub użyj aliasu bash:

function _wget() { curl "${1}" -o $(basename "${1}") ; };
alias wget='_wget'
Eric Hartford
źródło
11
Możesz poświęcić chwilę na wyjaśnienie homebrew, ale ważne jest, aby była tu widoczna wgetodpowiedź dla początkujących , ponieważ jej jedyna została usunięta przez jej właściciela i curljest alternatywą, a nie dosłownym odpowiednikiem.
Chris Stratton,
2
Dzięki, było to pomocne dla mnie jako osoby z już zainstalowanym naparem.
enderland
4
@Michaelangelo I to nie jest twoje zadanie, aby niszczyć posty innych. Nie powinieneś edytować innych odpowiedzi, aby tworzyć własne punkty - to niewłaściwe. W rzeczywistości działania są omawiane na Meta: meta.stackoverflow.com/questions/315892/…
Zizouz212
2
@EricHartford Głosowanie w dół nie rozwiązuje problemu. Zapewniło to jedną alternatywę, bez wymieniania drugiej opcji ręcznego instalowania wget.
Michaelangel007
1
Myślę, że masz rację. Przeredaguję odpowiedź, aby uwzględnić twoje pomysły.
Eric Hartford,
87

Curl ma tryb, który jest prawie równoważny domyślnemu wgetowi.

curl -O <url>

To działa tak jak

wget <url>

Jeśli chcesz, możesz dodać to do swojego .bashrc:

alias wget='curl -O'

Nie jest w 100% kompatybilny, ale działa na najczęstsze użycie wget (IMO)

Ed Henderson
źródło
2
jak się z tym rekurencyjnie?
Jasper,
Możesz użyć bash, aby dodać to do pętli w następujący sposób: for i in `seq 1 <n>` do curl -O <url>;done;gdzie <n> to liczba operacji, które chcesz iterować, a <url> to adres URL do pobrania.
Blairg23,
1
Czasami trzeba dodać -Lflagę, aby śledzić przekierowania lokalizacji. Możesz curl -OL <url>to zrobić.
Gustavo Straube
1
-Oodnosi się również tylko do następnego argumentu, więc aby pobrać wiele adresów URL, musisz użyć czegoś takiego jak curl -O "$url1" -O "$url2"lub printf %s\\n "$url1" "$url2"|xargs -n1 curl -O.
nisetama 19.04.2016
To świetna zgrabna wskazówka. Dziękuję bardzo!
cmcromance
42

1) na komputerze Mac

nano /usr/bin/wget

2) wklej następujące elementy

#!/bin/bash
curl -L $1 -o $2

3) zamknij, a następnie uruchom go

chmod 777 /usr/bin/wget

Otóż ​​to.

Eamon Straughn
źródło
Lepsze niż alias.
MK
3
Prawie poprawnie. Uważam, że powinienem to zrobić pierwszy krok vim /usr/bin/wget;) haha ​​tylko żartowałem. dzięki za odpowiedź - tak naprawdę nigdy mi się to nie przydarzyło iz jakiegoś powodu nie mam ochoty instalować naparu / fink / cokolwiek, więc chwała za łatwą przenośną odpowiedź.
Kasapo,
3
-Ljest ważny do obsługi 301odpowiedzi HTTP . wget obsługuje je domyślnie.
Donn Lee
„curl -L resource.url / tar.tar.gz -O tar.tar.gz” działało dobrze, dziękuję za to jedyne wykonalne rozwiązanie, między innymi w tym wątku, dla mojego przypadku użycia.
Oleksii Kyslytsyn
sudo nano / usr / bin / wget
Vino
18

Użyj curl;

curl http://127.0.0.1:8000 -o index.html
ismail
źródło
12

Oto odpowiednik wget systemu Linux dla Mac OS X.

W przypadku systemu Linux, na przykład Ubuntu w wystąpieniu AWS, użyj:

wget http://example.com/textfile.txt

Na komputerze Mac, tj. Do rozwoju lokalnego, użyj tego:

curl http://example.com/textfile.txt -o textfile.txt

Parametr -o jest wymagany na komputerze Mac do wyświetlania w pliku zamiast na ekranie. Podaj inną nazwę docelową do zmiany nazwy pobranego pliku.

Użyj kapitału -O do zmiany nazwy za pomocą wget. Małe litery -o określają plik wyjściowy dla dziennika przesyłania.

Oliver Schafeld
źródło
5

Możesz zbudować wget na komputerze Mac lub użyć MacPorts, aby zainstalować go bezpośrednio.

sudo port install wget 

To działałoby jak urok, a także możesz zaktualizować do najnowszej wersji, gdy tylko będzie dostępna. Port jest znacznie bardziej stabilny niż napar, choć ma znacznie mniejszą liczbę receptur i porty.

Możesz zainstalować MacPorts https://www.macports.org/install.php, możesz pobrać .pkgplik i zainstalować go.

Hammad Haleem
źródło
i jak zainstalować port?
Roy Lovejoy
5

Zamiast iść z ekwiwalentem, możesz wypróbować „brew install wget” i użyć wget.

Musisz mieć napar zainstalowany na komputerze Mac.

Jaya Konduru
źródło
1
Nie będę głosować negatywnie, ale jest to duplikat odpowiedzi Erica z 13 czerwca 13.
MarkHu,
4

Możesz curlzamiast tego użyć . Jest domyślnie instalowany w /usr/bin.

James Sumners
źródło
2

wget Prekompilowana wersja binarna Mac

Dla tych, którzy szukają szybkiej instalacji wget na Macu, sprawdź prekompilowany plik binarny Quentin Stafford-Fraser tutaj, który istnieje już od ponad dekady:

https://statusq.org/archives/2008/07/30/1954/

MD5 dla 2008 wget.zip: 24a35d499704eecedd09e0dd52175582
MD5 dla 2005 wget.zip: c7b48ec3ff929d9bd28ddb87e1a76ffb

Brak śmieci make / install / port / brew / curl. Wystarczy pobrać, zainstalować i uruchomić. Działa z systemem Mac OS X 10.3-10.12 +.

Beejor
źródło