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

ubu*_*340 2 command-line rm

我使用的是 Ubuntu-Mate 20.04,我丢失了主文件夹的大部分内容。我认为这可能是由于错误地使用了 sudo 的 \xe2\x80\x9crm\xe2\x80\x9d 命令,但不确定是否可能是其他原因。

\n

我解释一下:我试图删除 /home/user2 上的文件夹( \xe2\x80\x9ctargetfolder (something)\xe2\x80\x9d )及其内容,同时以 user1 身份登录(user1 具有 sudo 权限)。所以我做了:

\n
sudo rm -r /home/user2/targetfolder (something)/ \n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
sudo rm -r /home/user2/targetfolder */\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

据我了解, rm 应该只删除 user2 主文件夹中名称以 \xe2\x80\x9ctargetfolder\xe2\x80\x9d 开头的任何文件夹,但它似乎已经删除了 user2 主文件夹的主要部分用户1。我补充说,因为我不清楚 rm 是否正在工作,所以我关闭了终端杀死,我猜,这个过程。

\n

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

\n

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

\n

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

\n

预先感谢并抱歉我的英语。

\n

van*_*ium 9

这个命令

\n
sudo rm -r /home/user2/targetfolder */\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n

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

\n
sudo rm -r "/home/user2/targetfolder "*/\n
Run Code Online (Sandbox Code Playgroud)\n

或者

\n
sudo rm -r /home/user2/targetfolder\\ */\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n
    \n
  • 替换sudo rm -rls -d. 这将列出您的参数中包含的所有项目,并允许您事先验证将删除的内容(感谢 cocomac 的提示)。
  • \n
  • ls列出您希望删除的内容后,按\xe2\x86\x91调用该命令并更改ls -dsudo rm -r
  • \n
\n

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

\n