博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bash cp 命令_cp命令的两个重要用途:Bash快捷方式
阅读量:2527 次
发布时间:2019-05-11

本文共 3578 字,大约阅读时间需要 11 分钟。

bash 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 (它是“更新”还是“同步”或…)。

或者,我可以使用的将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_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命令的同步和备份功能的具体示例。 如果您想了解更多有关此内容的信息,请阅读上面引用的两篇文章: 和 我的同事Greg和Seth撰写 , 分别。

翻译自:

bash cp 命令

转载地址:http://funzd.baihongyu.com/

你可能感兴趣的文章
Java Web 常用在线api汇总(不定时更新)
查看>>
删除本地文件
查看>>
FOC实现概述
查看>>
base64编码的图片字节流存入html页面中的显示
查看>>
这个大学时代的博客不在维护了,请移步到我的新博客
查看>>
GUI学习之二十一——QSlider、QScroll、QDial学习总结
查看>>
[Python设计模式] 第25章 联合国维护世界和平——中介者模式
查看>>
nginx反向代理docker registry报”blob upload unknown"解决办法
查看>>
gethostbyname与sockaddr_in的完美组合
查看>>
kibana的query string syntax 笔记
查看>>
基于Lua插件化的Pcap流量监听代理
查看>>
旋转变换(一)旋转矩阵
查看>>
thinkphp3.2.3 bug集锦
查看>>
[BZOJ 4010] 菜肴制作
查看>>
C# 创建 读取 更新 XML文件
查看>>
KD树
查看>>
VsVim - Shortcut Key (快捷键)
查看>>
C++练习 | 模板与泛式编程练习(1)
查看>>
HDU5447 Good Numbers
查看>>
08.CXF发布WebService(Java项目)
查看>>