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
}

관련 정보