OS X: setara dengan wget Linux

501

Bagaimana saya bisa mendapatkan HTTP GET dari skrip Un * x shell pada sistem OS OS X? (menginstal perangkat lunak pihak ketiga bukanlah suatu pilihan, karena ini harus dijalankan pada banyak sistem yang berbeda yang tidak saya kendalikan).

Sebagai contoh jika saya memulai server Mercurial secara lokal melakukan servis hg :

... $ hg serve 

Dan kemudian, dari Linux yang memiliki perintah wget saya melakukan 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

Dan di terminal tempat saya meluncurkan perintah "hg serve" , saya memang bisa melihat bahwa HTTP GET membuat jalannya:

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

Jadi di Linux salah satu cara untuk melakukan GET HTTP dari skrip shell adalah dengan menggunakan wget (jika perintah itu diinstal tentu saja).

Apa cara lain untuk melakukan yang setara dengan wget ? Saya mencari, khususnya, untuk sesuatu yang akan bekerja pada instalasi OS X.

SintaksT3rr0r
sumber

Jawaban:

713

Saya harus mengatakannya curl http://127.0.0.1:8000 -o outfile

SiegeX
sumber
27
Juga, wget tersedia melalui MacPorts dan Fink .
Brian Clapper
47
Saya datang ke sini dari pencarian Google tentang cara mendapatkan wget di Mac, jadi terlepas dari persyaratan OP untuk menghindari instalasi perangkat lunak pihak ke-3, saya akan memberikan tautan ke panduan cepat yang saya temukan tentang cara menginstal wget tanpa menggunakan MacPort untuk masa depan referensi.
Eirik H
32
Ini juga tersedia di Homebrew.
Daniel berkata Reinstate Monica
2
Sepertinya tidak mengikuti ke depan.
nroose
14
Untuk mengunduh file, Anda dapat menggunakan -Oatau --remote-namemenandai untuk secara otomatis mengganti nama file yang diunduh. miscurl -O http://somehost.org/file.zip
nimcap
463

brew install wget

Homebrew adalah manajer paket untuk OSX yang dianalogikan dengan yum, apt-get, choco, emerge, dll. Sadarilah bahwa Anda juga perlu menginstal Xcode dan Command Line Tools. Sebenarnya siapa pun yang menggunakan baris perintah di OSX akan tetap ingin menginstal hal-hal ini.

Jika Anda tidak bisa atau tidak ingin menggunakan homebrew, Anda juga bisa:

Instal wget secara manual:

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

Atau, gunakan alias bash:

function _wget() { curl "${1}" -o $(basename "${1}") ; };
alias wget='_wget'
Eric Hartford
sumber
11
Anda mungkin perlu waktu sejenak untuk menjelaskan homebrew, tetapi penting bahwa ada wgetjawaban yang dapat dilihat oleh pemula di sini karena satu-satunya jawaban lain dihapus oleh pemiliknya, dan curlmerupakan alternatif daripada padanan literal.
Chris Stratton
2
Terima kasih, ini sangat membantu saya karena seseorang dengan minuman sudah terpasang
enderland
4
@Michaelangelo Dan itu bukan tugas Anda untuk merusak posting orang lain. Anda tidak boleh mengedit jawaban lain untuk membuat poin Anda sendiri - itu tidak pantas. Bahkan, tindakan sedang dibahas di Meta: meta.stackoverflow.com/questions/315892/…
Zizouz212
2
@EricHartford Down-voting tidak menyelesaikan masalah. Ini memberikan satu alternatif, tanpa daftar opsi lain tentang cara menginstal wget secara manual.
Michaelangel007
1
Saya pikir Anda punya poin bagus. Dan saya akan mengedit jawaban untuk memasukkan ide-ide Anda.
Eric Hartford
87

Curl memiliki mode yang hampir setara dengan wget default.

curl -O <url>

Ini berfungsi seperti

wget <url>

Dan, jika mau, Anda dapat menambahkan ini ke .bashrc Anda:

alias wget='curl -O'

Ini tidak 100% kompatibel, tetapi berfungsi untuk penggunaan wget yang paling umum (IMO)

