Shell-Script
將 bash 函式的結果與 bash 命令一起使用
我創建了一個名為 bash 的函式
get
:get() { $(fd -H | fzf) }
fd
就像find
,它將找到的所有文件都通過管道傳輸到fzf
一個模糊查找器中,這使我可以找到一個文件。我希望能夠使用
get
各種命令,例如echo
orls
,但我無法“讓它”工作(請原諒雙關語),例如# I am in home dir, and the result from get is 'Documents' $ ls $(get) Documents: command not found $ ls `get` Documents: command not found $ echo get | ls # Just performs ls on current dir not result from get $ ls get ls: cannot access 'get': No such file or directory
不知道如何使用我製作的功能,文字不起作用,評估不起作用,管道不起作用,我沒有技巧,所以我將問題傳遞給 SO。
封閉
$(
不是您想要的:它將嘗試使用該管道的輸出執行命令。只需刪除命令替換,它就可以正常工作:get() { fd -H | fzf }
然後,您可以像往常一樣傳遞給其他命令:
foo "$(get)"
或者,如果您依賴分詞:
foo $(get)
順便說一句,由於文件名可以包含換行符,你真正想要的是:
get() { fd -0 -H | fzf --read0 }