Bash は外部バイナリなしで /dev/tcp から読み込みます。

Bash は外部バイナリなしで /dev/tcp から読み込みます。

Bash TCPソケットを使用してファイルを読み込もうとしています。

だから私はホストコンピュータにいます。

nc -l 8888 < /etc/passwd

他のコンピュータでは

echo </dev/tcp/127.0.0.1/8888

しかし、期待どおりにファイルを読み取ることができず、空白行が表示されます。

動作することはわかりますが、cat < /dev/tcp/xxx/xxxx外部バイナリなしで行うことはできますか?

編集する

$()だから構文を試してみました。

# echo $(</dev/tcp/127.0.0.1/8888) > file
bash: /dev/tcp/127.0.0.1/8888: No such file or directory

答え1

whileループを使用できます。

while IFS= read -r line; do
    printf '%s\n' "$line"
done < /dev/tcp/localhost/8888

関連情報