나는 다음과 같은 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
}