通常,当我编辑某些系统文件时,我会先创建一个备份。例如:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
是否有任何简单的“快捷方式”,例如:
sudo cp /etc/ssh/sshd_config %s.bak
?
我发现的一个解决方法是使用sed
以下方式:
sudo sed '' /etc/ssh/sshd_config -i.bak
答案1
您可以像这样使用括号扩展:
cp example_file{,.bak}
答案2
1. 你的要求
您可以创建一个小型的 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
使其可执行,
chmod ugo+x bupper
当在 中时~/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'
2. 替代方案——让编辑器自动完成工作
有些编辑器会提供在保存新版本之前创建文件备份的选项。此备份的最后一个字符通常是波浪号(波浪号是扩展名,但前面没有点)。
Gedit,Ubuntu 的标准编辑器就是其中之一。
设置后gedit
保存这样的备份:
gedit hello.txt
然后检查
$ ls hello.txt*
hello.txt hello.txt~ hello.txt.bak
现在hello.txt~
已添加到hello.txt
并由 创建的备份bupper
。
这nano
也适用于-B
nano -B hello.txt
因此您可以使用命令行编辑器执行‘sudo’任务:-)