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.


Jawaban:


713

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


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'

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)


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.


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

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.


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.


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.


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.


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.