我创建了一个名为的 bash 函数get
:
get() {
$(fd -H | fzf)
}
fd
就像find
,它将找到的所有文件通过管道传输到fzf
模糊查找器中,这使我可以找到文件。
我希望能够使用get
各种命令,例如echo
or 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。
答案1
包含在$(
不是您想要的:它将尝试使用该管道的输出运行命令。只需删除命令替换即可正常工作:
get() {
fd -H | fzf
}
然后您可以照常传递给其他命令:
foo "$(get)"
或者,如果您依赖分词:
foo $(get)
顺便说一句,由于文件名可以包含换行符,因此您真正想要的是:
get() {
fd -0 -H | fzf --read0
}