bashコマンドでbash関数の結果を使用する

bashコマンドでbash関数の結果を使用する

私は次のようなbash関数を作成しましたget

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

fd同様にfind、見つかったすべてのファイルをfzfファジーファインダーにリンクしてファイルを見つけることができます。

またはなど、getさまざまなコマンドを使用できるようにしたいが、動作するように「実行」することはできません。echols

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

おすすめ記事