Bash에서 사용자 정의 조건식 기본 색상을 정의하는 방법은 무엇입니까?

Bash에서 사용자 정의 조건식 기본 색상을 정의하는 방법은 무엇입니까?

새로운 것을 어떻게 재정의하거나 정의합니까?조건식 기본 색상배쉬에서? 예를 들어, 빈 디렉터리가 존재하는지 테스트하기 위해 마스터 데이터베이스를 원합니다. 물론 하나의 기본 옵션만 사용하여 이를 수행하는 것이 가장 좋지만 이것이 불가능할 경우 두 가지 기본 옵션을 사용할 수 있습니다. 예를 들어, 저는 다음과 같은 목표를 달성하고 싶습니다.

    if [ -DZ $HOME/dir ]; # true if directory the path is an empty directory
      then echo "$HOME/dir doesn't have any non-hidden files or directories!"
    fi

답변1

자신만의 조건자를 추가하려면 내장 명령의 소스를 test수정해야 합니다 . 이식할 수 없는 스크립트가 생성되므로 이는 아마도 여러분이 원하는 작업이 아닐 것입니다. 대신 쉘 함수를 사용할 수 있습니다.bash[

isemptydir () (
    shopt -s nullglob
    shopt -s dotglob

    if [ -z "$1" ]; then
        echo 'isemptydir: Empty or missing argument' >&2
        return 1

        # could instead do: set .
        # this would use the current directory as the "default" one
    fi

    if [ -d "$1" ]; then
        # note: above test fails on inaccessible dirs --> "not empty"

        set -- "${1%/}"/*
        [ "$#" -eq 0 ]
        # note: above test succeeds on unlistable dirs --> "empty"           
    fi
)

if isemptydir "$mydir"; then
    printf 'Directory "%s" is empty\n' "$mydir"
else
    printf '"%s" is not a directory, or is not empty\n' "$mydir"
fi

이 함수는 주어진 인수가 디렉터리 이름인지 테스트합니다. 그렇다면 숨겨진 이름을 포함하여 디렉터리에서 사용 가능한 이름(파일뿐만 아니라)의 수를 계산하고 이를 0과 비교합니다. 마지막으로 실행된 테스트의 반환 상태는 함수의 반환 상태입니다.


[자신만의 함수 오버로드나 명령 을 사용할 수 있지만 test이로 인해 문제가 발생할 수도 있습니다.

관련 정보