과제에 사용된 몇 가지 용어가 혼동스럽습니다.
그래서 제가 문제를 이해하는 방법은 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'