исказите вложенную строку

Я имею alias для 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 как аргумент. Как я обхожу это?

3
задан 13 April 2017 в 15:24

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' "$@"
}
6
ответ дан 1 December 2019 в 15:24

Другие вопросы по тегам:

Похожие вопросы: