저는 새로운 Linux 사용자이고 몇 가지 실험을 하며 이해하려고 노력 중입니다.프로세스 교체. 나는 이것에 대한 기본적인 이해를 가지고 있다고 믿습니다. 그런데 이유를 알 수 없는 경우가 있습니다. Ubuntu 20.04에서 Bash를 사용하고 있습니다.
echo hi
hi
개행 문자가 포함된 문자열을 표준 출력으로 보냅니다 .
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를 누르면 명령어가 실행됩니다.