bash cp 命令_cp命令的两个重要用途:Bash快捷方式

bash cp 命令

去年七月,我为cp命令写了两个很好的用法 :备份文件和同步文件夹的辅助副本。

发现了这些出色的实用程序之后,我发现它们比必要的更为冗长,因此我在Bash Shell启动脚本中为其创建了快捷方式。 我以为我会分享这些快捷方式,以防它们对其他人有用,或者可以为尚未完全使用别名或shell函数的Bash用户提供灵感。

更新文件夹的第二个副本– Bash别名

使用cp更新文件夹的第二个副本的一般模式是:


cp -r -u -v SOURCE-FOLDER DESTINATION-DIRECTORY 

其中-r代表“递归访问所有文件的文件夹”, -u代表“更新目标”, -v代表“详细模式”, SOURCE-FOLDER是包含最多更新内容的文件夹的名称最新信息,并且DESTINATION-DIRECTORY是包含必须同步的SOURCE-FOLDER副本的目录。

我很容易记住-r选项,因为在复制文件夹时经常使用它。 我可能需要付出更多的努力才能记住-v ,甚至付出更多的努力就可以记住-u (它是“更新”还是“同步”或…)。

或者,我可以使用Bash中别名功能cp命令和选项转换为更难忘的内容,例如:


alias sync = 'cp -r -u -v' 

如果将其保存在主目录的.bash_aliases文件中,然后启动新的终端会话,则可以使用别名,例如:


sync Pictures / media / me / 4388 -E5FE 

使主目录中的“图片”文件夹与USB驱动器中的图片文件夹同步。

不确定是否已经定义了sync别名? 您可以通过在终端窗口的命令提示符下键入“ alias ”一词来列出所有当前定义的别名。

如此喜欢您只是想立即开始使用它? 打开一个终端窗口并输入:


echo "alias sync='cp -r -u -v'" >> ~ / .bash_aliases 

然后启动一个新的终端窗口,并在命令提示符下键入alias 。 您应该会看到以下内容:



   
   
me @ mymachine~$ alias

alias alert = 'notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e ' \' 's/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//' \' ')"'

alias egrep = 'egrep --color=auto'

alias fgrep = 'fgrep --color=auto'

alias grep = 'grep --color=auto'

alias gvm = 'sdk'

alias l = 'ls -CF'

alias la = 'ls -A'

alias ll = 'ls -alF'

alias ls = 'ls --color=auto'

alias sync = 'cp -r -u -v'

me@mymachine:~$

在那里您可以看到定义的sync别名。

进行版本备份– Bash功能

使用cp备份文件的一般模式是:


cp --force --backup =numbered WORKING-FILE BACKED-UP-FILE 

-- force表示“无论如何都进行复制”, -- backup=numbered表示“使用数字表示备份的生成”, WORKING-FILE是我们希望保留的当前文件, BACKED-UP-FILEWORKING-FILE具有相同的名称,并将附加生成信息。

除了记住cp命令的选项外,我们还需要记住第二次重复WORKING-FILE名称。 但是,当Bash函数可以为我们处理这些开销时,为什么要重复我们自己:

同样,您可以将其保存到主目录中的.bash_aliases文件中。



   
   
function backup {

    if [ $# -ne 1 ] ; then

        echo "Usage: $0 filename"

    elif [ -f $1 ] ; then

        echo "cp --force --backup=numbered $1 $1"

        cp --force --backup =numbered $1 $1

    else

        echo "$0: $1 is not a file"

    fi

}

之所以将此功能称为“备份”,是因为我的系统上没有其他称为“备份”的命令,但是您可以选择任何适合的名称。

第一个if语句检查以确保仅向函数提供一个参数,否则使用echo命令打印正确的用法。

elif语句检查以确保提供的参数是文件,如果是,它将(详细地)使用第二个echo来打印要使用的cp命令,然后执行它。

如果单个参数不是文件,则第三个echo将显示一条错误消息以达到此效果。

在我的主目录中,如果我执行在checkCounts.sql文件中定义的backup命令, checkCounts.sql看到backup创建了一个名为checkCounts.sql.~1~的文件。 如果再次执行它, checkCounts.sql.~2~看到一个新文件checkCounts.sql.~2~

成功! 按照计划,我可以继续编辑checkCounts.sql ,但是如果我经常用备份对其快照,则在遇到麻烦时可以返回到最新快照。

在某个时候,最好开始使用git进行版本控制,但是当您需要创建快照但还没有准备好git时,上面定义的backup是一个很好的廉价工具。

结论

在上一篇文章中,我向您保证,通过使用Shell脚本,Shell函数和Shell别名,可以轻松地简化重复性任务。

在这里,我展示了使用Shell别名和Shell函数简化cp命令的同步和备份功能的具体示例。 如果您想了解更多有关此内容的信息,请阅读上面引用的两篇文章: 如何使用别名Shell脚本 在命令行中保存击键 我的同事Greg和Seth撰写的shift方法和自定义函数简介 , 分别。

翻译自: https://opensource.com/article/18/1/two-great-uses-cp-command-update

bash cp 命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值