642 Stimmen

OS X: Äquivalent zu wget von Linux

Wie kann ich einen HTTP-GET aus einem Un*x-Shell-Skript auf einem OS X-System ausführen? (Die Installation von Software von Drittanbietern ist keine Option, da dies auf vielen verschiedenen Systemen laufen muss, über die ich keine Kontrolle habe).

Wenn ich zum Beispiel den Mercurial-Server lokal starte und ein Hg-Aufschlag :

... $ hg serve 

Und dann, von einem Linux, das die wget Befehl führe ich ein wget aus:

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

Und auf dem Terminal, auf dem ich das "hg serve" kann ich in der Tat sehen, dass ein HTTP GET seinen Weg gemacht hat:

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

Eine Möglichkeit, einen HTTP-GET aus einem Shell-Skript auszuführen, ist unter Linux also die Verwendung von wget (natürlich nur, wenn dieser Befehl installiert ist).

Welche anderen Möglichkeiten gibt es, um das Äquivalent einer wget ? Ich bin insbesondere auf der Suche nach etwas, das auf Standard-OS-X-Installationen funktionieren würde.

2 Stimmen

909voto

SiegeX Punkte 127640

Der folgende native Befehl funktioniert:

curl http://127.0.0.1:8000 -o outfile

Beachten Sie, dass curl folgt standardmäßig keinen Weiterleitungen. Um dies zu tun, fügen Sie Folgendes hinzu -L in die Argumentliste aufnehmen.

600voto

Eric Hartford Punkte 14436

brew install wget

Selbstgebrautes ist ein Paketmanager für OSX analog zu yum, apt-get, choco, emerge, etc. Beachten Sie, dass Sie auch Xcode und die Befehlszeilen-Tools installieren müssen. Praktisch jeder, der die Kommandozeile unter OSX verwendet, wird diese Dinge ohnehin installieren wollen.

Wenn Sie nicht selbst brauen können oder wollen, können Sie das auch tun:

Installieren Sie wget manuell:

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

Oder Sie verwenden einen Bash-Alias:

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

110voto

Ed Henderson Punkte 1096

Curl hat einen Modus, der dem Standardmodus von wget fast gleichwertig ist.

curl -O <url>

Dies funktioniert genau wie

wget <url>

Und wenn Sie möchten, können Sie dies zu Ihrer .bashrc hinzufügen:

alias wget='curl -O'

Es ist nicht 100% kompatibel, aber es funktioniert für die gängigsten Wget-Anwendungen (IMO)

45voto

Eamon Straughn Punkte 469

1) auf Ihrem Mac eingeben

nano /usr/bin/wget

2) fügen Sie Folgendes ein

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

3) schließen und dann ausführbar machen

chmod 777 /usr/bin/wget

Das war's.

19voto

ismail Punkte 43244

Verwenden Sie curl ;

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X