zsh:特定のコマンドまたはパターンに対してワイルドカードを無効にしますか?

zsh:特定のコマンドまたはパターンに対してワイルドカードを無効にしますか?

zshでは、ワイルドカードを使用するとき、?または*以下のようにワイルドカードが有効になります。

ls file?.txt

ただし、次の状況ではワイルドカードを無効にしたいと思います。

youtube-dl https://www.youtube.com/watch?v=QIysdjpiLcA

'パラメータを一重引用符または二重引用符(または)で囲むことで、"この問題を解決できます。

URLなどのパターンで使用するときにワイルドカードを無視するように(つまり、ワイルドカードを使用しないように)zshを何らかの方法で設定できますか?それともいくつかのコマンド/実行ファイルの場合?

答え1

入れたらnoglobコマンドの前にワイルドカードは使用されません。

noglob youtube-dl https://www.youtube.com/watch?v=QIysdjpiLcA

特定のコマンドでワイルドカードを無効にするには、そのコマンドをエイリアスに設定します。

alias youtube-dl='noglob youtube-dl'

これはURLには役立ちますが、?URLには役立ちません&&参照除外の解釈を無効にする方法はありません。

クリップボードにURLがある場合は、貼り付けるのではなくコマンドを使用してクリップボードの内容を呼び出すことができます。

youtube-dl "`xsel`"         # X11 automatic mouse selection
youtube-dl "`xclip -o`"     # X11 automatic mouse selection
youtube-dl "`xsel -b`"      # X11 explicitly copied clipboard
youtube-dl "`xclip -o -sc`" # X11 explicitly copied clipboard
youtube-dl "`pbpaste`"      # macOS clipboard

シェル履歴には、URLではなく貼り付けたコマンドが含まれます。Tabコマンドが終了する前にコマンドラインの最後を押すと、コマンドの置き換えがURLに展開されます。 (完了設定によって必要なキーが異なる場合があります。Zshコマンドラインですべての変数を拡張する方法は?そしてShellはタブプレフィックスを完成できますか?.)

または端末でサポートしている場合かっこ内に貼り付ける(良い最新の製品ではこれを行います。)貼り付ける前にCtrl+を押してくださいU(または数値パラメータを設定する他の項目)。 URL(または貼り付けた内容)は引用符で囲みます。これには、ブラウザが無視する先行スペースと末尾のスペースが含まれます。

関連情報