2012-11-07 48 views

回答

3

<(echo 'stuff')被稱爲進程替換。它使用命名管道(或FIFO)來管理命令的輸出(儘管確切的機制依賴於系統)。你可以在任何地方使用此結構*一個文件名可以使用,所以用:

program < <(command) 

我們從命令服用輸出,並將其傳遞給程序的標準輸入流。 *某些程序使用名爲的內存映射(請參閱man 2 mmap),它不能與命名管道一起使用。一個寫得很好的程序會事先檢查文件類型,不幸的是並不是所有的程序都寫得很好....

0

echo ls產生ls<(...)創建一個包含它的文件。 <將此文件發送到bash的標準輸入,使bash運行它。

5

<(anycmd)創建具有的輸出一個臨時文件anycmd

anycmd <運行anycmd以其標準輸入從文件饋送在右側<

所以你的命令等同於

tmpf=$(mktemp) 
echo 'ls' > $tmpf 
bash < $tmpf 
unlink $tmpf