引用符なしで文字列を入力できますが、引用符として解釈できるzsh関数をどのように作成できますか?

引用符なしで文字列を入力できますが、引用符として解釈できるzsh関数をどのように作成できますか?

次のように実行される関数を作成したいと思います。

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' "https://www.youtube.com/watch?v=_OBlgSz8sSM"

現在、.zshrcで私は努力しています。

downloadyoutube(){
    youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' "$1"

しかし、呼び出し時にURLの周りに引用符を追加したいと思います。

代わりに走りたい

downloadyoutube https://www.youtube.com/watch?v=_OBlgSz8sSM

引用なし。

まさか

downloadyoutube "https://www.youtube.com/watch?v=_OBlgSz8sSM"

これを行う方法はありますか?

ベストアンサー1

Kusalanandaが言ったように、noglobこれは行く方法です。関数をそのまま定義してからaliasincludeを使用できますnoglob

downloadyoutube(){
  youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' "$1"
}
alias downloadyoutube="noglob downloadyoutube"

とにかく、これらの主張で何をしようとしているのかは意味がありません。youtube-dl現在のページを読むのに何年もかかったことに暗黙的に同意してくださいman


クサラナンダが正しいことを強調したいです。

  1. 一部の特殊文字が問題になりたい場合に備えて、ここにいる'必要もありません。"
  2. ワイルドカードをオフにしてもイベント/リダイレクト文字を防ぐのに役立ちません。すべてのYouTube URLにその文字が含まれているため、文字列(行の末尾ではなく)に貼り付けたコンテンツを&自動的に置き換えるようにシェルを設定することをお勧めします。 zshはこれを自動的に行い、oh-my-zshが責任があると思います。&\&

おすすめ記事