alias string aninhada

alias string aninhada

Eu tenho um aliasfor youtube_dlque adiciona alguns argumentos no meu .bashrcarquivo. Quero executar isso em um terminal separado, semelhante a como é feitoaqui. O problema é que isso leva uma string como entrada.

meu apelido atual:

alias youtube-dl="youtube-dl -ci --restrict-filenames -o '%(title)s.%(ext)s'"

como eu quero que o novo alias fique:

alias youtube-dl='gnome-terminal -e "youtube-dl -ci --restrict-filenames -o '%(title)s.%(ext)s'"'

O problema, entretanto, é que agora as '-strings são interpretadas como duas strings separadas. Além disso, agora não consigo adicionar o URL como argumento. Como faço para contornar isso?

Responder1

Você poderia mexer com aspas e escapar, mas prefiro procurar maneiras de reduzir os níveis de cotação. Por exemplo, você poderia usargnome-terminal -xem vez de:

-e, --command=STRING
         Execute the argument to this option inside the terminal.

-x, --execute
         Execute  the  remainder  of  the  command  line  inside   the
         terminal.

Então,

gnome-terminal -e "youtube-dl -ci --restrict-filenames -o '%(title)s.%(ext)s'"

Torna-se:

gnome-terminal -x youtube-dl -ci --restrict-filenames -o '%(title)s.%(ext)s'

Raspar uma camada de citações. E o apelido seria:

alias youtube-dl='gnome-terminal -x youtube-dl -ci --restrict-filenames -o "%(title)s.%(ext)s"'

Ou você pode usar uma função:

youtube-dl()
{
    gnome-terminal -x youtube-dl -ci --restrict-filenames -o '%(title)s.%(ext)s' "$@"
}

informação relacionada