pol*_*lym 5 shell bash variable
假设我想执行多个具有类似标志的命令,例如:
du -sh / --exclude=/dir1 --exclude=/dir2 --exclude=/dir3/dir4
tar cvf archive / --exclude=dir1 --exclude=dir2 --exclude=dir3/dir4
Run Code Online (Sandbox Code Playgroud)
我想重用标志序列--exclude
并使代码更干净,例如将这些标志保存到变量中。
所以之后上面的命令看起来像
du -sh / "$EFLAGS"
tar cvf archive / "$EFLAGS"
Run Code Online (Sandbox Code Playgroud)
请注意,tar
排除相对于给定目录的文件和目录。
我想使用 tar 备份我的系统并排除一些我不需要的目录。
你可以试试这个:
$ 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
Run Code Online (Sandbox Code Playgroud)
这里我们使用bash
历史扩展:
!!
参考最后一条命令3-$
参考第三个参数到最后一个bash
您应该在脚本中打开历史扩展功能,该功能在非交互式 shell 中被禁用:
set -o history
set -o histexpand
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
928 次 |
最近记录: |