bash '<(파일 내용)'의 구문은 무엇입니까?

bash '<(파일 내용)'의 구문은 무엇입니까?

이것보안 StackExchange에 대한 답변흥미로운 bash 구문을 사용하여 인라인 파일을 생성하세요.

openssl req -new -x509 -nodes -newkey ec:<(openssl ecparam -name secp384r1) -keyout cert.key -out cert.crt -days 3650

특히 흥미로운 점은 다음과 같습니다.

<(openssl ecparam -name secp384r1)

그냥 실행하세요:

echo <(openssl ecparam -name secp384r1)

나는 돌아왔다/dev/fd/63

따라서 이는 파일 내용으로 임시 파일 설명자를 생성하는 것 같습니다.

이건 뭐라고 부르나요?

답변1

그것은 알려져있다프로세스 교체그리고 bash, zsh 및 ksh의 기능입니다(다른 기능도 있을지 모르겠습니다). POSIX가 아니며 이식 가능한 코드에서 사용하면 안 되지만 매우 유용합니다.

bash 매뉴얼의 관련 부분은 다음과 같습니다.

3.5.6 프로세스 교체

프로세스 대체는 명명된 파이프(FIFO) 또는 /dev/fd 명명된 파일 열기 방법을 지원하는 시스템에서 지원됩니다. 형태를 취합니다

  <(list) 

또는

  >(list) 

프로세스 목록의 입력 또는 출력은 FIFO 또는 /dev/fd의 파일에 연결됩니다. 파일 이름은 확장 결과로 현재 명령에 인수로 전달됩니다. >(목록) 형식을 사용하는 경우 파일에 쓰면 목록에 대한 입력이 제공됩니다. <(목록) 형식을 사용하는 경우 목록의 출력을 얻으려면 인수로 전달된 파일을 읽어야 합니다. < 또는 >와 여는 대괄호 사이에는 공백이 있어서는 안 됩니다. 그렇지 않으면 구문이 리디렉션으로 해석됩니다.

가능한 경우 프로세스 대체는 매개변수 및 변수 확장, 명령 대체 및 산술 확장과 동시에 수행됩니다.

관련 정보