
cat
入力がファイルの文字列であるかどうかに応じて、2 つの異なる動作があります。 ファイルを PDF ビューア (Zathura) にパイプするために使用する必要がありますcat
。ファイル名は、次のように変更された文字列に基づいていますsed
。
cat <(echo test.tex | sed 's/[^.]*$/pdf/') | zathura -
test.tex
このワンライナーでファイル名の文字列を に変換し、それを Zathura にパイプして対応するファイルを開くようにします。上記のコマンド ラインは、入力がファイルではなく文字列として解釈されるtest.pdf
ため機能しません。cat
明らかに、
echo test.tex | sed 's/[^.]*$/pdf/') | zathura
が動作しないので、 をいじってみることにしましたcat
。
答え1
つまり、次のことではありませんか:
cat $(echo test.tex | sed 's/[^.]*$/pdf/') | zathura -
そのため、結果はstdin ではなく へ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/')