Ed Henderson
sumber
2
bagaimana kamu melakukan rekursif dengan ini?
Jasper
Anda dapat menggunakan bash untuk menambahkan ini ke dalam loop seperti ini: di for i in `seq 1 <n>` do curl -O <url>;done;mana <n> adalah berapa kali Anda ingin mengulang dan <url> adalah url untuk menarik.
Blairg23
1
Terkadang Anda perlu menambahkan -Ltanda untuk mengikuti pengalihan lokasi. Anda dapat menggunakannya curl -OL <url>untuk melakukan itu.
Gustavo Straube
1
-Ojuga hanya berlaku untuk argumen berikutnya, jadi untuk mengunduh banyak URL Anda harus menggunakan sesuatu seperti curl -O "$url1" -O "$url2"atau printf %s\\n "$url1" "$url2"|xargs -n1 curl -O.
nisetama
Ini tip yang bagus. Terima kasih banyak!
cmcromance
42

1) pada jenis mac Anda

nano /usr/bin/wget

2) rekatkan yang berikut ini

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

3) tutup lalu buat itu bisa dieksekusi

chmod 777 /usr/bin/wget

Itu dia.

Eamon Straughn
sumber
Lebih baik dari alias.
MK
3
Hampir benar. Saya percaya bahwa langkah pertama seharusnya vim /usr/bin/wget;) haha ​​hanya bercanda. terima kasih atas jawabannya - ini tidak pernah benar-benar terjadi pada saya dan untuk beberapa alasan saya tidak merasa ingin menginstal brew / fink / apa pun, jadi pujian untuk jawaban portabel yang mudah.
Kasapo
3
-Lpenting untuk menangani 301respons http . wget menangani mereka secara default.
Donn Lee
"curl -L resource.url / tar.tar.gz -O tar.tar.gz" berfungsi dengan baik, terima kasih atas solusi tunggal yang bisa diterapkan ini di antara yang lain di utas ini untuk kasus penggunaan saya.
Oleksii Kyslytsyn
sudo nano / usr / bin / wget
Vino
18

Gunakan curl;

curl http://127.0.0.1:8000 -o index.html
ismail
sumber
12

Inilah setara Mac OS X dari Linux.

Untuk Linux, misalnya Ubuntu pada instance AWS, gunakan:

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

Pada Mac, yaitu untuk pengembangan lokal, gunakan ini:

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

Parameter -o diperlukan pada Mac untuk output ke file, bukan pada layar. Tentukan nama target yang berbeda untuk mengganti nama file yang diunduh.

Gunakan modal -O untuk mengganti nama dengan wget. Huruf kecil -o akan menentukan file output untuk log transfer.

Oliver Schafeld
sumber
5

Anda dapat membangun wget di mesin mac atau menggunakan MacPorts untuk menginstalnya secara langsung.

sudo port install wget 

Ini akan berfungsi seperti pesona, Anda juga dapat memperbarui ke versi terbaru segera setelah tersedia. Port jauh lebih stabil daripada minuman, meskipun memiliki jumlah formula dan port yang jauh lebih sedikit.

Anda dapat menginstal MacPorts dari https://www.macports.org/install.phpAnda dapat mengunduh .pkgfile dan menginstalnya.

Hammad Haleem
sumber
dan bagaimana Anda menginstal port?
Roy Lovejoy
5

Alih-alih menggunakan yang setara, Anda dapat mencoba "brew install wget" dan gunakan wget.

Anda harus menginstal minuman di mac Anda.

Jaya Konduru
sumber
1
Tidak akan downvote, tapi ini adalah tiruan dari jawaban Eric 13 Juni 13.
MarkHu
4

Anda bisa menggunakannya curlsebagai gantinya. Ini diinstal secara default ke /usr/bin.

James Sumners
sumber
2

wget Precompiled Mac Binary

Bagi mereka yang mencari instalasi wget cepat di Mac, lihat biner yang dikompilasi Quentin Stafford-Fraser di sini, yang telah ada selama lebih dari satu dekade:

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

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

Tidak ada sampah make / install / port / brew / curl. Cukup unduh, instal, dan jalankan. Bekerja dengan Mac OS X 10.3-10.12 +.

Beejor
sumber