OS X: Linux'un widget'ına eşdeğer


499

Stok OS X sistemindeki Un * x kabuk komut dosyasından nasıl HTTP GET yapabilirim? (üçüncü taraf yazılımları yüklemek bir seçenek değildir, çünkü bunun üzerinde kontrolüm olmayan birçok farklı sistemde çalışması gerekir).

Örneğin Mercurial sunucusunu yerel olarak bir hg hizmeti yaparak başlatırsam :

... $ hg serve 

Ve sonra, wget komutuna sahip bir Linux'tan bir wget yapıyorum:

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

Ve "hg serve" komutunu başlattığım terminalde , aslında bir HTTP GET'in yolunu açtığını görebiliyorum:

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

Linux'ta bir kabuk betiğinden HTTP GET yapmanın bir yolu wget kullanmaktır (bu komut elbette kurulmuşsa).

Bir wget'in eşdeğerini yapmanın başka yolları var mı? Özellikle stok OS X yüklemelerinde çalışacak bir şey arıyorum.


Yanıtlar:


712

Söylemeliyim curl http://127.0.0.1:8000 -o outfile


27
Ayrıca, wget her ikisiyle de kullanılabilir MacPorts ve Fink .
Brian Clapper

47
Buraya Mac'te nasıl wget alınacağına ilişkin bir Google aramasından geldim, bu nedenle OP'nin 3. taraf yazılımların kurulumundan kaçınma gereksinimine rağmen, gelecekte MacPorts kullanmadan wget'i nasıl yükleyeceğimi bulduğum hızlı bir kılavuza bir bağlantı vereceğim referans.
Eirik H

32
Homebrew'da da mevcuttur.
Daniel, Reinstate Monica'ya

2
İleriyi takip etmiyor gibi görünüyor.
17'de

14
Dosyaları indirmek için indirilen dosyayı otomatik olarak yeniden adlandırmak için kullanabilirsiniz -Oveya --remote-nameişaretleyebilirsiniz. ör.curl -O http://somehost.org/file.zip
nimcap

463

brew install wget

Homebrew , OSX için yum, apt-get, choco, emerge, vb.'ye benzer bir paket yöneticisidir. Xcode ve Komut Satırı Araçlarını da yüklemeniz gerekeceğini unutmayın. Neredeyse OSX'te komut satırını kullanan herkes bu şeyleri yine de yüklemek isteyecektir.

Homebrew'u kullanamıyorsanız veya kullanmak istemiyorsanız, şunları da yapabilirsiniz:

Widget'ı manuel olarak yükle:

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

Veya bash takma adı kullanın:

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

11
Homebrew'u açıklamak için bir dakikanızı ayırabilirsiniz, ancak wgetburada sadece bir diğerinin sahibi tarafından silindiği ve curlgerçek bir eşdeğerden ziyade bir alternatif olduğu için yeni doğmuş bir cevap olması önemlidir .
Chris Stratton

2
Teşekkürler, demlenmiş bir kişi zaten kurulu olarak bu bana yardımcı oldu.
enderland

4
@Michaelangelo Başkalarının gönderilerini tahrip etmek sizin işiniz değil. Kendi puanlarınızı vermek için başka cevapları düzenlememelisiniz - bu uygun değildir. Aslında, eylemler Meta'da tartışılıyor: meta.stackoverflow.com/questions/315892/…
Zizouz212

2
@EricHartford Aşağı oylama sorunu çözmez. Wget'i manuel olarak nasıl yükleyeceğinize ilişkin diğer seçenekleri listelemeden bir alternatif sağladı .
Michaelangel007

1
Bence iyi bir noktaya değindin. Ve cevabını fikirlerinizi birleştirmek için düzenleyeceğim.
Eric Hartford

87

Curl, neredeyse varsayılan wget'e eşdeğer bir moda sahiptir.

curl -O <url>

Bu tıpkı

wget <url>

Ve isterseniz, bunu .bashrc'nize ekleyebilirsiniz:

alias wget='curl -O'

% 100 uyumlu değil, ancak en yaygın wget kullanımı (IMO) için çalışıyor


2
bununla nasıl tekrarlanırsın?
Jasper

