有点晚了,“如何避免在终端中打开无类型文件”这个问题有点老了。然而:
上述解决方案涉及改变现有规则,这些规则可能产生不必要的副作用。我发现最简单的方法是利用无类型文件的现有规则并更改文件权限以获得我想要的结果。
具体来说:关闭文件上的可执行位,因为这是告诉文件服务打开终端的“chmod -x filename”,其中filename是文件名。
这可以在某种程度上自动化(谨慎):在我的情况下,我在机器上有很多README文件。我可以使用“find”查找所有“README”文件。然后使用“awk”构造一个命令来删除所有这些上的可执行位,如下所示:
find /$HOME -iname 'README' | awk '{ print "chmod -x " $0 }'
如果要检查哪些文件将被更改,请在终端中输入:输出将包含每个README的列表,其中包含以下内容:
chmod -x //Users/jimpsmith/things/README
并且要更改所有这些权限执行所有这些行,通过将它们按照以下方式进行bash:
find /$HOME -iname 'README' | awk '{ print "chmod -x " $0 }' | bash
只要注意过于宽松地使用通配符,并发现你不小心从一些错误匹配的可执行文件中删除了可执行文件位。
一种更简单的方法就是跑步
find /$HOME -iname 'README' -exec chmod -x '{}' \;`
或(看看会发生什么)
find /$HOME -iname 'README' -exec echo chmod -x '{}' \;`