同様のフラグを使用して複数のコマンドを実行したいとします。たとえば、次のようになります。
du -sh / --exclude=/dir1 --exclude=/dir2 --exclude=/dir3/dir4
tar cvf archive / --exclude=dir1 --exclude=dir2 --exclude=dir3/dir4
--exclude
一連のフラグを再利用し、これらのフラグを変数に保存するのと同じように、コードをよりきれいにしたいと思います。
その後、上記のコマンドは次のようになります
du -sh / "$EFLAGS"
tar cvf archive / "$EFLAGS"
そのtar
ディレクトリに関連付けられているファイルとディレクトリは除外されます。
最良かつクリーンなソリューションは何ですか?
背景
tarを使用してシステムをバックアップし、必要のないいくつかのディレクトリを除外したいと思います。
ベストアンサー1
次のことを試すことができます。
$ echo -e / --exclude=/dir1 --exclude=/dir2 --exclude=/dir3/dir4
/ --exclude=/dir1 --exclude=/dir2 --exclude=/dir3/dir4
$ echo !!:3-$
echo --exclude=/dir1 --exclude=/dir2 --exclude=/dir3/dir4
--exclude=/dir1 --exclude=/dir2 --exclude=/dir3/dir4
bash
ここでは履歴拡張を使用します。
!!
最後のコマンドを参照してください3-$
3番目のパラメータから最後のパラメータまでを参照してください。
bash
非対話型シェルでは、無効な履歴拡張機能をスクリプトで有効にする必要があります。
set -o history
set -o histexpand