【问题标题】:escapeshellarg without quotes to allow wildcards/globbing?不带引号的 escapeshellarg 允许通配符/通配符?
【发布时间】: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


【解决方案1】:
$arg = escapeshellarg('fol der').'/*.ext';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多