맨위로가기

True와 false

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

`true`와 `false`는 셸 스크립트에서 사용되는 명령어이다. `true`는 항상 성공(0)을 반환하며 무한 루프를 만드는 데 사용되고, `false`는 항상 실패(1)를 반환하여 명령 실행 실패를 의도적으로 발생시킬 때 사용된다. 이 명령어들은 조건문과 루프 내에서, 또는 다른 명령어의 성공/실패를 무시하는 데 활용될 수 있다. 또한, `/etc/passwd` 파일에서 사용자의 로그인 셸을 `false`로 설정하여 대화형 셸 접근을 제한할 수 있다. `true` 명령어는 널(null) 명령어로 대체될 수 있으며, 무시되는 매개변수를 가질 수 있고 셸 변수에 기본값을 할당하는 데 사용되기도 한다.

더 읽어볼만한 페이지

  • 표준 유닉스 프로그램 - AWK
    AWK는 1977년에 개발된 텍스트 처리 및 프로그래밍 언어로, 유닉스 환경에서 텍스트 처리를 위해 설계되었으며 정규 표현식 처리 기능을 통해 텍스트 분석, 데이터 추출, 보고서 생성 등 다양한 작업을 수행한다.
  • 표준 유닉스 프로그램 - Rm (유닉스)
    유닉스 명령어 `rm`은 파일을 삭제하는 데 사용되며, 옵션을 통해 삭제 동작을 제어하고 디렉터리를 재귀적으로 삭제할 수 있지만, 잘못 사용하면 시스템에 심각한 손상을 초래할 수 있어 주의가 필요하며 안전 장치나 휴지통 기능 등의 대안이 존재한다.
  • 유닉스 SUS2008 유틸리티 - AWK
    AWK는 1977년에 개발된 텍스트 처리 및 프로그래밍 언어로, 유닉스 환경에서 텍스트 처리를 위해 설계되었으며 정규 표현식 처리 기능을 통해 텍스트 분석, 데이터 추출, 보고서 생성 등 다양한 작업을 수행한다.
  • 유닉스 SUS2008 유틸리티 - 로케일
    로케일은 소프트웨어 국제화 및 지역화에서 사용자 문화적 배경에 맞춰 사용 환경을 조정하는 설정으로, 표시 언어, 숫자/날짜 형식, 문자 분류, 통화 형식 등을 포함한다.
True와 false - [IT 관련 정보]에 관한 문서

2. 사용법

`true`와 `false` 명령어는 주로 셸 스크립트에서 조건문의 결과를 제어하거나 루프를 만드는 데 사용된다. 예를 들어, `while true`와 같이 무한 루프를 구성하거나, 특정 명령어 실행 후 `&& false`를 덧붙여 스크립트가 의도적으로 실패 상태를 반환하도록 만들 수 있다.

다른 용도로는 /etc/passwd 파일에서 사용자의 로그인 셸을 `''false''`로 설정하여, 해당 사용자의 대화형 셸 접근을 효과적으로 차단하는 데 활용될 수 있다. 이는 FTP 등 다른 서비스 접근은 유지하면서 셸 접근만 막는 방법이다. (시스템에 따라 `''/sbin/nologin''`이 더 적합할 수도 있다.)

이 프로그램들은 일반적으로 별도의 "실제" 매개변수를 받지 않는다. 다만, GNU 버전의 경우 표준 매개변수인 `''--help''`를 통해 사용법 요약을, `''--version''`을 통해 프로그램 버전을 확인할 수 있다.

2. 1. 기본 사용법

`'''true'''` 명령어는 아무 작업도 수행하지 않고 항상 성공 상태(종료 코드 0)를 반환한다. 반대로 `'''false'''` 명령어는 아무 작업도 수행하지 않고 항상 실패 상태(종료 코드 1)를 반환한다.

이 두 명령어는 주로 셸 스크립트 내에서 조건문의 결과를 제어하거나 제어 흐름 루프를 만드는 데 사용된다. 예를 들어, `true`는 무한 루프를 만드는 데 사용될 수 있으며, `false`는 특정 조건에서 스크립트 실행을 의도적으로 실패시키는 데 사용될 수 있다.

