私は次のようなbash関数を作成しましたget
。
get() {
$(fd -H | fzf)
}
fd
同様にfind
、見つかったすべてのファイルをfzf
ファジーファインダーにリンクしてファイルを見つけることができます。
またはなど、get
さまざまなコマンドを使用できるようにしたいが、動作するように「実行」することはできません。echo
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
}