pa4*_*080 16 command-line bash cp
通常,当我首先编辑某个系统文件时,我会创建一个备份副本。例如:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Run Code Online (Sandbox Code Playgroud)
是否有任何简单的“捷径”,例如:
sudo cp /etc/ssh/sshd_config %s.bak
Run Code Online (Sandbox Code Playgroud)
?
我发现的一种解决方法是以sed
这种方式使用:
sudo sed '' /etc/ssh/sshd_config -i.bak
Run Code Online (Sandbox Code Playgroud)
rob*_*cks 30
您可以像这样使用大括号扩展:
cp example_file{,.bak}
Run Code Online (Sandbox Code Playgroud)
您可以创建一个小的 shellscript 文件bupper
:
我有一个目录~/bin
,我在其中保存此类帮助文件。
#!/bin/bash
if [ $# -eq 1 ]
then
cp -pvi "$1" "${1}.bak"
else
echo "Info: $0 copies to a backup file"
echo "Usage: $0 <file to be backed up with .bak extension>"
fi
Run Code Online (Sandbox Code Playgroud)
使其可执行,
chmod ugo+x bupper
Run Code Online (Sandbox Code Playgroud)
当 in 时~/bin
,它将位于 PATH 中,您可以像任何可执行程序一样在任何地方(您有写入权限的地方)运行它。
例子:
$ bupper hello.txt
'hello.txt' -> 'hello.txt.bak'
$ bupper hello.txt
cp: overwrite 'hello.txt.bak'? n
$ bupper hello.txt
cp: overwrite 'hello.txt.bak'? y
'hello.txt' -> 'hello.txt.bak'
Run Code Online (Sandbox Code Playgroud)
某些编辑器可以选择在保存新版本之前创建文件的备份副本。此备份通常以波形符作为最后一个字符(波形符是扩展名,但前面没有点)。
Ubuntu 中的标准编辑器 Gedit 就是其中之一。
gedit
设置保存这样的备份副本后:
gedit hello.txt
Run Code Online (Sandbox Code Playgroud)
然后检查一下
$ ls hello.txt*
hello.txt hello.txt~ hello.txt.bak
Run Code Online (Sandbox Code Playgroud)
现在hello.txt~
已添加到hello.txt
并创建了备份bupper
。
这nano
也适用于选项-B
nano -B hello.txt
Run Code Online (Sandbox Code Playgroud)
所以你可以使用命令行编辑器来完成“sudo”任务:-)