저는 유닉스를 처음 사용합니다. 우분투 터미널에 다음 명령을 입력했습니다.
pwd | echo
pwd
터미널()에서 출력이 나올 것으로 예상했지만 /home/fatemeh/Documents/Code/test
출력은 다음과 같습니다.빈 줄.
왜 이런 일이 발생합니까?
답변1
echo
표준 입력에 대해서는 어떤 작업도 수행하지 않으며 인수만 구문 분석합니다. 따라서 echo
실제로 빈 줄을 출력하고 표준 입력이 삭제되는 을 효과적으로 실행하고 있습니다 .
달성하려는 동작을 보려면 표준 입력을 구문 분석하도록 설계된 도구를 사용하십시오 cat
. 예를 들면 다음과 같습니다.
$ pwd | cat
/home/username
echo
이를 사용 하여 현재 작업 디렉터리(또는 다른 명령의 출력)를 표시 하려면 명령 대체를 사용하여 이 작업을 수행할 수 있습니다.
$ echo "Your shell is currently working in '$(pwd)'."
Your shell is currently working in '/home/username'.
답변2
다른 답변에서 언급했듯이 echo
표준 입력에서 읽지 않으므로 출력을 인쇄하지 않습니다 pwd
. 아직 모르는 경우를 대비해 pwd
출력을 직접 인쇄하여 단독으로 실행하여 원하는 결과를 얻을 수 있습니다.
$ pwd
/current/working/dir
실제로 echo를 사용하고 싶다면 다음을 사용할 수 있습니다.명령 대체. 이는 pwd
command()의 출력을 echo
인수로 전달합니다. 이 예제에서는 pwd
자체 출력을 표준 출력으로 출력하므로 이는 필요하지 않습니다 .
$ echo "$(pwd)"
/current/working/dir
답변3
이 echo
명령은 표준 입력에서 읽지 않지만 사용자가 쓰라고 지시한 내용을 씁니다. 이 경우 아무것도 쓰라고 지시하지 않았으므로 인쇄되는 것은 개행 문자뿐입니다. pwd | echo
그냥 실행하는 것과 같습니다 echo
.
파이프를 사용하려면 표준 입력(예: cat
)에서 읽는 일부 명령을 사용해야 합니다.
$ pwd | cat
/path/to/current/directory
$