~/tomcat/apache-tomcat-7.0.90/bin$ sudo chmod 700/tomcat/apache-tomcat-7.0.90/bin/*.sh
chmod: missing operand after ‘700/tomcat/apache-tomcat-7.0.90/bin/*.sh’
我无法理解这个错误。
我应该怎么办?
答案1
您的问题中缺少一个空格字符chmod 700
。打开终端并输入:
sudo chmod 700 ~/tomcat/apache-tomcat-7.0.90/bin/*.sh
上述命令中的波浪符号 ( ~
) 表示当前用户的主目录。请检查当前用户的主目录中是否存在 tomcat 目录。
答案2
shell 中的命令通过特殊字符(通常是空格)分隔成“字”。
chmod
至少需要一个字符串来定义所需的文件模式(权限)更改,以及要对其执行操作的文件的名称。chmod
调用文件对其“操作数”执行操作。这两个参数(模式和操作数)需要用空格分隔,您漏掉了空格。因此,后面的单个“单词”chmod
被视为所需的模式(当然,这不是有效的模式!),而缺少操作数(要对其执行操作的文件)。
请注意,如果文件名包含空格,你需要以某种方式“引用”空间以防止它被解释为一个单独的单词(从而成为一个单独的文件)。
您要更改其权限的文件显然位于您当前的工作目录中(您的提示会显示这一点),因此您无需输入完整路径。您只需键入ls
以获取要运行的脚本的名称,然后键入
chmod 700 name.sh
或者如果你想要改变那里每个文件的模式.sh
,你可以使用 glob,就像你尝试的那样
chmod 700 *.sh
顺便说一下,如果你只需要为文件所有者添加执行权限,你可以使用:
chmod u+x script.sh
答案3
我在编写脚本时遇到了类似的问题,后来注意到 awk 输出显示空白而不是文件名。
前任:
# tail -n 2 /tmp/watchfolder_logs|awk '{print $10}'
robin