OS X: tương đương với wget của Linux


499

Làm cách nào tôi có thể thực hiện HTTP GET từ tập lệnh shell Un * x trên hệ thống OS X chứng khoán? (cài đặt phần mềm của bên thứ ba không phải là một tùy chọn, vì điều này phải chạy trên nhiều hệ thống khác nhau mà tôi không có quyền kiểm soát).

Ví dụ: nếu tôi khởi động máy chủ Mercurial cục bộ thực hiện một hg phục vụ :

... $ hg serve 

Và sau đó, từ một Linux có lệnh wget tôi thực hiện 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

Và trên thiết bị đầu cuối mà tôi đã khởi chạy lệnh "hg phục vụ" , tôi thực sự có thể thấy rằng một HTTP GET đã thực hiện theo cách của nó:

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

Vì vậy, trên Linux, một cách để thực hiện HTTP GET từ tập lệnh shell là sử dụng wget (nếu lệnh đó được cài đặt tất nhiên).

Có những cách nào khác để làm tương đương với một wget ? Đặc biệt, tôi đang tìm kiếm thứ gì đó sẽ hoạt động trên các bản cài đặt OS X.


Câu trả lời:


712

Tôi sẽ phải nói curl http://127.0.0.1:8000 -o outfile


27
Ngoài ra, wget có sẵn thông qua cả MacPortsFink .
Brian Clapper

47
Tôi đến đây từ một tìm kiếm của Google về cách tải wget trên Mac, vì vậy mặc dù yêu cầu của OP là tránh cài đặt phần mềm của bên thứ 3, tôi sẽ cung cấp một liên kết đến một hướng dẫn nhanh mà tôi đã tìm thấy về cách cài đặt wget mà không cần sử dụng MacPorts trong tương lai tài liệu tham khảo.
Eirik H

32
Nó cũng có sẵn trên Homebrew.
Daniel nói Phục hồi lại

2
Dường như không đi theo về phía trước.
nroose

14
Để tải xuống tệp, bạn có thể sử dụng -Ohoặc --remote-namegắn cờ để tự động đổi tên tệp đã tải xuống. ví dụcurl -O http://somehost.org/file.zip
nimcap

463

brew install wget

Homebrew là trình quản lý gói cho OSX tương tự yum, apt-get, choco, emerge, v.v ... Hãy lưu ý rằng bạn cũng sẽ cần cài đặt Xcode và Công cụ dòng lệnh. Hầu như bất cứ ai sử dụng dòng lệnh trong OSX đều muốn cài đặt những thứ này.

Nếu bạn không thể hoặc không muốn sử dụng homebrew, bạn cũng có thể:

Cài đặt wget bằng tay:

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

Hoặc, sử dụng bí danh bash:

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

11
Bạn có thể dành một chút thời gian để giải thích về homebrew, nhưng điều quan trọng là có một wgetcâu trả lời hiển thị cho người mới ở đây vì người khác chỉ bị xóa bởi chủ sở hữu của nó và curllà một thay thế thay vì tương đương theo nghĩa đen.
Chris Stratton

2
Cảm ơn, điều này hữu ích với tôi khi một người nào đó đã cài đặt bia.
enderland

4
@Michaelangelo Và đó không phải là công việc của bạn để phá hoại bài đăng của người khác. Bạn không nên chỉnh sửa các câu trả lời khác để đưa ra quan điểm của riêng mình - điều đó không phù hợp. Trên thực tế, các hành động đang được thảo luận trên Meta: meta.stackoverflow.com/questions/315892/
mẹo

2
@EricHartford Bỏ phiếu xuống không giải quyết được vấn đề. Nó cung cấp một lựa chọn thay thế, mà không liệt kê tùy chọn khác về cách cài đặt wget thủ công.
Michaelangel007

1
Tôi nghĩ rằng bạn có một điểm tốt. Và tôi sẽ chỉnh sửa câu trả lời để kết hợp ý tưởng của bạn.
Eric Hartford

87

Curl có một chế độ gần như tương đương với wget mặc định.

curl -O <url>

Cái này hoạt động giống như

wget <url>

Và, nếu bạn thích, bạn có thể thêm phần này vào .bashrc:

alias wget='curl -O'

Nó không tương thích 100%, nhưng nó hoạt động cho việc sử dụng wget phổ biến nhất (IMO)


