私はこれを知らせるいくつかのコマンドや環境変数を覚えているようです。たとえば、私は基本的に端末で何かを実行したいと思います。
echo $STDIN
/dev/tty
echo $STDOUT
/dev/tty
fdescribe 0 or fdescribe /dev/stdin
/dev/tty
fdescribe 1 or fdescribe /dev/stdout
/dev/tty
ただし、スクリプトまたはサブプロセスで実行できます。
答え1
さて、定義によると、fd 0はstdinに関連付けられ、fd 1はstdoutに関連付けられます。
何か知りたいなら文書(Bourneのような、またはcshのような)シェルでこれらのfdを開くには、次のようにします。
lsof -ap "$$" -d 0-1
LinuxまたはCygwinでは、以下も参照してください。
realpath /dev/stdin /dev/stdout
出力はソケットやパイプですが、ほとんど使用されません。
もう一度Linuxでtoを追加すると、-E
特定のlsof
種類のファイル(パイプ、疑似tty、または特定のソケットなど)にもう一方の端にあるもの(ある場合)に関する追加情報を提供できます。
最新バージョンには、次の情報を提供するユーティリティ(Linuxのみ)util-linux
もあります。lsfd
lsof
lsfd -p "$$" -Q '(fd == 0) or (fd == 1)'
または
lsfd -p "$$" -Q 'assoc =~ "^[01]$"'
¹rcに似たシェルでは、andの$pid
代わりに次のものを使用してください。$$
fish
$fish_pid