псевдоним вложенная строка

псевдоним вложенная строка

У меня есть aliasfor 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' "$@"
}

Связанный контент