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

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

如果我有一个脚本 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

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

bash rename_everything.sh

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

答案1

一般来说,没有任何命令可以撤消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脚本中的每个命令。

相关内容