명령에는 파일 경로가 필요합니다. stdin "infile" 및 stdout "outfile"을 어떻게 제공할 수 있나요?

명령에는 파일 경로가 필요합니다. stdin "infile" 및 stdout "outfile"을 어떻게 제공할 수 있나요?

foo -in /path/to/infile -out /path/to/outfile임시 파일을 사용하는 대신 문자열을 전달하려는 이와 같은 명령을 고려하십시오 . 많이 호출되어 많은 디스크 액세스가 발생하거나 암호화와 관련되어 민감한 데이터를 디스크에 기록(또는 암호화 및/또는 RAM 디스크 등을 처리)하고 싶지 않을 수 있습니다.

줄 수 있는 방법이 있나요?표준 입력그리고 출력을 얻으십시오표준 출력,
마치 echo "abc" | foo -in &0 -out &1?

데이터를 리디렉션할 수 있는 파일 설명자가 있다는 것을 알고 있습니다(예 : 문자열을 매개변수로 전달할 수 있는 echo "foo" 1>&2것과 같은 것 ). xargs하지만 표준 파일 설명자를 파일 경로로 전달하는 방법이 있습니까? stdin/out을 파일로 읽고 쓸 수 있는데 왜 "가상" 파일 경로를 얻을 수 없습니까?

답변1

/dev/stdin특수 파일을 사용 하거나 /dev/fd/0stdin 및 /dev/stdout/또는 /dev/fd/1stdout에 사용할 수 있습니다 .

귀하의 예에서 :

echo "abc" | foo -in /dev/fd/0 -out /dev/fd/1

이러한 특수 파일의 가용성은 사용 중인 운영 체제에 따라 다르지만 Linux(및 대부분의 Linux 배포판)에서는 해당 파일을 찾거나 사용하는 데 문제가 없습니다.

이러한 파일은 그 중 하나에 기록해도 데이터가 디스크에 기록되지 않는다는 점에서 "가상"입니다. 이러한 특수 파일 중 하나를 여는 것은 다음을 호출하는 것과 같습니다.반복(2)기존 파일 설명자를 새 파일 설명자로 복사하는 시스템 호출입니다.

관련 정보