不使用 - ( * |

Iva*_*kov -6 command-line bash hidden-files ls

是否可以在不使用上述字符的情况下列出隐藏文件?这个装置不使用任何选项或*通配符以及一些其他字符(例如,这是容许ls -als -d.!(|.)echo .*等等)。

l0b*_*0b0 7

find . 将列出所有文件,包括隐藏文件。

推论:有人认为通过将单个字符甚至可能是脚本中的命令列入黑名单来教授命令注入是个好主意。这对您学习 shell 是有害的,因为您最终会遇到转义字符依赖 Ubuntu 特定的默认配置之类的黑客攻击,这两者都无法处理特殊文件名

实际上,无论eval出于某种原因想出这个的人都想使用它(这总是*一个糟糕的主意),而不仅仅是直接执行提交的代码或脚本。

循环隐藏文件的绝对最简单的方法是

for file in .*
do
    my_command "$file"
done
Run Code Online (Sandbox Code Playgroud)

* 或者几乎总是如此,以至于您最好在考虑使用它之前阅读并理解有关它的整篇Bash wiki 文章

  • 如果“find”甚至不可用,您必须在极其受限的环境中运行。如果这是任务的一部分,那么您应该在问题中指定它。 (4认同)