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

问题描述 投票:0回答:1

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

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

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

bash ls
1个回答
0
投票

Shell在调用ls_abs函数之前会自动扩展您的通配符表达式,因此它将接收多个参数,并且${1}是第一个,因此您只会看到一行输出。

您将在此处有两个选择:

  1. 将通配符放在引号中
ls_abs "thisdir/that*/anotherdir/*.log"
  1. 使用$@处理所有传递的位置参数。
ls_abs() {
  ls -d -1 "$@"
}
ls_abs thisdir/that*/anotherdir/*.log
© www.soinside.com 2019 - 2024. All rights reserved.