cat
入力がファイル文字列かどうかに応じて、2つの異なる動作があります。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/')