次のコマンドをtor
使用して設定ファイルを作成できます。cat <<EOF
cat <<EOF
SocksPort 9050
ControlPort 9150
DataDirectory /usr/var/lib/tor/torrc
EOF
>
ただし、ファイルにリダイレクトして出力を保存できます。その後、使用tor -f file
しかし、自分で養う方法は何ですかtor -f
?ファイルや一時ファイルを作成して削除したくありません。
- 私は次のようなものが欲しい
しかしそれは与えるtor -f < $(cat <<EOF ... ... EOF)
EOF): ambiguous redirect
- 直接リダイレクトしますか?
tor -f <<EOF... not worked
- そしてパイプラインはエラーを報告します。
ありがとう
ベストアンサー1
あなたが探しているものはプロセスの置き換えと呼ばれます。これはシェルの標準機能ではありませんが、Bash/ksh/zshでサポートされています。一例:
$ echo <(echo foo)
/dev/fd/63
$ cat <(echo foo)
foo
<(cmd)
シェルが出力を読み取れるように、ソートされたファイル名を拡張しますcmd
。 Linuxでは可能です/dev/fd/NN
が、システムとシェルに応じて名前付きパイプにすることもできます。
だから、あなたが使えると思います。
tor -f <(cat <<EOF
...
...
EOF
)
上記の場合は、リダイレクトを代わりにcat
使用できます。これはと同じ違いです。デフォルトではstdinを読み取るため、両方とも機能しますが、ツールにファイル名が必要な場合、リダイレクトは追加されません。cat < <(echo foo)
cat <(echo foo)
cat < somefile
cat somefile
cat
tor
とにかく、上記は少し複雑なので、途中で他のプロセスなしでちょうどhere-docを読むのが最善です。標準入力を読み取るだけです。
いくつかのユーティリティは、与えられたファイル名があればstdinから読み取るか、stdoutに書き込みます。-
ただし、サポートされていない場合(または)をtor
使用できるため、これが機能できるようです。/dev/stdin
/dev/stdout
tor -f /dev/stdin <<EOF
...
...
EOF
もちろん、他のためにstdinが必要ない限り。この場合、ここで説明されているように他のfdを使用できる必要があります。
tor -f /dev/fd/9 9<<EOF
...
...
EOF
(サポートシステムが必要ですが/dev/fd/NN
)