Thủ thuật nhỏ với wget

wget là công cụ download dòng lệnh được ưa thích và phổ biến trong giới nix. wget cũng đã có những front-end GUI (như gnome-wget trên Ubuntu) nhưng dòng lệnh vẫn được chuộng hơn (từ newbie đến gurus). Sau này có Download for X với giao diện cool nhưng mình vẫn thích sự đơn sơ và gọn của wget (đơn giản chỉ vì mình có thể dùng wget trên cả Ubuntu và Mac OS X ;)).

Tuy nhiên, có một vấn đề nhỏ với wget là mình gặp phải và ghi nhận lại như một kinh nghiệm nhỏ chia sẻ với bà con. Khi dùng wget để lấy một file mà URL không phải direct link (nghĩa là phải thông qua từ 1..n link để đến được file cần lấy), ví dụ:

URL=http://www.abc.com/myfile.php?fileid=a_file_id&referer=xyz.com

Lệnh gọi wget sẽ là:

$ wget http://www.abc.com/myfile.php?fileid=a_file_id&referer=xyz.com

Điều gì xảy ra ở đây?

wget chỉ downloads file “myfile.php”, và… (quan trọng nhất là) wget chạy ở chế độ nền (background). Ặc, sao thế nhỉ? Sau một hồi thử tới thử lui và săm soi, tưởng là bug của wget hoặc URL sai, nhưng cuối cùng phát hiện ra là do cả hai và do shell nữa, nhưng không có ai sai hết. Trong shell của NIX (bash, csh), khi sử dụng kí hiệu ‘&’ ở cuối một lệnh sẽ có ý nghĩ là bắt lệnh đó chạy ở chế độ nền. Và cái URL dễ thương vô tội đã bị chú wget hiểu nhầm vì trong URL có dấu &. Giải pháp cho vấn đề này là dùng dấu nháy đơn (single quote) bao đóng trọn URL để anh shell không phiên dịch và suy diễn linh tinh về cái URL của mình.

$ wget ‘http://www.abc.com/myfile.php?fileid=a_file_id&referer=xyz.com’

Bingo!

Advertisements

About Huy Tran

Just a lazy member of the blogosphere.
This entry was posted in Linux. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s