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.


Odpowiedzi:


712

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


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'

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)


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.


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


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.


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.


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.


1
Nie będę głosować negatywnie, ale jest to duplikat odpowiedzi Erica z 13 czerwca 13.
MarkHu,


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 +.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.