我在 Debian 9.3 上安装 Maldet:
cd /usr/local/src
wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
tar -xzvf maldetect-current.tar.gz
cd maldetect-*
bash ./install.sh
在做的时候cd maldetect-*
我得到了:
Bash:太多争论
我尝试这样做cd "maldetect-*"
,但该命令无效。
为什么我无法访问该目录?...
答案1
在 中cd maldetect-*
,与该模式匹配的所有文件和目录都在命令行上展开。您至少拥有该.tar
文件,并且可能在其中找到了一个目录。您一次只能位于一个目录中,因此cd
多个目录是没有意义的。
中cd "maldetect-*"
,没有扩展。命令本身很好,但是您可能没有名称中带有星号的目录,因此它不会找到任何内容cd
。
如果您知道只有一个与该模式匹配的目录,则可以使用cd maldetect-*/
尾随斜杠来要求 shell 仅扩展目录名称。
如果您可以有多个与该模式匹配的目录,则必须找到最新的目录或查看存档内部以查找其中的目录名称。
查找最新的内容在中讨论Bash常见问题解答 003(或者可能Bash常见问题解答 099),可能还有一些现场问题,例如找到最新的文件。多种文件类型限制。
在所有文件名都已知的简单情况下ls -tr | tail -1
可能会起作用,但请参阅
为什么不应该解析 ls(1) 的输出。
当然,查看存档内部应该不会太难,但这也假设存档在很多方面都是“好的”:
$ tar tzf maldetect-current.tar.gz | head -1 | cut -d/ -f1
maldetect-1.6.2