답변:
명령 대체를 사용할 수 있습니다.
vim $(find -name somefile.txt)
또는
find -name somefile.txt -exec vim {} \;
vim `find -name somefile.txt`
. @StuartPowers 또는 vim `!-1`
이 찾기를 이미 사용한 경우 이전 명령 인 경우에도 사용할 수 있습니다.
명령을 다시 실행하지 않아도되는 경우 :을 누르고 명령을 Up추가하십시오 xargs
. 또는 역사 대체를 사용하고 실행하십시오.
!! | xargs vim # won't work with file names containing \'" or whitespace
!! | xargs -d \\n vim # GNU only (Linux, Cygwin)
ksh 및 zsh에서는 작동하지만 bash에서는 작동하지 않는 명령의 출력을 저장하는 간단한 방법이 있습니다 (파이프 라인의 출력 측을 상위 셸에서 실행해야 함). 파이프 함수에 명령 K
(이하 zsh을 정의), K는 변수의 출력을 eeps $K
.
function K {
K=("${(@f)$(tee /dev/fd/3)}") 3>&1;
}
find … |K
vim $K
쉘만으로는 각 명령의 출력을 자동으로 저장할 수 없으며, 에뮬레이트 터미널에서 명령을 실행해야합니다. 내부에서 실행 script
하면 (BSD 유틸리티이지만 Linux 및 Solaris를 포함한 대부분의 유니스에서 사용 가능) 파일을 통해 세션의 모든 출력을 저장합니다 (타입 스크립트에서 마지막 프롬프트를 안정적으로 감지하는 데 약간의 노력이 필요합니다 ).
나는 백틱을 사용하고 싶다`(그것과 같은 키에 ~)
> vim `find . -name somefile.txt`
백 틱은 틱 내부의 명령을 실행 한 다음 명령에서 출력을 사용할 수 있습니다. 위의 모든 파일 somefile.txt를 찾을 수 있으므로 모든 파일 :next
을 이동하는 데 사용할 수 있습니다.
히스토리 대체를 사용하여 편집기에 대한 명령을 반복 할 수 있기 때문에 명령 수정을 두 번 시도하면 매우 유용합니다.
> find . -name somefile.txt
./debug/somefile.txt
./somefile.txt
> vi `!!`
나는 pvim
당신이 원하는 것을 하는 함수 를 썼습니다 . 여러 줄을 파이프로 연결 pvim
하면 첫 번째 줄을 제외한 모든 줄을 무시하고 vim에서 여러 파일을 열어서 확장 할 수 있습니다.
stu@sente ~ $ function pvim() { read -r somefile; exec < /dev/fd/1; vim "$somefile"; }
stu@sente ~ $ type pvim
pvim is a function
pvim ()
{
read -r somefile;
exec < /dev/fd/1;
vi "$somefile"
}
다음과 같이 사용하십시오.
stu@sente ~ $ find . -name "foo.txt" | pvim
입력 한 것처럼 첫 번째 "foo.txt"를 vim에로드합니다.
vim $(find . -name "foo.txt | head -n1")