"표준 출력" 및 "표준 오류"에 인쇄

"표준 출력" 및 "표준 오류"에 인쇄

과제에 사용된 몇 가지 용어가 혼동스럽습니다.

그래서 제가 문제를 이해하는 방법은 print 등을 해야 한다는 것입니다. echo그리고 cat이 작업을 수행하기 위해 명령을 사용하고 싶습니다 echo.

echo echo
echo cat 
echo ´!!´

이것이 "표준 출력으로 인쇄"한다는 의미입니까? 나는 올바른 길을 가고 있습니까?

그렇다면 "명령을 입력할 때 표준 오류에 아무것도 인쇄되지 않습니다"라는 것이 무엇을 의미하는지 모르겠습니다.

답변1

나는 당신이 단어를 출력해야 하기 때문에 이 과제를 해석해야 한다고 생각합니다.블로츠echo, cat, 및 각 명령을 순서대로 사용 ls하십시오 grep.!!

echo blotz물론 그것은 작은 것들이다.

cat명령은 파일의 내용을 출력하는 것으로 생각할 수 있습니다. (man cat여기서 도움이 될 수 있습니다. ) 작업을 통해 출력할 파일을 미리 준비할 수 있으므로 이는 매우 간단합니다.

다른 것들은 필요한 결과를 얻기 위해 약간의 생각이 필요합니다.

답변2

질문은 명령 목록의 각 명령을 사용하고 해당 명령이 문자열 blotz만 인쇄하도록 하라는 내용입니다. 선생님이 각 줄 뒤에 줄 바꿈을 인쇄하고 싶다면 blotz(질문에서 명확하지 않음) 다음과 같이 할 수 있습니다.

$ echo "blotz"
blotz
$ echo "blotz" > file && cat file
blotz
$ touch blotz && ls blotz
blotz
$ echo blotz | grep b  ## This might also include (invisible) color codes
blotz
$ echo blotz | grep --color=never b ## This one avoids the color codes
blotz

!!기본적으로 실행 명령도 인쇄하므로 사용하기가 더 까다롭습니다. 예를 들어:

$ blotz      ## run blotz to get that saved as !!
blotz: command not found
$ echo !!  ## print the value of !!
echo blotz ## Unfortunately, this also prints the command being run. 
blotz

이 문제를 해결하려면 다음과 같은 작은 스크립트를 작성할 수 있습니다.

set -o histexpand
set -o history

blotz
echo !!

그런 다음 다음과 같이 실행하십시오.

$ bash foo.sh 2> /dev/null 
blotz

서브쉘을 사용하는 영리한 방법이 있을 수 있지만 아직 찾지 못했습니다.


선생님이 줄 바꿈을 요구하지 않는 경우 다음을 사용하세요.

$ echo -n "blotz"
$ echo -n "blotz" > file && cat file
$ touch blotz && ls blotz | tr -d $'\n'
$ echo blotz | grep --color=never b | tr -d $'\n'

!!스크립트 의 경우 :

$ bash foo.sh 2> /dev/null | tr -d $'\n'

관련 정보