複数のコマンドに類似したフラグを再利用

複数のコマンドに類似したフラグを再利用

同様のフラグを使用して複数のコマンドを実行したいとします。たとえば、次のようになります。

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

おすすめ記事