[ ! -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)