很难在谷歌上搜索特殊字符,这就是我在这里发布的原因。
我最近运行(以 root 身份) a mv /tmp/folder/* /*
when I want to runmv /tmp/folder/* ./
大错误!
东西坏了!很多文件被混淆并放在奇怪的地方,没有一个正常的 unix 命令(ls、dir、cat 等)起作用,一旦你注销,你就不能 ssh 重新登录——它会给你一个提示,但不接受旧密码。
运行ls /*
告诉我它在/
. 如果我试图绘制平行线,那么mv
应该简单地将文件移动(或复制?)到/
. 相反,发生了非常奇怪的事情,我只是好奇到底发生了什么。
更多信息:/tmp/folder 中的文件是从 windows 机器传输过来的,命名为 file (#).txt,其中 (#) 是最多两位数字,文件和括号之间有一个空格。有大约 40 个这样的文本文件。
该mv
命令采用一个参数列表,这些参数可能是文件或目录。如果最后一个参数是一个目录,则所有其他参数都将移动到该目录中。
在您的情况下,mv /tmp/folder/* /*
扩展为mv <the list of files in /tmp/folder> <the list of files in />
. 因此,正如您可能猜到的那样,其中的所有文件/tmp/folders/
以及除/
最后一个之外的所有文件都移到了由/*
(可能是/var
)列出的最后一个文件夹中。
你描绘mv
的论点是错误的。从手册页:
SYNOPSIS
mv [OPTION]... SOURCE... DIRECTORY
Run Code Online (Sandbox Code Playgroud)
mv
需要很多SOURCE
参数,但只有一个 destination DIRECTORY
。mv
不能将文件移动到多个目的地,否则需要复制它。由于(如您所说)/*
解析为 中的所有目录/
,因此所有目录(最后一个除外)都将添加到SOURCE
列表中,因此您将所有这些目录移动到命令行上最后列出的目录中。
如果您从 LiveCD 启动并安装驱动器,您可能可以消除损坏;根目录中将只剩下一个目录(可能/var
),您可以将所有应该在根目录中的目录移出它