foo -in /path/to/infile -out /path/to/outfile
一時ファイルを使用する代わりに、文字列を渡したいこのようなコマンドを検討してください。多くの場合、多くのディスクアクセスが発生したり、暗号化に関連して機密データをディスクに書き込む(または暗号化および/またはRAMディスクなどを処理したくない)場合があります。
できる方法はありますか?標準入力そして出力を得なさい標準出力、
まるでecho "abc" | foo -in &0 -out &1
?
データをリダイレクトできるファイル記述子があることがわかります(たとえば、文字列をパラメータとして渡すことができるものなどecho "foo" 1>&2
)。xargs
しかし、標準のファイル記述子をファイルパスに渡す方法はありますか? stdin / outをファイルに読み書きできますが、なぜ「仮想」ファイルパスを取得できないのですか?
ベストアンサー1
/dev/stdin
特殊ファイルを使用したり、/dev/fd/0
stdinおよび/dev/stdout
/または/dev/fd/1
stdoutに使用できます。
あなたの例では:
echo "abc" | foo -in /dev/fd/0 -out /dev/fd/1
これらの特殊ファイルの可用性は、使用しているオペレーティングシステムによって異なりますが、Linux(およびほとんどのLinuxディストリビューション)ではそのファイルの検索または使用に問題はありません。
これらのファイルは、そのいずれかに書き込んでもデータがディスクに書き込まれないという点で「仮想」です。これらの特殊ファイルの1つを開くことは、次のものを呼び出すのと同じです。繰り返し(2)既存のファイル記述子を新しいファイル記述子にコピーするシステムコール。