Roc*_*uts 1 command-line zsh terminal wildcards
在 zsh 中,当使用通配符?
或*
如下所示时,通配符就会启动:
ls file?.txt
Run Code Online (Sandbox Code Playgroud)
不过,我想在这样的情况下禁用通配符:
youtube-dl https://www.youtube.com/watch?v=QIysdjpiLcA
Run Code Online (Sandbox Code Playgroud)
我可以通过将参数放在单引号或双引号('
或"
)中来解决这个问题。
在 URL 等模式中使用时,我可以以某种方式配置 zsh 来忽略通配符(即不进行任何通配符)吗?或者对于某些命令/可执行文件?
如果放在noglob
命令前面,则不会进行通配。
noglob youtube-dl https://www.youtube.com/watch?v=QIysdjpiLcA
Run Code Online (Sandbox Code Playgroud)
要禁用特定命令的通配符,请将其设置为别名。
alias youtube-dl='noglob youtube-dl'
Run Code Online (Sandbox Code Playgroud)
对于 URL,这有助于?
,但对 则没有帮助&
。没有办法禁用对&
except 引用的解释。
如果剪贴板中有 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
Run Code Online (Sandbox Code Playgroud)
您的 shell 历史记录中将包含粘贴命令,而不是 URL。如果在Tab命令结束之前按命令行末尾的 ,则命令替换将扩展为 URL。(所需的键可能会有所不同,具体取决于您的完成设置;另请参阅如何在 Zsh 中的命令行中展开所有变量?和Shell that tab-completes prefixs?。)
或者,如果您的终端支持括号粘贴(现代的终端也支持),请在粘贴之前按Ctrl+ U(或任何其他设置数字参数的内容)。URL(或您粘贴的任何内容)将用引号括起来。请注意,这包括浏览器会忽略的前导和尾随空格。