Command-Line

zsh:禁用某些命令或模式的萬用字元?

  • April 18, 2020

在 zsh 中,當使用萬用字元?*像這樣時,萬用字元會起作用:

ls file?.txt

但是我想在這樣的情況下禁用萬用字元:

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

我可以通過將參數放在單引號或雙引號('")中來解決這個問題。

在 URL 等模式中使用時,我能否以某種方式將 zsh 配置為忽略萬用字元(即不進行任何萬用字元)?或者對於某些命令/執行檔?

如果你把noglob命令放在前面,則不會進行通配。

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

要禁用特定命令的萬用字元,請將其設為別名。

alias youtube-dl='noglob youtube-dl'

對於 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

您將在 shell 歷史記錄中擁有粘貼命令,而不是 URL。如果Tab在命令結束前按命令行末尾,命令替換將擴展為 URL。(根據您的完成設置,所需的鍵可能會有所不同;另請參閱如何在 Zsh 中的命令行中展開所有變數?以及製表符完成前綴的 Shell?。

或者,如果您的終端支持括號粘貼(現代的不錯),請在粘貼前按Ctrl+ U(或任何其他設置數字參數的東西)。URL(或您粘貼的任何內容)將在其周圍粘貼引號。請注意,這包括瀏覽器會忽略的前導和尾隨空格。

引用自:https://unix.stackexchange.com/questions/580929