나는 이것을 알려주는 일부 명령이나 환경 변수를 기억하는 것 같습니다. 예를 들어, 저는 기본적으로 터미널에서 무언가를 실행하고 싶습니다.
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