Bunu aşağıdaki gibi bir döngüye eklemek için bash komutunu kullanabilirsiniz: for i in `seq 1 <n>` do curl -O <url>;done;burada <n> yineleme yapmak istediğiniz sayıdır ve <url> alınacak url'dir.
Blairg23

1
Bazen -Lkonum yönlendirmelerini takip etmek için bayrağı eklemeniz gerekir . Bunu curl -OL <url>yapmak için kullanabilirsiniz .
Gustavo Straube

1
-Oyalnızca bir sonraki bağımsız değişken için de geçerlidir, bu nedenle birden çok URL'yi indirmek için curl -O "$url1" -O "$url2"veya gibi bir şey kullanmanız gerekir printf %s\\n "$url1" "$url2"|xargs -n1 curl -O.
nisetama

Harika bir temiz ipucu. Çok teşekkür ederim!
cmcromance

42

1) Mac türünüzde

nano /usr/bin/wget

2) aşağıdakileri yapıştırın

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

3) kapatıp çalıştırılabilir hale getirin

chmod 777 /usr/bin/wget

Bu kadar.


Bir takma addan daha iyi.
MK

3
Neredeyse doğru. İnanıyorum ki birinci adım vim /usr/bin/wgetolsa da olmalı ;) haha ​​şaka yapıyordum. cevap için teşekkürler - bu gerçekten bana hiç olmadı ve nedense demlemek / fink / neyse yüklemek gibi hissetmiyorum, bu yüzden kolay taşınabilir cevap için kudos.
Kasapo

3
-Lhttp 301yanıtlarını ele almak için önemlidir . wget bunları varsayılan olarak işler.
Donn Lee

"curl -L resource.url / tar.tar.gz -O tar.tar.gz" iyi çalıştı, benim kullanım durumum için bu iş parçacığı diğerleri arasında bu tek uygulanabilir çözüm için teşekkürler.
Oleksii Kyslytsyn

sudo nano / usr / bin / wget
Vino

18

Kullanın curl;

curl http://127.0.0.1:8000 -o index.html

12

İşte Linux'un widget'ının Mac OS X eşdeğeri.

Linux için, örneğin bir AWS örneğindeki Ubuntu, şunu kullanın:

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

Mac'te, yani yerel geliştirme için şunu kullanın:

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

Mac'te ekran yerine bir dosyaya çıktı almak için -o parametresi gerekir. İndirilen dosyayı yeniden adlandırmak için farklı bir hedef adı belirtin.

Wget ile yeniden adlandırmak için büyük -O kullanın . Küçük harf -o, aktarım günlüğü için çıktı dosyasını belirtir.


5

Mac makinesinde wget oluşturabilir veya doğrudan yüklemek için MacPorts'u kullanabilirsiniz.

sudo port install wget 

Bu bir cazibe gibi çalışır, ayrıca en kısa sürede kullanılabilir hale getirebilirsiniz. Bağlantı noktası demekten çok daha kararlıdır, ancak çok daha az sayıda formül ve bağlantı noktası vardır.

MacPorts'u https://www.macports.org/install.phpyükleyebilir, .pkgdosyayı indirebilir ve yükleyebilirsiniz.


ve bağlantı noktasını nasıl kurarsınız?
Roy Lovejoy

5

Eşdeğeri yerine "brew install wget" denemek ve wget kullanabilirsiniz.

Mac'inizde demlenmiş olması gerekir.


1
Düşmeyeceksin, ama bu Eric'in 13 Haziran 13'te cevapladığı bir çift.
MarkHu

4

Bunun curlyerine kullanabilirsiniz . Varsayılan olarak içine yüklenir /usr/bin.


2

wget Önceden Derlenmiş Mac İkili

Mac'te hızlı bir kurulum yüklemek isteyenler için, on yıldan uzun süredir var olan Quentin Stafford-Fraser'in önceden derlenmiş ikilisine bakın:

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

2008 için MD5 wget.zip: 24a35d499704eecedd09e0dd52175582
2005 için MD5 wget.zip: c7b48ec3ff929d9bd28ddb87e1a76ffb

Make / install / port / brew / curl önemsiz. Sadece indirin, kurun ve çalıştırın. Mac OS X 10.3-10.12 + ile çalışır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.