cat이 입력을 파일(문자열 아님)로 해석하도록 합니다.

cat이 입력을 파일(문자열 아님)로 해석하도록 합니다.

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/')

관련 정보