zsh 터미널을 사용하여 간단한 npm 설치를 실행하려고 합니다.
npm install --save-dev @typescript-eslint/eslint-plugin@^4.0.0
zsh: no matches found: @typescript-eslint/eslint-plugin@^4.0.0
노드 모듈 이름에 @가 있기 때문인 것 같습니다. 왜 이런 일이 발생하는지에 대한 답을 찾을 수 없습니다. ~/.zshrc의 경로를 다른 값으로 변경해 보았지만 소용이 없었습니다.
이름에 @가 없으면 문제 없이 다른 노드 모듈을 저장할 수 있습니다.
자세한 내용은 이름 대신 특정 버전의 노드 모듈을 설치하는 것으로 보입니다. 실행은 npm install --save-dev @typescript-eslint/eslint-plugin
작동하지만 추가하면 @^4.0.0
오류가 발생합니다 zsh: no matches found
.
답변1
"일치하는 항목이 없습니다"는 zsh가 해당 단어가 와일드카드 패턴이라고 생각한다는 의미입니다. 단어를 와일드카드 패턴으로 해석하지 않고 문자 그대로 사용하고 싶다고 zsh에 알리려면 따옴표를 사용하세요.
npm install --save-dev '@typescript-eslint/eslint-plugin@^4.0.0'
npm install --save-dev "@typescript-eslint/eslint-plugin@^4.0.0"
npm install --save-dev @typescript-eslint/eslint-plugin@\^4.0.0
여기서는 작은따옴표나 큰따옴표를 사용할 수 있습니다. 두 문자의 차이점은 일부 문자는 !"$\`
큰따옴표( ) 내에서 특별한 의미를 유지하지만, 작은따옴표로 묶인 리터럴 문자열을 종료하기 위해 '
a 뒤에는 문자 자체만 특별한 의미를 유지한다는 것입니다 . '
또는 쉘에 특별한 의미가 있는 각 문자 앞에 백슬래시를 배치하십시오.
여기서 문제의 캐릭터는 @
가 아니라 입니다 ^
. @
보호가 필요하지 않습니다. 와일드카드 구성의 일부일 수 있습니다.@(…)
그러나 해당 옵션이 활성화되어 있고 뒤에 여는 괄호가 오는 경우에만 kshglob
(어차피 인용해야 함) 이는 @
기본적 ^
으로 와일드카드가 아니지만 (^foo
"일치하지 않는 모든 것 foo
"을 의미)은 다음과 같은 경우에 매우 인기 있는 옵션입니다.extended_glob
활성화되었습니다. ("일치 항목을 제외한 모든 일치 항목"을 의미) ~
아래의 와일드카드 문자 이기도 합니다. 또한extended_glob
foo~bar
foo
bar
^
역사적 확장된 역할그러나 한 단어가 로 시작 ^
하고 다른 단어를 포함하는 경우에만 해당됩니다 ^
.