你能用一系列 mv 命令反转 bash 脚本吗?

car*_*mom 0 mv

如果我有一个脚本 rename_everything.sh 其中包含

mv 2022-05-03.txt hike_valley.txt
mv 2022-05-20.txt not_overcooked.txt
mv 2022-05-22.txt return_trip.txt
Run Code Online (Sandbox Code Playgroud)

但我很紧张在一个文件夹中运行它

bash rename_everything.sh
Run Code Online (Sandbox Code Playgroud)

如果我决定这样做,然后认为这是一个坏主意并后悔,那么可以以与刚刚所做的完全相反的方式调用该 .sh 文件吗?

Kam*_*ski 5

一般来说,没有撤消命令mv 2022-05-03.txt hike_valley.txt.

乍一看mv hike_valley.txt 2022-05-03.txt似乎是这样的“撤消”命令。但想象一下常规文件hike_valley.txt已经存在并被覆盖第一个命令它的原始内容不容易恢复。可以肯定的是,所谓的“撤消”命令不会恢复原始内容。

另一种情况是 ifhike_valley.txt是目录(可能是)或目录的符号链接。在这种情况下,第一个命令创建或覆盖hike_valley.txt/2022-05-03.txt. 这里所谓的“撤消”是mv hike_valley.txt/2022-05-03.txt ./已经与上面的“撤消”不同。如果发生覆盖,它也不会真正撤消。

同样的推理也适用于mv脚本中的每个命令。

  • ...因此,在测试不知道其用途的随机命令之前,建议为系统实施通用备份策略(或至少制作基本数据的副本)。 (2认同)