$CDPATH
각 명령줄 도구에 대해 작동 할 수 있는 방법이 있는지 알아내려고 노력 중입니다 . 현재 내 홈 디렉터리에는 src/
내 모든 프로젝트가 포함된 디렉터리가 있습니다 . 이렇게 하면 매번 입력 cd <foo>
할 필요 없이 모든 디렉토리의 콘텐츠를 입력 할 수 있습니다.cd ~/src/foo
나는 비슷한 일을 할 수 vim foo/bar.c
있고 bash가 자동으로 내가 의미하는 바를 알아낼 수 있기를 원합니다. 또한 자동 완성을 통해 편집하고 싶은 내용에 대한 제안을 제공 하고 나머지 부분 vim foo/<Tab>
도 자동 완성되도록 하고 싶습니다 .vim fo<Tab>
foo
비슷한 작업을 수행하는 기존 자동 완성 스크립트가 있습니까? 직접 만들어 보려고 했는데 원하는 효과가 나오지 않더군요. 가능하다면 하위 디렉토리(예: )도 자동 완성하고 싶습니다 foo/baz/thing.c
.
감사해요!
답변1
내가 언급했듯이 어떤 명령에 대해서도 투명하게 이를 수행하는 쉬운 방법은 없다고 생각합니다.
래퍼 스크립트를 생성하고 이름을 지정 f
하여 다음을 수행할 수 있습니다.
f() {
local command=$1; shift
local files=() arg file
for arg in "$@"; do
file=$(some method to look up the current file in $CDPATH)
files+=("$file")
done
"$command" "${files[@]}"
}
f vim foo.c bar.h
물론 이는 옵션이나 파일 이름이 아닌 인수(즉, 실행을 허용하지 않음 grep -i pattern foo.c
)에 대해 알지 못하며 인수가 CDPATH 디렉터리에 없으면 어떻게 해야 하는지 고려해야 합니다.