저는 Windows에서 git bash를 사용하고 있으며 파이프 이후에 터미널이 추가 입력(예기치 않은 입력)을 요청하지 않도록 하는 방법을 알고 싶습니다. 이런 식으로 파이프 명령을 입력하는 것이 드문 일이라는 것을 알고 있지만 bash 스타일 터미널이 수행할 수 있는 작업 중 일부를 에뮬레이트하려고 합니다.
예를 들어 내 입력은 다음과 같습니다.
zecuse MINGW64 ~/source/repos/Sim
$ echo test |
> echo here| (pipe typed by accident)
> (enter key was pressed)
> (the caret is sitting here waiting for another command)
첫 번째 에코를 리디렉션하지 않으므로 해당 명령 체인의 출력을 here
터미널에 입력하면 됩니다. 그러나 입력 수락 및 명령 실행을 중지하려면 예기치 않은 파이프 이후에 무엇을 입력해야 할지 모르겠습니다.
나는 ;
, ctrl+c
및 을 시도했습니다 ctrl+d
.
;
=bash: syntax error near unexpected token ';'
ctrl+c
= 아무 일도 일어나지 않도록 명령을 종료합니다. 나는 이런 일이 일어날 수 있다고 생각했습니다.ctrl+d
=bash: syntax error: unexpected end of file
이에 대해 작동하지 않는 키보드 단축키나 "빈" 명령이 있습니까?
고쳐 쓰다
@Jesse_b의 답변에서 나온 제안은 :
훌륭하게 작동했으며 I/O 리디렉션을 찾은 후 모든 것이 예상대로 터미널에 표시되도록 할 수 있었습니다. 프로젝트에 대한 컨텍스트를 얻기 위해 문자열에 echo를 쓰고 무슨 일이 일어나고 있는지 테스트하는 방법으로 git bash를 사용하고 있습니다.
$ echo test >&0 |
> echo here >&2|
> :
생산하다
test
here
답변1
IMO의 "올바른" 방법은 ctrl+를 누르고 c명령을 다시 실행하는 것이지만, 발견한 대로 이로 인해 출력이 종료됩니다.
또한 다음과 같은 몇 가지 작업을 수행할 수 있습니다.
:
이는 본질적으로 "아무 것도 하지 않는" 명령이며 0으로 종료됩니다. 이렇게 하면 파이프라인이 종료되지만 명령의 출력은 생성되지 않습니다 echo here
.
true
no 명령을 실행하는 것과 유사하게 0으로 종료되어 파이프가 효과적으로 종료됩니다. 및 와
false
마찬가지로 0 대신 1로 종료된다는 점만 제외하면 파이프가 종료됩니다.:
true
문제는 이전 명령의 출력이 다음 명령의 표준 입력으로 "파이프"된다는 것입니다. 사용자가 제공한 명령이 입력에 아무런 영향을 주지 않으면 출력이 나오지 않습니다.
문제에 대한 해결책(그러나 일반적인 문제에 대한 포괄적인 해결책으로 간주되어서는 안 됨)은 를 사용하는 것입니다 cat
.
$ echo test |
> echo here |
> cat
here