我使用的是 Ubuntu-Mate 20.04,我丢失了主文件夹的大部分内容。我认为这可能是由于错误地使用了 sudo 的 \xe2\x80\x9crm\xe2\x80\x9d 命令,但不确定是否可能是其他原因。
\n我解释一下:我试图删除 /home/user2 上的文件夹( \xe2\x80\x9ctargetfolder (something)\xe2\x80\x9d )及其内容,同时以 user1 身份登录(user1 具有 sudo 权限)。所以我做了:
\nsudo rm -r /home/user2/targetfolder (something)/ \n
Run Code Online (Sandbox Code Playgroud)\n起初 rm 由于括号给出了一些错误消息 - 我的意思是:( ) -,所以我用 * 替换了文件夹 \xe2\x80\x99s 名称的一部分,然后执行了:
\nsudo 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这个命令
\nsudo rm -r /home/user2/targetfolder */\n
Run Code Online (Sandbox Code Playgroud)\n会尝试删除一个/home/user2/targetfolder
可能不存在的文件夹,然后删除匹配的项目*/
。这意味着当前工作目录中存在所有非隐藏目录(及其内容)。如果当前工作目录是 的主目录user1
,那么是的,这就是会受到影响的目录。
错误在于没有逃离空间。空格是分隔参数的分隔符。在这里,您提供两个参数(选项旁边-r
)/home/user2/targetfolder
和 */
,其中后者由 shell 扩展以匹配所有非隐藏子目录(例如Documents/
、Videos/
等)
引用文件名模式,或转义空格,如
\nsudo rm -r "/home/user2/targetfolder "*/\n
Run Code Online (Sandbox Code Playgroud)\n或者
\nsudo rm -r /home/user2/targetfolder\\ */\n
Run Code Online (Sandbox Code Playgroud)\n将包含/home/user2/targetfolder (something)/
和其他匹配的文件夹(如果有)。
一般来说,正如您所经历的那样rm -r
,这样使用 , 然后与 结合使用sudo
是极其危险的。不要立即执行此类命令,而是先进行验证。
sudo rm -r
为ls -d
. 这将列出您的参数中包含的所有项目,并允许您事先验证将删除的内容(感谢 cocomac 的提示)。ls
列出您希望删除的内容后,按\xe2\x86\x91调用该命令并更改ls -d
为sudo rm -r
。如果必须删除单个目录,请完全避免使用通配符。使用制表符补全。这样,您就可以确保在命令行中正确输入了特定名称。
\n