
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 子系統」並從 Microsoft Store 安裝 Ubuntu這篇 HTG 文章.)
答案1
您連結的答案是錯誤的:bash.exe
尚未被棄用,在您的情況下,它甚至是強制性的。
原因是,雖然 WSL 有 命令參數,它只允許單一命令,因此它將把以下命令列解釋為無法工作的單一呼叫:
嘗試使用內建 shell 指令也不起作用:
簡而言之,您被迫bash
在範例中使用該命令。如果您在 WSL 中安裝了多個 Linux 發行版,bash
則會呼叫定義為預設發行版的 shell。
答案2
我讀這裡應該使用 wsl.exe 而不是 bash,但我不知道如何建立等效的命令。
只需替換bash.exe -c
為wsl.exe --exec bash -c
:
1
C:\Windows\System32\wsl.exe --exec bash -c
"ping 1.0.0.1 | while read line; do echo `date` - $line; done"
這在以下情況下效果很好cmd.exe
。我建議嘗試!
2
輸出範例:
date - PING 1.0.0.1 (1.0.0.1) 56(84) bytes of data.
date - 64 bytes from 1.0.0.1: icmp_seq=1 ttl=56 time=4.58 ms
date - 64 bytes from 1.0.0.1: icmp_seq=2 ttl=56 time=4.31 ms
^C
幾天前我透過閱讀自己了解到了這一點這個帖子。
你是對的bash.exe
已棄用
(如wslconfig.exe
和lxrun.exe
)。
參考
1
在 中wsl.exe --exec bash -c
,bash
是Linux
命令和不是Windows bash.exe
命令。
如果您嘗試bash
用bash.exe
– 替換並體驗到沒有輸出,這一點(間接)是清楚的。
2
要開啟命令列(以管理員身分) – 按WinKey+ r,鍵入cmd
,按住
Ctrl+Shift並按Enter。 (然後使用+ , +
複製貼上命令。)CtrlcCtrlv