linux – find命令不起作用:“非法选项 – n”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – find命令不起作用:“非法选项 – n”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1642字,纯文字阅读大概需要3分钟。
内容图文
![linux – find命令不起作用:“非法选项 – n”](/upload/InfoBanner/zyjiaocheng/958/d7955e7d3a0e41938cc4ee9b6caea568.jpg)
我的命令看起来像这样
find $PATH -name '$FILE.log' > /tmp/file-list.txt
并且我不断收到一条错误消息
find: illegal option -- n
我在这做错了什么?
解决方法:
从那个错误信息,我敢打赌
>尽管你的“linux”标签,你可能不在基于Linux的系统上,因为基于Linux的系统上常见的查找实现不会对未知选项的错误使用该措辞
> $PATH变量未设置(表示您运行的shell可能是Bourne或Korn shell(AT& T实现)).
这种非法选项是传统Unix查找实现中常见的措辞.
在使用类似-name的谓词之前,这些传统实现还需要至少一个文件参数.
否则,如果它是find之后的下一个参数,则-name将被视为选项(而不是谓词).
-n(-name中的第一个选项 – -n -a -m -e的缩写)不是有效的查找选项.
所以很可能,$PATH的扩展根本没有任何争论.
在以下情况下会发生这种情况:
> $PATH未设置
> $PATH设置为空字符串
> $PATH仅包含空格,制表符或换行符(默认值$IFS).
由于$PATH是一个特殊变量,包含一个冒号分隔的目录列表,用于查找可执行文件,包括find命令,我们可以排除3,最可能是2(除非当前目录中有find命令),否则你就是得到一个find:命令找不到错误.
当$PATH未设置(上面的1)时,在execvp()中(通常由env或find的-exec谓词使用)和某些shell(包括通常在那些传统操作系统上找到的Korn和Bourne shell),find将是通过在默认搜索路径中搜索找到(像bash这样的shell不会这样做但是在启动时取消设置时将$PATH设置为默认值).
在这里,我想你想:
>使用与$PATH不同的变量名来存储目录名(如$dir)
>一定要引用你的变量
>如果您想要默认为当前目录,如果$dir为空或未设置,请使用${dir: – .}.
>(也许还要调查为什么$PATH变量未设置,这是非常不寻常的)
所以:
dir=some-dir
find "${dir:-.}" -name "$FILE.log"
请注意,它假定$dir不以 – 开头 – 并且不是查找运算符(如!,(,))并且$FILE不包含通配符(*,?,[…])(注意在$FILE.log周围使用双引号而不是单引号,因为我假设您要查找名为something.log的文件,其中某些内容是$FILE,而不是名为$FILE.log的文件.
内容总结
以上是互联网集市为您收集整理的linux – find命令不起作用:“非法选项 – n”全部内容,希望文章能够帮你解决linux – find命令不起作用:“非法选项 – n”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。