Bash 对 ls 绝对路径的函数(但行为类似于 ls)

Bash function to ls absolute path (but behaves like ls)

我正在尝试编写一个 bash 函数,它遵循与 ls 相同的行为,但它显示完整路径而不是相对路径。到目前为止我写的是以下内容:

ls_abs()
{
    if [ -z "" ]
    then
        ls -d -1 $PWD/*
    else
        ls -d -1 $PWD/
    fi
}

调用 ls_abs 似乎工作得很好,但是当我尝试使用通配符参数调用它时(例如 ls_abs thisdir/that*/anotherdir/*.log),由于某种原因它只会输出一行。有人可以帮助我了解我在这里做错了什么吗?

shell 在调用 ls_abs 函数之前自动扩展你的通配符表达式,所以它接收多个参数,而 </code> 是第一个,所以你看到只有一行输出。 </p> <p>您在这里有两个选择:</p> <ol> <li>将通配符参数放在引号中</li> </ol> <pre><code>ls_abs "thisdir/that*/anotherdir/*.log"

  1. 使用$@处理所有传递的位置参数。
ls_abs() {
  ls -d -1 "$@"
}
ls_abs thisdir/that*/anotherdir/*.log