Command-Line
為什麼在這種情況下使用 xargs 會失敗?
我試圖了解的用法
xargs
並做了以下實驗。ls | xargs | touch
我想刷新目前目錄中的文件日期和目錄。
雖然有點傻,因為我可以使用更簡單的形式來達到同樣的效果。
在我看來,
xargs
從 中讀取STDIN
並將其轉換為其他命令的參數(/bin/echo
預設情況下,如果未指定命令)。我是不是誤會了什麼?它失敗了,我想知道為什麼。
它需要是這樣的:
ls | xargs touch
該命令使用從標準輸入讀取的多個字元串來
xargs
執行該命令。touch
在您的情況下, stdin forxargs
是來自ls
.你有命令的方式:
ls | xargs | touch
xargs
沒有針對將從標準輸入讀取的字元串(文件名)執行的命令。在這種情況下,xargs
只需列印每個文件名,並touch
在其標準輸入中獲取文件名列表。但touch
不會從它的標準輸入中讀取,並且由於您沒有給它任何參數,它應該列印出如下錯誤消息:touch: missing file operand Try `touch --help' for more information.
(你應該在你的問題中提到)。