bash 스크립트의 if 문에서 -f는 무엇을 의미합니까?

bash 스크립트의 if 문에서 -f는 무엇을 의미합니까?

이 코드를 이해해 보세요.

if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

-f가 정확히 무엇을 의미하는지 잘 모르겠습니다.

답변1

즉, 코드는 파일이 존재하는 경우 해당 파일을 소싱하고 /etc/bashrc명령(연산자/인수)을 통해 존재 여부를 확인합니다.[-f

if...then...else...fi쉘 스크립트의 명령문은 명령의 종료 상태를 평가합니다(성공 시 0). 따라서 다음과 같이 하는 것이 옳습니다.

if ping -c 4 google.com; then
    echo "We have a connection!"
fi

귀하의 경우 명령을 명령 [이라고도 합니다 test. 따라서 이 작업을 수행하는 것은 완전히 유효합니다.

if test -f /etc/bashrc; then
    . /etc/bashrc
fi

-f 플래그는 제공된 경로가 존재하고 일반 파일인지 두 가지를 확인합니다. /etc/bashrc디렉터리가 실제로 없거나 누락된 경우 테스트는 실패를 나타내기 위해 0이 아닌 종료 상태를 반환해야 합니다.

이 명령은 원래 쉘 내장 명령의 일부가 아닌 별도의 명령이었습니다. 요즘에는 Bourne과 같은 쉘 대부분에 이 기능이 내장되어 있으며 쉘이 이를 사용할 것입니다.

그런데 /etc/bashrc관리자나 코드 조각의 원본 작성자가 불필요한 추가 파일을 사용하고 있는 것 같습니다. 존재합니다 /etc/bash.bashrc. 이는 bash를 위한 시스템 전체 rc 파일로 의도되었기 때문에 사람들이 이를 사용하고 싶어합니다.

또한보십시오:

답변2

이를 확인하는 관련 매뉴얼 페이지는 쉘 자체의 매뉴얼 페이지입니다. 쉘은 bash에 내장된 기능을 제공하기 bash때문입니다 .-f

내 시스템(CentOS 7)에서는 멋진 매뉴얼 페이지가 이를 다루고 있습니다. 다른 배포판에서는 grep동일한 결과를 제공하지 못할 수도 있습니다. 그래도 실행 man bash한 다음 "-f"를 검색하면 필요한 결과를 얻을 수 있습니다.

$ man bash | grep -A1 '\-f file$'
       -f file
              True if file exists and is a regular file.
$

관련 정보