我有一个alias
foryoutube_dl
函数,它在我的文件中添加了一些参数.bashrc
。我想在单独的终端中运行它,类似于它的操作方式这里。问题是这需要使用字符串作为输入。
我当前的别名:
alias youtube-dl="youtube-dl -ci --restrict-filenames -o '%(title)s.%(ext)s'"
我希望新别名是什么样子的:
alias youtube-dl='gnome-terminal -e "youtube-dl -ci --restrict-filenames -o '%(title)s.%(ext)s'"'
但问题是,现在 -strings'
被解释为两个单独的字符串。此外,我现在无法将 url 添加为参数。我该如何规避这个问题?
答案1
你可以随意使用引号和转义,但我更喜欢寻找减少引号层级的方法。例如,你可以使用gnome-terminal -x
反而:
-e, --command=STRING
Execute the argument to this option inside the terminal.
-x, --execute
Execute the remainder of the command line inside the
terminal.
所以,
gnome-terminal -e "youtube-dl -ci --restrict-filenames -o '%(title)s.%(ext)s'"
变成:
gnome-terminal -x youtube-dl -ci --restrict-filenames -o '%(title)s.%(ext)s'
去掉一层引号。别名将是:
alias youtube-dl='gnome-terminal -x youtube-dl -ci --restrict-filenames -o "%(title)s.%(ext)s"'
或者你可以使用一个函数:
youtube-dl()
{
gnome-terminal -x youtube-dl -ci --restrict-filenames -o '%(title)s.%(ext)s' "$@"
}