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

3

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

Однако проблема состоит в том, что теперь ' -strings интерпретируются как две отдельные строки. Кроме того, теперь я не могу добавить URL-адрес в качестве аргумента. Как мне обойти это?

    
задан M.T 07.04.2016 в 12:10
источник

1 ответ

6

Вы можете столкнуться с кавычками и побегами, но я предпочитаю искать способы уменьшить уровни цитирования. Например, вместо 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' "$@"
}
    
ответ дан muru 07.04.2016 в 13:25
источник