이후 EOF를 발생시키지 않고 프로세스의 표준에 데이터를 파이핑 세션을 갖기를 원합니다. 나는

사용자 대화 형 셸을 시작하는 실행 파일이 있습니다. 셸을 시작할 때 몇 가지 명령을 먼저 주입 한 다음 사용자가 대화식 세션을 갖기를 원합니다. 나는 이것을 사용하여 쉽게 할 수있다 echo:

echo "command 1\ncommand 2\ncommand3" | ./shell_executable

이것은 거의 작동합니다. 문제는 프로세스의 stdin을 공급하는 echo 명령이 명령을 반향하면 EOF에 도달한다는 것입니다. 이 EOF는 쉘에서 Ctrl + D를 누른 것처럼 쉘을 즉시 종료시킵니다.

나중에 EOF를 발생시키지 않고 이러한 명령을 stdin에 주입하는 방법이 있습니까?



답변

stackoverflow 에서 비슷한 질문 에서이 영리한 답변을 찾았습니다.

(echo -e "cmd 1\ncmd 2" && cat) | ./shell_executable

이것은 트릭을 수행합니다. shell_ executable의 입력 스트림으로 cat출력을 펌핑하고 echoEOF까지 더 많은 입력을 기다립니다.


답변

이 작업을 수행하는 가장 깨끗한 방법은 bash--rcfile옵션 과 같은 것을 찾는 것입니다 . 사용자 정의 명령을 사용자 정의 파일에 넣고 대화식 쉘로 전달하여 시작시 실행하십시오.

이러한 옵션이 없으면 다음을 시도해보십시오.

cat custom_commands_file - | ./shell_executable

cat-stdin으로 해석 됩니다.