때로는 텍스트를 작성한 다음 해당 텍스트를 다른 명령으로 파이프해야합니다. 내 평소 작업 과정은 다음과 같습니다.
vim
# I edit and save my file as file.txt
cat file.txt | pandoc -o file.pdf # pandoc is an example
rm file.txt
나는이 성가신 것을 발견하고 bash 스크립팅을 배우려고 노력하고 편집기를 여는 명령을 작성하여 편집기를 닫을 때 편집기의 출력을 stdout으로 파이프 처리하여 프로세스를 훨씬 간단하게 만들고 싶습니다. 그런 다음로 명령을 실행할 수 있습니다 quickedit | pandoc -o file.pdf
.
이것이 어떻게 작동하는지 잘 모르겠습니다. 위의 정확한 워크 플로우와 몇 가지 추가 사항을 수행하여이를 자동화하는 기능을 이미 작성했습니다. 파일 이름으로 작동하는 임의의 문자열을 생성하고 함수가 호출 될 때 vim에 전달합니다. 사용자가 파일을 저장하여 vim을 종료하면이 기능은 파일을 콘솔에 인쇄 한 다음 파일을 삭제합니다.
function quickedit {
filename="$(cat /dev/urandom | env LC_CTYPE=C tr -cd 'a-f0-9' | head -c 32)"
vim $filename
cat $filename
rm $filename
}
# The problem:
# => Vim: Warning: Output is not to a terminal
내가 만난 문제는 quickedit | command
vim 과 같은 것을 할 때 모든 출력이 파이프에 제한되어 있기 때문에 편집기로 사용할 수 없다는 것입니다.
이에 대한 해결 방법이 있는지 궁금해서 quickedit
함수 의 출력을 파이프 할 수 있습니다. 차선책은 별도의 편집기를 실행하는 것입니다. 예를 들어 숭고한 텍스트이지만 터미널에 머물고 싶습니다.
:w !pandoc -o file.pdf
? (사이의 공간을 참고w
하고!
필수적이다.)