Shell-Script

將 bash 函式的結果與 bash 命令一起使用

  • August 9, 2022

我創建了一個名為 bash 的函式get

get() {
   $(fd -H | fzf)
}

fd就像find,它將找到的所有文件都通過管道傳輸到fzf一個模糊查找器中,這使我可以找到一個文件。

我希望能夠使用get各種命令,例如echoor ls,但我無法“讓它”工作(請原諒雙關語),例如

# 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
}

引用自:https://unix.stackexchange.com/questions/713029