我正在删除我的CentOS服务器上的一些病毒扫描被认为是被感染的文件。
其中两个文件在path中有“..”。 我明白通常..是我们如何导航到父目录。 在这种情况下,这两个点似乎是实际path的一部分。
例如,如果文件的path是:
/var/lib/mysql/mysql/..\bin\cna12.dll
然后我可以cd:/var/lib/mysql/mysql/
如果我然后键入CD并按两次选项卡,我提供了选项自动完成到几个选项。 其中一个select是:
..\bin\cna12.dll
在粘贴的文本中查看(注意在第一列中):
..\bin\cna12.dll help_topic.frm slow_log.CSV columns_priv.frm help_topic.MYD slow_log.frm columns_priv.MYD help_topic.MYI tables_priv.frm
通常情况下,我可以input自动完成build议的几个字符,然后再次按Tab键自动填充完成…但我似乎无法select它,呃,完成自动完成。
没有我做的似乎工作。 包括把它放在引号如:
cd "..\bin\"
请注意,Linux斜杠是这样的“/”,而上面引用的斜线是Windows风格的“\”。
如何cd到bin目录,这样我可以清除该.dll文件?
我不相信这是一个真正的目录,我怀疑这只是一个反斜杠的文件。 尝试直接删除该文件,它应该被删除。
这将工作: rm '..\lib\plugin\amd.dll'
我也不确定在CentOS系统上多聪明的cd ,它只能显示目录的自动完成选项。 其中你将不得不做rmdir '..\lib\plugin\amd.dll' (假设它是空的)。 您可以通过在/var/lib/mysql/mysql/目录中运行ls -l来确定这是否是文件或目录,然后相应地发出正确的命令。
在Linux系统上,反锯齿只是作为文件名中的字符而不是目录分隔符。 因此,在目录上下文中使用它们没有特别的区别。 反斜杠通常用作特殊字符的转义字符。
有两个问题。 你不会在自动完成之前说出你正在input的内容,这会使事情变得复杂,而且你的行为就好像是另一个目录中的文件一样,不是这样的 – 反斜杠并不是unix中的path分隔符,他们只是文件名中的字符。
至于第二,停止尝试cd 。 无论你做什么,Shell都不会自动将该文件名自动完成,因为它不是一个目录。 该文件在. ,就这样吧。
至于第一个,你不能只键入..自动完成,因为这不是一个明确的匹配(目录也包含.. ,因为它必须)。 你不能只键入..\来自动完成,因为反斜杠是一个元字符,它逃脱了后面的那个,shell不知道那是什么 – 它可能是任何东西,或者什么也不是。 但是,如果您键入
rm ..\\
然后打TAB (假设这是bash),那么文件名应该正确填写。 我只是试了一下,它为我工作(在Fedora 22下bash 4.3.42(1))。
这是一个符号链接(符号链接)。
如果您运行命令:ls -l amd.dll
你会看到像这样的东西:
lrwxrwxrwx 1 root root 14 Sep 22 2013 amd.dll – > .. \ lib \ plugin \ amd.dll
这意味着实际的文件位于这里:
/var/lib/mysql/lib/plugin/amd.dll
如果确实是一个目录,请尝试发出cd '..\lib\plugin\amd.dll' (请注意单引号,而不是双引号)
如果是文件,请使用rm '..\lib\plugin\amd.dll' (再次注意单引号)