【发布时间】:2015-03-17 08:04:49
【问题描述】:
我想要像escapeshellarg 这样允许通配符/通配符的东西来做这样的事情:
$arg = escapeshellarg('fol der/*.ext');
echo `ls $arg -t | head -1`
但是,当然引用ls 的参数会禁用通配符。
我猜addslashes 和它的表亲的某种组合可以得到一个很好的转义、未引用的论点(在这种情况下:fol\ der/*.ext)?
我知道glob(),但我喜欢ls -t...
shell_exec("ls * -t | head -1") 的不错和简短的替代品欢迎,如果不是我要求的...
【问题讨论】:
-
没有。没有。转义 shell args 的全部意义在于 PREVENT shell 元字符。没有规定“转义所有元字符,除了 ...”
-
啊,好吧,我认为关键是要转义空格,以避免 bash 中的
for i in *; do rm $i; done之类的东西,我每次都直接进入 :) 编辑:当然!如果您的文件名带有问号,则无法辨别它们的元性... -
鉴于您的要求,我认为用 PHP 编写所有内容会更简单。
-
@OwenBeresford - 我猜是这样,但是仅 PHP 的“按时间排序”似乎是这样的 p.i.t.a. :)
标签: php escaping command-line-arguments glob