이 명령을 완료하려면 왜 입력하고 Enter를 눌러야 합니까? [복사]

이 명령을 완료하려면 왜 입력하고 Enter를 눌러야 합니까? [복사]

저는 새로운 Linux 사용자이고 몇 가지 실험을 하며 이해하려고 노력 중입니다.프로세스 교체. 나는 이것에 대한 기본적인 이해를 가지고 있다고 믿습니다. 그런데 이유를 알 수 없는 경우가 있습니다. Ubuntu 20.04에서 Bash를 사용하고 있습니다.

echo hihi개행 문자가 포함된 문자열을 표준 출력으로 보냅니다 .

root@u2004:~# echo hi | od -a
0000000   h   i  nl
0000003
root@u2004:~#

cat파이프에서 표준 입력을 읽고 읽은 내용을 파이프로 보낼 수 있습니다.

root@u2004:~# echo hi | cat
hi
root@u2004:~# echo hi | cat | od -a
0000000   h   i  nl
0000003
root@u2004:~#

내가 이해한 바에 따르면 명령은 표준 입력에서도 읽혀 echo hi > >(cat)지고 cat콘솔에 인쇄됩니다. 그러나 실행하면 다음과 같은 결과가 나타납니다.

root@u2004:~# echo hi > >(cat)
root@u2004:~# hi
<the cursor blinks at this location>

Enter명령을 완료하려면 키를 눌러야 합니다 .

root@u2004:~# echo hi >>(고양이)
root@u2004:~#안녕하세요
Enter
루트@u2004:~#

왜 이런 문제가 발생합니까? 명령을 echo hi > >(cat)올바르게 이해하고 있습니까?

답변1

문제 없이 명령이 성공적으로 완료되었습니다.

당신은 무엇을 볼 수 있습니까?

root@u2004:~# echo hi > >(cat)
root@u2004:~# hi
<the cursor blinks at this location>

명령을 입력하고 을 클릭했습니다 Enter. 쉘이 프롬프트를 출력한 후 cat비동기적으로 시작된 프로세스가 완료되고 출력됩니다 hi\n.

빈 줄에서 깜박이는 커서는 이전 줄의 프롬프트에 속하지만 echo명령의 개행 문자로 인해 디스플레이가 엉망이 됩니다.

다음에 "Enter 키를 누르세요"를 누르면 새로운 메시지가 표시됩니다. 명령어를 입력하고 Enter를 누르면 명령어가 실행됩니다.

관련 정보