OS X: еквівалент wget Linux


497

Як я можу зробити HTTP GET із скрипта оболонки Un * x у системі OS X? (встановлення стороннього програмного забезпечення не є можливим, оскільки це має працювати в багатьох системах, над якими я не маю управління).

Наприклад, якщо я запускаю сервер Mercurial локально, виконуючи сервіс hg :

... $ hg serve 

І тоді з Linux, який має команду wget, я роблю 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

І на терміналі, в якому я запустив команду "hg serve" , я дійсно бачу, що HTTP GET пробився:

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

Так що в Linux один із способів зробити HTTP GET з сценарію оболонки - використовувати wget (якщо ця команда, звичайно, встановлена).

Які ще способи зробити еквівалент wget ? Я шукаю, зокрема, те, що би працювало на фондовій установці OS X.


Відповіді:


712

Мені доведеться сказати curl http://127.0.0.1:8000 -o outfile


27
Також wget доступний як через MacPorts, так і Fink .
Брайан Клаппер

47
Я прийшов сюди з пошуку Google про те, як отримати wget на Mac, тому незважаючи на вимогу ОП уникати встановлення стороннього програмного забезпечення, я надам посилання на короткий посібник, який я знайшов, як встановити wget без використання MacPorts на майбутнє довідник.
Ейрік Н

32
Він також доступний на Homebrew.
Даніель каже, що повернеться до Моніки

2
Здається, не слідкуйте за вперед.
nroose

14
Для завантаження файлів ви можете використовувати -Oабо --remote-nameпозначити прапорець, щоб автоматично перейменувати завантажений файл. наприкладcurl -O http://somehost.org/file.zip
nimcap

461

brew install wget

Homebrew - це менеджер пакунків для OSX, аналогічного yum, apt-get, choco, emerge тощо. Будьте в курсі, що вам також знадобиться встановити Xcode та інструменти командного рядка. Практично кожен, хто використовує командний рядок в OSX, все одно захоче встановити ці речі.

Якщо ви не можете або не хочете користуватися домашньою мовою, ви також можете:

Встановити wget вручну:

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

Або скористайтеся псевдонімом bash:

function _wget() { curl "${1}" -o $(basename "${1}") ; };
alias wget='_wget'

11
Ви можете скористатися часом, щоб пояснити домашню мову, але важливо, щоб тут була wgetвідповідь, помітна для новачків, оскільки єдиний інший був видалений її власником, і curlце альтернатива, а не буквальний еквівалент.
Кріс Страттон

2
Дякую, це було мені корисно, як хтось із завареним продуктом вже встановлений.
enderland

4
@Michaelangelo І це не твоя робота, щоб скасувати посади інших людей. Не слід редагувати інші відповіді, щоб скласти власні моменти - це недоречно. Насправді дії обговорюються на Meta: meta.stackoverflow.com/questions/315892/…
Zizouz212

2
@EricHartford Усунення голосу не вирішує проблему. Він надав одну альтернативу, не перераховуючи інший варіант, як вручну встановити wget.
Michaelangel007

1
Я думаю, у вас є хороший момент. І я відредагую відповідь, щоб включити ваші ідеї.
Ерік Хартфорд

87

У Curl є режим, який майже еквівалентний wget-файлу за замовчуванням.

curl -O <url>

Це працює так само

wget <url>

І, якщо вам подобається, ви можете додати це до свого .bashrc:

alias wget='curl -O'

Він не на 100% сумісний, але працює для найпоширенішого використання wget (IMO)


2
як ти робиш рекурсивну з цим?
Джаспер

Ви можете використовувати bash, щоб додати це до циклу, як це: for i in `seq 1 <n>` do curl -O <url>;done;де <n> - кількість разів, яку ви хочете повторити, а <url> - URL-адреса, яку потрібно витягнути.
Blairg23

1
Іноді вам потрібно буде додати -Lпрапор, щоб слідкувати за переспрямуванням місцезнаходження. Ви можете використовувати curl -OL <url>для цього.
Густав Страубе

1
-Oтакож стосується лише наступного аргументу, тому для завантаження декількох URL-адрес потрібно використовувати щось на зразок curl -O "$url1" -O "$url2"або printf %s\\n "$url1" "$url2"|xargs -n1 curl -O.
nisetama

Це чудова акуратна порада. Дуже дякую!
cmcromance

42

1) для вашого типу mac

nano /usr/bin/wget

2) вставте наступне в

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

3) закрити, потім зробити його виконуваним

chmod 777 /usr/bin/wget

Це воно.


Краще, ніж псевдонім.
МК

3
Майже правильно. Я вважаю, що крок перший повинен бути vim /usr/bin/wget;) ха-ха просто жартую. дякую за відповідь - цього мені ніколи не прийшло в голову, і я чомусь не відчуваю, як встановлювати пиво / фінк / що завгодно, тому кудо за просту портативну відповідь.
Касапо

3
-Lважливо для обробки 301відповідей http . wget обробляє їх за замовчуванням.
Донн Лі

"curl -L resource.url / tar.tar.gz -O tar.tar.gz" спрацював чудово, дякую за це єдине працездатне рішення серед інших у цій темі для мого випадку використання.
Олексій Кислицин

sudo nano / usr / bin / wget
Vino


12

Ось еквівалент ОС Mac OS X від wget Linux.

Для Linux, наприклад Ubuntu в екземплярі AWS, використовуйте:

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

На Mac, тобто для локального розвитку, використовуйте це:

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

Параметр -o необхідний на Mac для виведення у файл, а не на екран. Укажіть інше цільове ім'я для перейменування завантаженого файлу.

Використовуйте капітал -O для перейменування wget. Малі регістри -o зададуть вихідний файл для журналу передачі.


5

Ви можете створити wget на комп'ютері mac або використовувати MacPorts для його прямого встановлення.

sudo port install wget 

Це спрацювало б як шарм, також ви можете оновити до останньої версії, як тільки вона стане доступною. Порт набагато стабільніший, ніж варити, хоча має набагато меншу кількість формул та портів.

Ви можете встановити MacPorts, https://www.macports.org/install.phpви можете завантажити .pkgфайл і встановити його.


і як встановити порт?
Roy Lovejoy

5

Замість того, щоб піти на еквівалент, ви можете спробувати "варити встановити wget" і використовувати wget.

Вам потрібно встановити заварку у вашому mac.


1
Не збираюсь брати участь у голосуванні, але це дура Еріка, відповідь 13 червня 1313
MarkHu


2

wget Попередньо складений Mac Binary

Для тих, хто шукає швидку установку wget на Mac, ознайомтеся з попередньо складеним бінарним файлом Quentin Stafford-Fraser, який існує вже більше десяти років:

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

MD5 для 2008 wget.zip: 24a35d499704eecedd09e0dd52175582
MD5 за 2005 р. wget.zip: c7b48ec3ff929d9bd28ddb87e1a76ffb

Немає маршів для встановлення / встановлення / порту / заварювання / згортання Просто завантажте, встановіть та запустіть. Працює з Mac OS X 10.3-10.12 +.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.