だから、ファイル記述子とそのリダイレクトについてもっと知りたいです。現在、私は極端なケースを調査していますが、そこで1>&0
何が起こっているのかよく理解していません。
$ echo hello 1>&0
hello
したがって、この場合、hello
stdoutをstdinにリダイレクトしても印刷されます。私は何も印刷されるとは思わない。
hello
印刷したい理由を説明してください。
答え1
記述子0
と1
両方が読み取り+書き込みモードで端末に接続されているため、このリダイレクトは何も変更しません。 Linuxでは、/proc/self/fd
以下のような現在の記述子をすべて見つけることができます。
$ ls -l /proc/self/fd
lrwx------ 1 jimmij jimmij 64 Jan 3 17:42 0 -> /dev/pts/2
lrwx------ 1 jimmij jimmij 64 Jan 3 17:42 1 -> /dev/pts/2
lrwx------ 1 jimmij jimmij 64 Jan 3 17:42 2 -> /dev/pts/2
lr-x------ 1 jimmij jimmij 64 Jan 3 17:42 3 -> /proc/5263/fd
ご覧のとおり、すべてが0
疑似端末に接続されています。1
2
/dev/pts/2