![псевдоним вложенная строка](https://rvso.com/image/1087104/%D0%BF%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D0%BD%D0%B8%D0%BC%20%D0%B2%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0.png)
У меня есть alias
for youtube_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'"'
Проблема, однако, в том, что теперь -строки '
интерпретируются как две отдельные строки. Кроме того, теперь я не могу добавить 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' "$@"
}