Windows 桌面快捷方式目标字段中的以下单个命令行将 ping 地址并为其添加时间戳。
C:\Windows\System32\bash.exe -c "ping 1.0.0.1 | while read line; do echo `date` - $line; done"
示例输出:
Fri Nov 27 14:08:05 CST 2020 - PING 1.0.0.1 (1.0.0.1) 56(84) bytes of data.
Fri Nov 27 14:08:05 CST 2020 - 64 bytes from 1.0.0.1: icmp_seq=1 ttl=58 time=26.7 ms
Fri Nov 27 14:08:06 CST 2020 - 64 bytes from 1.0.0.1: icmp_seq=2 ttl=58 time=35.5 ms
Fri Nov 27 14:08:07 CST 2020 - 64 bytes from 1.0.0.1: icmp_seq=3 ttl=58 time=42.0 ms
我在这里读到应该使用 wsl.exe 而不是 bash,但我不知道如何创建等效命令。
(要在 Windows 10 中执行任何此操作,您需要在 Windows 10 中启用“适用于 Linux 的 Windows 子系统”,并根据此 HTG 文章从 Microsoft Store 安装 Ubuntu 。)
您链接的答案是错误的:
bash.exe
尚未被弃用,在您的情况下甚至是强制性的。原因是,虽然 WSL 有一个 命令参数,但它只允许一个命令,因此它将以下命令行解释为一个不起作用的单个调用:
尝试使用内置的 shell 命令也不起作用:
简而言之,您被迫在
bash
示例中使用该命令。如果您在 WSL 中安装了多个 Linux 发行版,bash
将调用定义为默认值的发行版的 shell。只需替换
bash.exe -c
为wsl.exe --exec bash -c
: 1这在
cmd.exe
. 我建议尝试一下! 2输出示例:
几天前,我通过阅读这篇文章自己了解了这一点。
你是对的,
bash.exe
已经被弃用了 (wslconfig.exe
和一样lxrun.exe
)。参考
cmd.exe
1 在
wsl.exe --exec bash -c
中,bash
是Linux 命令而不是 Windowsbash.exe
命令。如果您尝试替换
bash
为bash.exe
- 并体验到没有输出,这(间接)清楚。2 要打开命令行(以管理员身份) – 点击WinKey+ r,键入
cmd
,按住 Ctrl+Shift并按Enter。(然后用+ , +复制粘贴命令。)CtrlcCtrlv