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
ここでは、一重引用符または二重引用符を使用できます。 2つの文字の違いは、一部の文字は二重引用符!"$\`
()内で特別な意味を維持しますが、一重引用符で囲まれたリテラル文字列を終了するために、aの'
後には文字自体だけが特別な意味を保持することです。'
または、シェルに特別な意味を持つ各文字の前にバックスラッシュを配置します。
ここで問題のキャラクターはでは@
ありません^
。@
保護は必要ありません。ワイルドカード構成の一部である可能性があります。@(…)
ただし、対応するオプションが有効になっていて後ろに括弧が付いている場合にのみ(引用する必要kshglob
があります)、これはデフォルトではワイルドカードではありません(@
^
^foo
「一致しないすべてfoo
」という意味)は、次のような場合に非常に人気のあるオプションです。extended_glob
有効です。 (「一致項目を除くすべての一致項目」を意味します)~
以下のワイルドカード文字でもあります。またextended_glob
foo~bar
foo
bar
^
歴史的に拡張された役割ただし、ある単語がで始まり、^
別の単語が含まれている場合にのみ適用されます^
。