主文件夹内容丢失:rm 使用错误?

主文件夹内容丢失:rm 使用错误?

我正在使用 Ubuntu-Mate 20.04,我的主文件夹中的大部分内容都丢失了。我认为这可能是由于错误地使用了 sudo 中的“rm”命令,但不确定是否还有其他原因。

我解释一下:我试图删除 /home/user2 上的一个文件夹(“targetfolder(某物)”)及其内容,当时我以 user1 的身份登录(user1 具有 sudo 权限)。因此,我这样做了:

sudo rm -r /home/user2/targetfolder (something)/ 

起初 rm 由于括号而给出了一些错误消息 - 我的意思是:()-,所以我用 * 替换了文件夹名称的一部分,然后执行以下操作:

sudo rm -r /home/user2/targetfolder */

注意:我可能因为空格('targetfolder *')而对文件夹名称使用了引号,尽管在终端中注册的最后一个命令没有引号。

据我了解,rm 应该只删除 user2 主文件夹中名称以“targetfolder”开头的任何文件夹,但它似乎删除了 user1 主文件夹的大部分内容。我补充说,由于我不清楚 rm 是否在工作,所以我关闭了终端,我想,是终止了该进程。

以防万一,user1 和 user2 主文件夹都使用 ecryptfs 加密(/home/user2 中要删除的文件夹位于 .Private 之外,因此未加密)。

所以,我的问题是,我使用的 rm 命令是否会删除 user1 主文件夹的内容(甚至影响系统)。

我最近备份了丢失的内容,但我想确保这不是由于 rm 命令以外的其他问题造成的。

提前致谢并且抱歉我的英语不好。

答案1

此命令

sudo rm -r /home/user2/targetfolder */

会尝试删除一个/home/user2/targetfolder可能不存在的文件夹,然后删除匹配的项目*/。这意味着当前工作目录中存在的所有非隐藏目录(及其内容)。如果当前工作目录是的主目录user1,那么是的,这就是会受到影响的目录。

错误在于没有转义空格。空格是分隔参数的分隔符。在这里,您提供了两个参数(在选项 旁边-r),/home/user2/targetfolder*/,其中后者由 shell 扩展以匹配所有非隐藏子目录(例如Documents/Videos/等)。

引用文件名模式,或者转义空格,例如

sudo rm -r "/home/user2/targetfolder "*/

或者

sudo rm -r /home/user2/targetfolder\ */

将会包括/home/user2/targetfolder (something)/和其他匹配的文件夹(如果有)。

一般来说,将rm -r和 结合使用sudo,正如您所经历的那样,是极其危险的。不要立即执行此类命令,而应先进行验证。

  • sudo rm -r用替换ls -d。这将列出参数中包含的所有项目,并允许您预先验证将删除哪些内容(感谢 cocomac 提供的提示)。
  • 一旦ls列出您想要删除的内容,按即可调用该命令并更改ls -dsudo rm -r

如果必须删除单个目录,请完全避免使用通配符。使用制表符补全。这样,您就可以确保在命令行中正确输入了特定名称。

相关内容