有没有办法创建文件的备份,而无需输入两次其名称?

有没有办法创建文件的备份,而无需输入两次其名称?

通常,当我编辑某些系统文件时,我会先创建一个备份。例如:

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’任务:-)

相关内容