%EB%A1%9C%20%ED%95%B4%EC%84%9D%ED%95%98%EB%8F%84%EB%A1%9D%20%ED%95%A9%EB%8B%88%EB%8B%A4..png)
cat
입력이 파일 문자열인지 여부에 따라 두 가지 다른 동작이 있습니다. cat
내 PDF 뷰어(Zathura)로 파일을 파이프하는 데 사용해야 합니다 . 파일 이름은 sed
다음과 같이 수정된 문자열을 기반으로 합니다.
cat <(echo test.tex | sed 's/[^.]*$/pdf/') | zathura -
test.tex
나는 이 하나의 라이너가 파일 이름 문자열을 다음으로 변환 test.pdf
하고 이를 Zathura로 파이프하여 해당 파일을 열도록 하고 싶습니다. 위의 명령줄은 cat
입력이 파일이 아닌 문자열로 해석되기 때문에 작동하지 않습니다 .
확실히,
echo test.tex | sed 's/[^.]*$/pdf/') | zathura
작동하지 않아서 cat
.
답변1
다음을 말하는 것이 아닌가요?
cat $(echo test.tex | sed 's/[^.]*$/pdf/') | zathura -
따라서 귀하의 결과 는 표준 입력 이 아닌 인수 sed
입니다 .cat
다음을 사용할 수도 있습니다.
cat $(basename $file .tex).pdf | zathura -
또는
cat ${file%.*}.pdf | zathura -
답변2
STDIN
자동 문서 업데이트나 SyncTeX와 같은 기능을 제공하는 문서 뷰어를 통해 파일을 열지 않는 것이 좋습니다 . 그렇게 하면 열린 파일이 원본 파일의 복사본이 되므로 원본 파일과 소프트웨어 간의 링크가 끊어집니다. 표시된 파일은 실제로 /tmp/zathura.stdin
. 이로 인해 보안 문제가 발생할 수 있으며 LaTeX 소스 파일을 다시 컴파일할 때 소프트웨어의 디스플레이가 업데이트되지 않습니다.
cat
그렇다면 다음과 같이 파일 이름을 인수로 간단히 전달할 수 있는데 굳이 고민할 이유가 없습니다 .
zathura $(basename file.tex .tex).pdf
또는 사용sed
zathura $(echo file.tex | sed 's/[^.]*$/pdf/')