내 말은 1-liner에서 이 작업을 수행한다는 것입니다.
ubu@ubuntu:~$ locate filename.sh
/home/ubu/path/to/filename.sh
ubu@ubuntu:~$ gedit /home/ubu/path/to/filename.sh
그렇게 하는 데 적합한 배관을 찾을 수 없는 것 같습니다.
답변1
간단하지만 제한적인 솔루션
filename.sh
시스템에 이름이 지정된 파일만 있는 경우 작동할 가능성이 높습니다.
gedit "$(locate filename.sh)"
또는 Hennes가 지적했듯이 파일 이름이 PATH에 있는 경우:
gedit "$(which filename.sh)"
이 두 가지 모두에는 또 다른 문제가 있습니다. 쉘은 명령 대체에서 후행 줄 바꿈을 제거합니다 $(...)
. 따라서 파일 이름이 줄 바꿈으로 끝나는 병리학적 경우에는 실패합니다.
일반 솔루션
이러한 문제를 방지하려면 다음을 시도해 보세요.
locate -0 "filename.sh" | xargs --null gedit
gedit
그러면 발견된 각 파일에 대한 탭이 열립니다 .
이 -0
옵션은 locate
null로 구분된 파일 이름 목록을 반환하도록 지시합니다. 옵션은 입력을 null로 구분된 목록으로 해석하도록 --null
지시합니다 . xargs
결과적으로 이것은 줄 바꿈이나 기타 어려운 문자가 포함된 파일 이름에 작동합니다.
편의를 위해 셸 함수를 만들 수 있습니다.
lge() { locate -0 "$@" | xargs --null gedit; }
그리고 다음과 같이 사용하세요:lge filename.sh
함수 정의를 영구적으로 만들려면 ~/.bashrc
.