파이프된 pwd 및 echo가 작동하지 않는 이유는 무엇입니까? [복사]

파이프된 pwd 및 echo가 작동하지 않는 이유는 무엇입니까? [복사]

저는 유닉스를 처음 사용합니다. 우분투 터미널에 다음 명령을 입력했습니다.

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를 사용하고 싶다면 다음을 사용할 수 있습니다.명령 대체. 이는 pwdcommand()의 출력을 echo인수로 전달합니다. 이 예제에서는 pwd자체 출력을 표준 출력으로 출력하므로 이는 필요하지 않습니다 .

$ echo "$(pwd)"
/current/working/dir

답변3

echo명령은 표준 입력에서 읽지 않지만 사용자가 쓰라고 지시한 내용을 씁니다. 이 경우 아무것도 쓰라고 지시하지 않았으므로 인쇄되는 것은 개행 문자뿐입니다. pwd | echo그냥 실행하는 것과 같습니다 echo.

파이프를 사용하려면 표준 입력(예: cat)에서 읽는 일부 명령을 사용해야 합니다.

$ pwd | cat
/path/to/current/directory
$ 

관련 정보