이 맥락에서 Big Bracket의 사용을 이해하는 데 도움이 됩니다.

이 맥락에서 Big Bracket의 사용을 이해하는 데 도움이 됩니다.
[ ! -d ~/.ssh ] && mkdir ~/.ssh;

여기서 사용법 []과 그 의미를 이해할 수 없습니다. 뒷부분은 이해하지만 [ ! -d ~/.ssh ]이해가 안가네요mkdir ~/.ssh

감사합니다!

답변1

이는 와일드카드와는 아무런 관련이 없으며 표준 쉘 if조건입니다. 이는 [테스트에 사용되는 쉘 내장 명령(외부 명령이기도 함)입니다. 당신이 쓴 내용은 다음과 같습니다.

if [ ! -d ~/.ssh ]; 
then 
    mkdir ~/.ssh
fi

설명 대로 help [(bash에서):

$ help [
[: [ arg... ]
    Evaluate conditional expression.
    
    This is a synonym for the "test" builtin, but the last argument must
    be a literal `]', to match the opening `['.

여기서는 테스트를 사용하여 디렉터리인지 -d확인합니다 . (다시 bash에서) ~/.ssh를 사용하여 help test다양한 테스트 옵션을 볼 수 있습니다. 여기서는 다음 두 가지를 사용합니다.

$ help test | grep -E -- '^ *!|-d'
      -d FILE        True if file is a directory.
      ! EXPR         True if expr is false.

이는 디렉토리가 아닌 경우 [ ! -d ~/.ssh ]true를 의미합니다.~/.ssh

이제 이것이 쉘이 실행할 수 있는 명령임을 알았으므로 [다른 명령처럼 처리할 수 있습니다. 구문 command && otherCommand도 표준입니다. 즉, " 성공한 경우 otherCommand에만 실행 command"을 의미합니다. 따라서 여기서는 " ~/.ssh아직 존재하지 않는 경우 디렉토리를 생성하십시오.

[ ! -d ~/.ssh ] && mkdir ~/.ssh;
--------------- -- ------------
       |        |        |=======> "otherCommand"
       |        |================> logical AND
       |=========================> "if ~/.ssh is not a directory" (command)

관련 정보