首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使zsh函数能够在没有引号的情况下输入字符串,但可以用引号来解释呢?

如何使zsh函数能够在没有引号的情况下输入字符串,但可以用引号来解释呢?
EN

Unix & Linux用户
提问于 2021-05-01 21:03:24
回答 1查看 293关注 0票数 1

我想要做一个函数来运行这样的功能:

代码语言:javascript
复制
youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' "https://www.youtube.com/watch?v=_OBlgSz8sSM"

目前,在.zshrc,我一直在尝试

代码语言:javascript
复制
downloadyoutube(){
    youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' "$1"

但是当我调用它时,它仍然希望我在URL周围添加引号。

相反,我想跑

代码语言:javascript
复制
downloadyoutube https://www.youtube.com/watch?v=_OBlgSz8sSM

没有引号。

而不是

代码语言:javascript
复制
downloadyoutube "https://www.youtube.com/watch?v=_OBlgSz8sSM"

有办法这样做吗?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-05-01 22:02:57

正如克莎拉南达所说,noglob是前进的道路;您可以按原样定义您的函数,然后使用alias来包含noglob

代码语言:javascript
复制
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都会包含&,所以最好将您的shell配置为用\&自动替换字符串中粘贴的& (而不是行尾);我的zsh自动完成了这一操作,我想我应该对此负责。
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/647628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档