エイリアスネスト文字列

エイリアスネスト文字列

ファイルにいくつかの引数を追加する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'"'

しかし、問題は、'文字列が 2 つの別々の文字列として解釈されることです。さらに、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'

引用符を 1 層削除します。エイリアスは次のようになります。

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' "$@"
}

関連情報