Linux에서 아무 작업도 수행하지 않는 표준 가상 실행 파일이 있습니까? 매개변수를 수동으로 입력하기 위해 빌드 프로세스 전에 항상 $EDITOR를 여는 쉘 명령이 있습니다. 내 경우에는 매개변수가 항상 설정되어 있으므로(자동화된 스크립트임) 전혀 필요하지 않지만 여전히 팝업이 나타나 사용자 입력을 기다립니다.
이 문제를 해결하기 위해 아무 작업도 수행하지 않는 빈 실행 파일을 만들었으므로 설정 EDITOR=dummy
하고 빌드 스크립트가 이를 호출하면 종료되고 빌드 프로세스가 시작될 수 있습니다.
제 질문은 실행 시 아무 작업도 수행하지 않는 Linux의 기존 공식 문서, 즉 이 목적으로 사용할 수 있는 자리 표시자가 있습니까?입니다.
답변1
true
표준 유틸리티 가 있고 false
첫 번째 유틸리티는 아무것도 하지 않습니다.성공적인 실행을 나타내기 위해 종료 상태 0을 반환합니다., 두 번째 것은 아무것도 하지 않고 실패한 결과를 나타내는 0이 아닌 값을 반환합니다 (*) . 당신은 아마도 첫 번째 것을 원할 것입니다.
일부 텍스트(커밋 메시지 등)를 입력해야 하는 일부 시스템에서는 "편집된" 파일이 실제로 수정되었는지 확인하지만 true
이 경우 실행만으로는 작동하지 않습니다. 반대로 touch
작동할 수도 있습니다.매개변수로 얻은 모든 파일의 타임스탬프 업데이트.
그러나 편집기가 파일 이름 이외의 매개변수를 가져오면 touch
해당 매개변수는 파일로 생성됩니다. 많은 편집기에서는 첫 번째 줄에 커서를 놓아 편집기를 호출할 수 있도록 하는 매개 변수를 지원합니다. (예를 들어, 그렇지 않은 것 같습니다.)+NNN
$EDITOR +123 filename.txt
less
git
true
예를 들어 를 사용해야 합니다 /bin/true
. 첫째, 쉘이 포함된 경우 경로 없이 명령을 지정하면 쉘이 내장 구현을 사용할 수 있습니다. 그렇지 않은 경우 바이너리는 어쨌든 발견됩니다 PATH
. 둘째, 모든 시스템에 가 있는 것은 아닙니다 /bin/true
. 예를 들어 macOS에서는 /usr/bin/true
.
(* 또는 다음과 같이GNU 매뉴얼 페이지에는 다음과 같은 내용이 나와 있습니다., false "아무 것도 하지 않음, 실패함". @8bittree 감사합니다. )
답변2
셸에서는 내장 을 사용할 수 있습니다 :
. 실행 파일은 아니지만 셸 스크립트나 셸 스크립트에서 실행되는 모든 항목에서는 다음을 수행합니다.
$ help :
:: :
Null command.
No effect; the command does nothing.
Exit Status:
Always succeeds.
이는 while 문( )에 사용하는 것으로 가장 잘 알려져 있지만 while :; do break; done
이 용도에만 국한되지는 않습니다. 이 작업을 여러 번 수행해야 하는 경우 별도의 프로세스를 시작하지 않는 것이 더 빠릅니다.
$ time for i in $(seq 1000); do :; done
real 0m0,007s
user 0m0,002s
sys 0m0,004s
$ time for i in $(seq 1000); do /bin/true; done
real 0m0,686s
user 0m0,462s
sys 0m0,217s
답변3
명령 사용에 대한 @ilkkachu의 제안이 true
아마도 최선의 대답일 것입니다. 그러나 명령을 사용할 수도 있습니다
sleep 0
답변4
/bin/true
true
어떤 작업도 성공적으로 수행되지 않았습니다.
false
아무것도 안하려고 했는데 실패했습니다.
/bin/true
이는 및 에서 구현됩니다 /bin/false
.
하지만 때로는 아무것도 하지 않는 것이 좋을 때도 있기 때문에 내장 쉘도 있습니다 true
. 때로는 아무것도 하지 않고 빠르게 실패하고 싶을 때가 있으므로 내장 쉘이 있습니다 false
.
성공과 실패의 차이는 종료 상태입니다 $?
. 이것은 0
실패가 아니라 성공에 관한 것입니다. 종료 상태는 단순히 실패를 나타내는 데 사용되지만 무엇이 잘못되었는지 자세히 설명하는 1
오류 코드일 수도 있습니다 .254
$ true
$ echo $?
0
$ false
$ echo $?
1
$ false
$ echo $?
1
$ echo $?
0
이전 항목이 성공했기 때문에 마지막 항목이 어떻게 echo
반환되는지 확인하세요.0
echo
&&
종료 상태는 "and"( ) 및 "or"( ||
) 와 같은 논리 연산자와 함께 사용됩니다 .
$ true && echo "success"
success
$ false && echo "failure"
$ true || echo "success"
$ false || echo "failure"
failure
이후에는 false && echo "failure"
아무것도 true || echo "success"
인쇄되지 않습니다.