편집기에 인수로 찾기 출력 전달

편집기에 인수로 찾기 출력 전달

내 말은 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옵션은 locatenull로 구분된 파일 이름 목록을 반환하도록 지시합니다. 옵션은 입력을 null로 구분된 목록으로 해석하도록 --null지시합니다 . xargs결과적으로 이것은 줄 바꿈이나 기타 어려운 문자가 포함된 파일 이름에 작동합니다.

편의를 위해 셸 함수를 만들 수 있습니다.

lge() { locate -0 "$@" | xargs --null gedit; }

그리고 다음과 같이 사용하세요:lge filename.sh

함수 정의를 영구적으로 만들려면 ~/.bashrc.

관련 정보