Joh*_*ohn 33 command-line bash hidden-files mv
在终端窗口中,我输入:
mv filename ..\.. [Note the wrong slash.]
Run Code Online (Sandbox Code Playgroud)
现在我找不到了。走了。我进行了一些搜索并查看了可恢复的已删除文件。没有。噗。适合我之前使用 Windows 机器。
有谁知道它可能去了哪里?
hee*_*ayl 71
它无处可去,它在当前目录中。它已重命名为....
(四个点)。
由于任何.
前面有 的文件名都被视为隐藏文件,因此它已成为隐藏文件。所以,如果你这样做ls
,你就不会找到它。像往常一样,您需要使用-a
(或-A
)选项ls
来查看隐藏文件,即ls -a
(或ls -A
)来查看它。
让我把它分解一下,你跑了mv filename ..\..
,前两个点如果是../
,则表示父目录,但你使用了反斜杠..\
,表示 shell 转义下一个字符,但点.
对 shell 没有特殊意义。因此,它将把它当作一个文字.
,最后一个.
也被添加,所以你有四个点....
作为文件名。
要恢复到以前的(原始)名称,请运行mv .... filename
.
Eli*_*gan 13
运行mv .... filename
以将其重命名。(mv ..\.. filename
也可以,但这\
是多余的——就像你原来的命令一样。)
.
和..
条目存在于每个目录,并分别指的是“当前”和“父”目录。但与 Windows 不同的是,超过两个点的序列没有任何特殊含义。尽管这是不寻常的,但您可以完全自由地使用完全由点组成的名称命名普通文件,只要它至少有三个点长。\
用作转义字符,确保外壳程序按字面意思处理以下字符,而不是赋予其特殊含义。该.
字符在 shell 中没有特殊含义(特别是,shell 不负责使.
和..
条目工作)。因此,在您的命令中,\.
相当于.
..
. 由于....
以 开头.
,在ls
没有-A
or-a
标志的情况下运行不会显示它。