더 자세한 활용 예시는 하위 섹션 셸 스크립트 예제에서 확인할 수 있다.

  • [https://www.gnu.org/software/coreutils/manual/html_node/true-invocation.html true(1)]: Do nothing, successfully – GNU Coreutils reference
  • [https://www.gnu.org/software/coreutils/manual/html_node/false-invocation.html false(1)]: Do nothing, unsuccessfully – GNU Coreutils reference
  • [http://man.freebsd.org/true true(1)]: Return true value – FreeBSD manual page
  • [http://man.freebsd.org/false false(1)]: Return false value – FreeBSD manual page

2. 1. 1. 셸 스크립트 예제

`true`와 `false` 명령어는 일반적으로 셸 스크립트의 조건문과 제어 흐름 루프에서 사용된다. 예를 들어, 다음 셸 스크립트는 사용자가 중단시킬 때까지 `echo hello` 명령을 계속 반복하는 무한 루프를 만든다.



while true

do

echo hello

done



또한, 이 명령어들은 특정 명령어의 성공이나 실패 상태를 의도적으로 설정하는 데 사용될 수 있다. 예를 들어, `make` 명령어 실행 후 항상 실패 상태를 반환하도록 만들 수 있다.



make … && false



다른 활용 예로, /etc/passwd 파일에서 사용자의 로그인 셸을 `'''false'''`로 설정하면, 해당 사용자는 터미널을 통한 대화형 셸 접근이 효과적으로 차단된다. 하지만 FTP와 같은 다른 서비스에 대한 계정 접근은 여전히 유효할 수 있다. (만약 시스템에서 `/sbin/nologin` 명령을 사용할 수 있다면, 이 목적에 더 적합할 수 있다. `/sbin/nologin`은 접근 거부 메시지를 출력하고 세션을 종료시킨다.)

`true`와 `false` 프로그램은 일반적으로 별도의 명령줄 인수를 받지 않는다. 하지만 대부분의 리눅스 배포판에 포함된 GNU 버전에서는 표준 옵션인 `--help`를 사용하여 간단한 사용법 요약을 볼 수 있고, `--version` 옵션으로 프로그램의 버전 정보를 확인할 수 있다.

2. 2. 로그인 셸 제한

/etc/passwd 파일에서 특정 사용자의 로그인 셸 설정을 `'''false'''`로 지정하면, 해당 사용자가 시스템에 직접 로그인하여 사용하는 대화형 셸 접근을 효과적으로 막을 수 있다. 이 방법은 사용자의 셸 접근은 제한하면서도 FTP와 같은 다른 서비스 계정은 계속 유효하게 유지해야 할 때 유용하게 사용될 수 있다.

만약 시스템에서 사용 가능하다면, /sbin/nologin 셸을 사용하는 것이 더 나은 대안이 될 수 있다. /sbin/nologin은 사용자의 로그인을 거부하면서 세션을 종료하기 전에 사용자에게 관련 메시지를 출력해주어, 왜 로그인이 거부되었는지 알려주는 보다 사용자 친화적인 방식을 제공한다.

3. Null command

`true` 명령어는 때때로 콜론 하나(:)로 표기되는 널(null) 명령어로 대체될 수 있다.[2] 널 명령어는 셸 내장 명령어이기 때문에, 외부 프로그램으로 존재할 수 있는 `true` 명령어보다 효율적인 경우가 있다. 이 명령어는 전달된 매개변수를 무시하며, 아무런 동작도 하지 않는 no-op 더미 명령어로 사용된다.[3]

3. 1. 셸 스크립트에서의 Null Command 활용

''true'' 명령어는 때때로 매우 유사한 널(null) 명령어로 대체될 수 있으며, 이는 콜론 하나(:)로 표기된다.[2] 널 명령어는 셸에 내장되어 있으므로, ''true''가 외부 프로그램일 경우(일반적으로 ''true''는 셸 내장 함수임) 더 효율적일 수 있다. 위 예시를 :를 사용하여 다시 작성할 수 있다.



while :

do

echo hello

done



널 명령어는 무시되는 매개변수를 가질 수 있다. 또한, ${parameter:=word} 매개변수 확장 형식을 통해 셸 변수에 기본값을 할당하는 것과 같은 no-op 더미 명령어로 사용된다.[3] 예를 들어, Bash의 버그 보고 스크립트인 ''bashbug''에서:



: ${TMPDIR:=/tmp}

: ${EDITOR=$DEFEDITOR}

: ${USER=${LOGNAME-`whoami`}}


4. 기타

(내용 없음)

4. 1. 매개변수

`true`와 `false` 명령어는 일반적으로 실제 매개변수를 받지 않는다. 대부분의 리눅스 배포판에 포함된 버전에서는 표준 매개변수인 `--help`를 사용하면 사용법 요약을 볼 수 있고, `--version`을 사용하면 프로그램 버전을 확인할 수 있다. 이는 주로 GNU Coreutils에 포함된 `true`, `false` 명령어에 해당한다.

4. 2. 관련 명령어

GNU Coreutils에서는 `true` 명령어를 "아무것도 하지 않고 성공적으로 종료"하는 것으로, `false` 명령어를 "아무것도 하지 않고 비성공적으로 종료"하는 것으로 정의한다. FreeBSD 매뉴얼 페이지에서는 `true`를 "참 값(true value)을 반환"하는 명령어로, `false`를 "거짓 값(false value)을 반환"하는 명령어로 설명한다. 이 명령어들은 주로 셸 스크립트에서 조건문의 조건식 부분에 사용되어 특정 코드 블록의 실행 여부를 명시적으로 제어하거나, 무한 루프 등을 만드는 데 활용된다.

참조

[1] 문서 These are distinct from the truth values of classical logic and most general purpose programming languages: Logical truth|true (1 or T) and False (logic)|false (0 or ⊥).
[2] 간행물 Colon http://pubs.opengrou[...]
[3] 간행물 Advanced Bash-scripting guide, 6.3 The Linux documentation project 2011-04-01



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com