Ответ 1
Мне нужно сказать curl http://127.0.0.1:8000 -o outfile
Как я могу выполнить HTTP GET из оболочки Un * x script в ОС 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 из оболочки script является использование wget (если эта команда установлена, конечно).
Какие еще существуют способы сделать эквивалент wget? Я смотрю, в частности, на то, что будет работать с установкой OS X.
Мне нужно сказать curl http://127.0.0.1:8000 -o outfile
brew install wget
Homebrew - это менеджер пакетов для OSX, аналогичный yum, apt-get, choco, emerge и т.д. Имейте в виду, что вам также потребуется установить Xcode и Инструменты командной строки. Практически любой, кто использует командную строку в OSX, все равно захочет установить эти вещи.
Если вы не можете или не хотите использовать доморощенный, вы также можете:
Установите wget вручную:
curl -# "http://ftp.gnu.org/gnu/wget/wget-1.17.tar.xz" -o "wget.tar.xz"
tar xf wget.tar.xz
cd wget-1.17
./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'
Curl имеет режим, который почти эквивалентен стандарту wget.
curl -O <url>
Это работает так же, как
wget <url>
И, если хотите, вы можете добавить это в свой .bashrc:
alias wget='curl -O'
Он не на 100% совместим, но работает для наиболее распространенного использования wget (IMO)
1) на вашем макете
nano /usr/bin/wget
2) вставьте следующее в
#!/bin/bash
curl -L $1 -o $2
3), затем сделайте его выполнимым
chmod 777 /usr/bin/wget
Что это.
Используйте curl
;
curl http://127.0.0.1:8000 -o index.html
Здесь Mac OS X эквивалент Linux wget.
Для Linux, например Ubuntu на экземпляре AWS, используйте:
wget http://example.com/textfile.txt
На Mac, то есть для локальной разработки, используйте это:
curl http://example.com/textfile.txt -o textfile.txt
Параметр -o требуется на Mac для вывода в файл, а не на экране. Укажите другое имя цели для переименования загруженного файла.
Используйте капитал -O для переименования с помощью wget. Нижний регистр -o укажет выходной файл для журнала передачи.
Вы можете либо построить wget на компьютере Mac, либо использовать MacPorts для его установки напрямую.
sudo port install wget
Это будет работать как шарм, и вы сможете обновить его до последней версии, как только это будет доступно. Порт намного стабильнее, чем brew, хотя он имеет намного меньшее количество формул и портов.
Вы можете установить MacPorts из https://www.macports.org/install.php
, вы можете загрузить файл .pkg
и установить его.
Вместо этого вы можете использовать curl
. По умолчанию он установлен в /usr/bin
.