2
Làm thế nào để bạn làm đệ quy với điều này?
Jasper

Bạn có thể sử dụng bash để thêm phần này vào một vòng lặp như thế này: for i in `seq 1 <n>` do curl -O <url>;done;trong đó <n> là số lần bạn muốn lặp lại và <url> là url cần kéo.
Blairg23

1
Đôi khi bạn sẽ cần thêm -Lcờ để theo dõi chuyển hướng vị trí. Bạn có thể sử dụng curl -OL <url>để làm điều đó.
Gustavo Straube

1
-Ocũng chỉ áp dụng cho đối số tiếp theo, vì vậy, để tải xuống nhiều URL, bạn phải sử dụng một cái gì đó như curl -O "$url1" -O "$url2"hoặc printf %s\\n "$url1" "$url2"|xargs -n1 curl -O.
nisetama

Đó là một mẹo gọn gàng tuyệt vời. Cảm ơn bạn rất nhiều!
cmcromance

42

1) trên loại mac của bạn

nano /usr/bin/wget

2) dán các mục sau vào

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

3) đóng rồi thực hiện

chmod 777 /usr/bin/wget

Đó là nó.


Tốt hơn một bí danh.
MK

3
Gần đúng. Tôi tin rằng bước một nên được vim /usr/bin/wgetmặc dù;) haha ​​chỉ đùa thôi. cảm ơn vì câu trả lời - điều này chưa bao giờ thực sự xảy ra với tôi và vì một số lý do tôi không cảm thấy muốn cài đặt brew / fink / bất cứ điều gì, vì vậy, câu trả lời dễ dàng cho câu trả lời di động.
Kasapo

3
-Llà quan trọng để xử lý các 301phản hồi http . wget xử lý chúng theo mặc định.
Donn Lee

"Curl -L resource.url / tar.tar.gz -O tar.tar.gz" hoạt động tốt, cảm ơn vì giải pháp khả thi duy nhất này trong số những người khác trong chủ đề này cho trường hợp sử dụng của tôi.
Oleksii Kyslytsyn

sudo nano / usr / bin / wget
Vino


12

Đây là Mac OS X tương đương với wget của Linux.

Đối với Linux, ví dụ Ubuntu trên phiên bản AWS, hãy sử dụng:

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

Trên máy Mac, tức là để phát triển cục bộ, hãy sử dụng:

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

Tham số -o được yêu cầu trên máy Mac để xuất thành tệp thay vì trên màn hình. Chỉ định một tên mục tiêu khác để đổi tên tệp đã tải xuống.

Sử dụng vốn -O để đổi tên bằng wget. Chữ thường -o sẽ chỉ định tệp đầu ra cho nhật ký chuyển.


5

Bạn có thể xây dựng wget trên máy mac hoặc sử dụng MacPorts để cài đặt trực tiếp.

sudo port install wget 

Điều này sẽ hoạt động như một cơ duyên, bạn cũng có thể cập nhật lên phiên bản mới nhất ngay khi có sẵn. Cổng ổn định hơn nhiều so với bia, mặc dù có số lượng công thức và cổng ít hơn rất nhiều.

Bạn có thể cài đặt MacPorts từ https://www.macports.org/install.phpbạn có thể tải xuống .pkgtệp và cài đặt nó.


và làm thế nào để bạn cài đặt cổng?
Roy Lovejoy

5

Thay vì đi tương đương, bạn có thể thử "brew install wget" và sử dụng wget.

Bạn cần phải cài đặt brew trong máy mac của bạn.


1
Sẽ không downvote, nhưng đây là bản dupe của Eric đã trả lời ngày 13 tháng 6 năm 13.
MarkHu


2

wget Mac nhị phân được biên dịch sẵn

Đối với những người đang tìm kiếm cài đặt wget nhanh trên Mac, hãy xem nhị phân được biên dịch sẵn của Quentin Stafford-Fraser tại đây, đã tồn tại hơn một thập kỷ:

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

MD5 cho 2008 wget.zip: 24a35d499704eecedd09e0dd52175582
MD5 cho 2005 wget.zip: c7b48ec3ff929d9bd28ddb87e1a76

Không có make / install / port / brew / curl rác. Chỉ cần tải về, cài đặt và chạy. Hoạt động với Mac OS X 10.3-10.12 +.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.