cadena anidada de alias

cadena anidada de alias

Tengo un aliasfor youtube_dlque agrega algunos argumentos en mi .bashrcarchivo. Quiero ejecutar esto en una terminal separada similar a como se haceaquí. El problema es que esto toma una cadena como entrada.

mi alias actual:

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

cómo quiero que se vea el nuevo alias:

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

Sin embargo, el problema es que ahora las 'cadenas se interpretan como dos cadenas separadas. Además, ahora no puedo agregar la URL como argumento. ¿Cómo puedo evitar esto?

Respuesta1

Podrías jugar con las comillas y el escape, pero prefiero buscar formas de reducir los niveles de comillas. Por ejemplo, podrías usargnome-terminal -xen cambio:

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

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

Entonces,

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

Se convierte en:

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

Eliminando una capa de comillas. Y el alias sería:

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

O podrías usar una función:

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

información relacionada