이전 명령을 처리하는 동안 터미널에서 입력을 어떻게 받아들이나요?

이전 명령을 처리하는 동안 터미널에서 입력을 어떻게 받아들이나요?

저는 개인 노트북과 학교 컴퓨터 모두에서 Ubuntu Linux를 사용합니다. 내 개인 노트북에서 터미널이 이전 명령을 처리하는 동안 사용자 입력을 받아들이는 학교 컴퓨터의 동작을 복제하고 싶습니다. 예를 들어 실행 시 첫 번째 명령이 처리되는 동안 입력 git commit -m "a commit message"할 수 있기를 원합니다 . git push사용자 입력에 대한 원시 및 표준 패턴을 조사했지만 작동 방식이나 구현 방법을 잘 파악하지 못했습니다.

답변1

첫 번째 명령이 실행되는 동안 입력된 내용은 다음 명령으로 버퍼링됩니다.

첫 번째 명령이 표준 입력에서 읽는 경우는 예외입니다. 표준 입력이 먼저 입력을 읽기 때문입니다. 첫 번째 명령의 표준 입력을 리디렉션하여 이를 방지할 수 있습니다.

command1 < /dev/null
command2

나는 이것이 당신의 예제 명령에서 일어나서는 안된다고 생각합니다. git commit일반적으로 커밋 메시지를 묻는 메시지가 표시되지만 이 -m옵션을 사용하면 이를 방지할 수 있습니다. 하지만 시도해 보는 것도 나쁘지 않습니다.

답변2

내 생각에 터미널은 다른 터미널을 실행할 때 항상 추가 입력을 허용한다고 생각합니다(터미널을 사용하는 프로그램을 실행하지 않는 한). 귀하의 예에서는 입력을 허용하지만 git commit완료되었을 때만 실행합니다.

추신: 내 컴퓨터에서 git push실행 중일 때 cd ..( git commit테스트하기에는 너무 빨랐음) 작동해 보았습니다.

답변3

세미콜론을 사용하세요:

git commit -m "foo" ; git push

이는 메시지를 커밋한 다음 커밋의 성공 여부에 관계없이 푸시합니다.

또는 커밋이 성공한 경우에만 푸시하려면 다음 연결된 명령을 사용하세요 &&.

git commit -m "foo" && git push

관련 정보