使用 wget 从管道下载文件?无法写入 -(损坏的管道)错误
Downloading files from a pipe with wget? Cannot write to - (broken pipe) error
我正在尝试使用 wget 下载我的网站。
我有一个 sitemap.xml
,其中包含指向我网站上每个页面的链接。这是下载源。
这是我的命令:
wget --verbose http://example.com/sitemap.xml --output-document - | egrep -o "http://example.com/[^<]+" | wget --verbose -i -
这将下载每一页,但问题是只有 HTML 被下载—— none 图片,CSS,或其他任何内容。
所以,在 this answer 的基础上,我想添加选项 -E -H -k -p
:
-E: Append .html to the file name if it is an HTML file but doesn't end in .html or similar
-H: Download files from other hosts, too
-k: After downloading convert any link in it so they point to the downloaded files
-p: Download anything the page needs for proper offline viewing
但是,当我修改命令时
wget --verbose http://example.com/sitemap.xml --output-document - | egrep -o "http://example.com/[^<]+" | wget --verbose -i -E -H -k -p -
然后我得到一个错误:
Cannot write to ‘-’ (Broken pipe).
我该如何解决这个问题?
在 GNU wget
中,如果你使用 -i
它应该紧跟文件名(或 -
表示标准输入),this
wget --verbose -i -
没问题,但是这里
wget --verbose -i -E -H -k -p -
-i
后没有文件名,还有其他选项,请按
wget --verbose -E -H -k -p -i -
然后写下它是否对你有用。当您使用 wget
's man page 时,请注意选项是否应该或不应该跟在参数后面,例如 -i
应该并因此显示为
-i file
虽然例如v(冗长)不能,因此确实显示为
-v
我正在尝试使用 wget 下载我的网站。
我有一个 sitemap.xml
,其中包含指向我网站上每个页面的链接。这是下载源。
这是我的命令:
wget --verbose http://example.com/sitemap.xml --output-document - | egrep -o "http://example.com/[^<]+" | wget --verbose -i -
这将下载每一页,但问题是只有 HTML 被下载—— none 图片,CSS,或其他任何内容。
所以,在 this answer 的基础上,我想添加选项 -E -H -k -p
:
-E: Append .html to the file name if it is an HTML file but doesn't end in .html or similar -H: Download files from other hosts, too -k: After downloading convert any link in it so they point to the downloaded files -p: Download anything the page needs for proper offline viewing
但是,当我修改命令时
wget --verbose http://example.com/sitemap.xml --output-document - | egrep -o "http://example.com/[^<]+" | wget --verbose -i -E -H -k -p -
然后我得到一个错误:
Cannot write to ‘-’ (Broken pipe).
我该如何解决这个问题?
在 GNU wget
中,如果你使用 -i
它应该紧跟文件名(或 -
表示标准输入),this
wget --verbose -i -
没问题,但是这里
wget --verbose -i -E -H -k -p -
-i
后没有文件名,还有其他选项,请按
wget --verbose -E -H -k -p -i -
然后写下它是否对你有用。当您使用 wget
's man page 时,请注意选项是否应该或不应该跟在参数后面,例如 -i
应该并因此显示为
-i file
虽然例如v(冗长)不能,因此确实显示为
-v