You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将wget输出写入文件?为何HTTP头写入文件后为空?

为啥你的wget命令没把HTTP头写入文件?

嘿,我来帮你捋清楚这俩命令为啥没生效~核心问题出在wget参数的输出流向和--spider模式的特性上:

第一个命令的问题:wget -S --spider -O SESSIONS.txt 'mysite.com'

  • --spider是蜘蛛模式,这个模式下wget只会检查目标URL是否可达,不会下载任何实际内容。而-O参数是用来指定「下载内容」的输出文件,既然没内容可下载,SESSIONS.txt自然是空的。
  • 另外,-S(显示HTTP头)的输出是发送到标准错误流(stderr),不是标准输出流(stdout),-O只能捕获stdout的内容,所以头信息根本没被写到文件里。

第二个命令的问题:wget -S --spider 'mysite.com' > SESSIONS.txt

  • >符号是重定向**标准输出流(stdout)**到文件,但-S的头信息在stderr里,而蜘蛛模式下stdout本身就没有输出内容,所以文件还是空的。

正确的写法

要把HTTP头写入文件,你需要把stderr的内容重定向到文件,或者合并所有输出流:

方法1:只捕获HTTP头(仅重定向stderr)

wget -S --spider 'mysite.com' 2> SESSIONS.txt

这里的2>就是专门把标准错误流(文件描述符为2)重定向到指定文件。

方法2:合并所有输出到同一个文件

如果想同时捕获所有输出(包括蜘蛛模式下可能出现的少量stdout内容),可以用:

wget -S --spider 'mysite.com' &> SESSIONS.txt

或者兼容更老Shell环境的写法:

wget -S --spider 'mysite.com' > SESSIONS.txt 2>&1

这样就能把HTTP头成功写入SESSIONS.txt啦~

内容的提问来源于stack exchange,提问作者user1592380

火山引擎 最新活动