답변:
"출력에서이 명령을 에코하지 마십시오"를 의미합니다. 따라서이 규칙은 "쉘 명령을 실행 :
하고 출력을 에코하지 않습니다 "라고 말합니다 .
물론 쉘 명령 :
은 작동하지 않기 때문에 "아무것도하지 말고 말하지 마라"라고 말하는 것입니다.
왜?
여기서 중요한 것은 두 가지 다른 구문을 모호하게 조합 한 것입니다. 메이크업 (1) 구문 명령을 에코하지 단순히 @로 시작 동작의 사용이다. 그래서 같은 규칙
always:
@echo this always happens
방출하지 않습니다
echo this always happens
this always happens
이제 규칙의 작업 부분은을 포함한 모든 셸 명령이 될 수 있습니다 :
. Bash 도움말은 이뿐 만 아니라 어디서나 설명합니다.
$ help :
:: :
Null command.
No effect; the command does nothing.
Exit Status:
Always succeeds.
@:
()뿐만 아니라 @
@guestolio의 답변 외에도 특별히 언급하면 개발에서 남은 스텁이 될 수 있습니다. 파이썬 만 포함하는 함수를 작성하는 것과 같습니다 pass
. 복사 / 붙여 넣기를 위해 코드 블록을 스터 빙하는 데 유용 할 수 있지만 일반적으로 오랫동안 존재하지 않아야합니다. 등의 파일이 여전히 컴파일 것이다 이런 식으로, 패스 linting, 스텁 때
왜 이런 일을하는지 궁금해하는 사람들에게, 마치 무언가가 행한 것처럼 만들어서 Make가 대상에 대해 "Nothing to be done"을 출력하지 않도록하는 것이 유용합니다.
예를 들어 항상 실행하는 가짜 대상이 있고 명령에 여러 조건이 있습니다. 그러한 조건이 잘못되어 아무 일도 일어나지 않을 경우를 대비하여 최소한 무언가를 갖고 싶을 것입니다.
예를 들어 (Linux의 스크립트 /Makefile.clean에서) :
__clean: $(subdir-ymn)
ifneq ($(strip $(__clean-files)),)
+$(call cmd,clean)
endif
ifneq ($(strip $(__clean-dirs)),)
+$(call cmd,cleandir)
endif
ifneq ($(strip $(clean-rule)),)
+$(clean-rule)
endif
@: