别名:备份和编辑文件

别名:备份和编辑文件

我需要在编辑(和覆盖)文件(通常是图像)之前对其进行备份。
目前我通过以下方式做到这一点:

cp file.jpg ~/BACKUP/file.jpg
exiv2 BLABLABLA file.jpg

我怎样才能用一个命令来做到这一点?
例如

AAalias file.jpg

其中AAalias是别名或函数,并不重要,但这是形状我正在寻找:命令+文件名

答案1

使用 shell 函数:

backup_and_edit () {
    cp -i "$1" "$HOME/BACKUP" &&
    exiv2 BLABLABLA "$1"
}

这将放在您通常放置别名和 shell 函数的位置(可能在您的~/.bashrc文件中),并且在实例化该函数之后(通过启动新的 shell 会话),您将像这样使用它

$ backup_and_edit ./some/file.jpg

当像这样调用时,该函数将执行

cp -i ./some/file.jpg "$HOME/BACKUP" &&
exiv2 BLABLABLA ./some/file.jpg

-i选项cp将使实用程序在覆盖备份目录中同名的文件之前要求确认。如果复制失败,exiv2则不会调用该命令。

答案2

您可以创建一个使用函数的别名:

alias Aalias='_(){ local file=${@: -1};(($#<2))||[[ ! -e "${file}" ]]&&echo "Usage: Aalias <options> <file>"&&return 1;cp "${file}" ~/BACKUP/${file};exiv2 $@;}; _'

${@: -1} grabs the last argument for the file 
[[ ! -e "${file}" ]] checks to make sure the file exists 

如果提供的参数少于 2 个或文件不存在,则会显示用法。

如果最后一个参数是存在的文件的名称,它将备份到用户主目录中的 BACKUP 目录,并且 exiv2 将使用命令行上提供的选项启动。

相关内容