미리 말하자면: 대화형 프롬프트가 있는 대부분의 프로그램에는 일종의 초기화 파일이나 무언가를 실행하는 명령 플래그를 설정하는 기능이 있다는 것을 알고 있습니다.그 다음에대화형 프롬프트로 이동합니다. 그러나 저는 쉘 수준 솔루션에 관심이 있습니다.
xyz
터미널을 대신하여 개행으로 끝나는 명령을 실행할 수 있는 대화형 프롬프트를 제공하는 셸에서 실행하는 명령이 있다고 가정해 보겠습니다 .
대화형 세션이 시작될 때마다 실행하려는 두 개의 명령(두 줄)이 있다고 가정해 보겠습니다 xyz
.
이 두 줄이면오직실행하려는 명령은 물론 다음과 같이 실행할 수 있습니다.
printf '%s\n' 'first command' 'second command' | xyz
또는 실행할 명령이 많지만 미리 모두 알고 있는 경우 해당 명령을 모두 파일에 넣고 다음을 실행할 수 있습니다.
xyz < commands-file.txt
그러나 만일xyz
내가 입력한 후 수동으로 입력한 결과에 대한 표준 대화형 프롬프트를 얻고 싶습니다 first command
.second command
...리디렉션을 사용하여 쉘(예: 쉘 함수)에서 이 작업을 수행할 수 있는 방법이 있습니까?
입력이 터미널에서 나오지 않거나 출력이 버퍼링되어 어느 것이 확실하지 않기 때문에 명백한 솔루션은 sed -e '1ifirst command' -e '1isecond command' | xyz
작동하지 않습니다 .xyz
sed