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"
- 使用
$@
处理所有传递的位置参数。
ls_abs() {
ls -d -1 "$@"
}
ls_abs thisdir/that*/anotherdir/*.log
我正在尝试编写一个 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"
- 使用
$@
处理所有传递的位置参数。
ls_abs() {
ls -d -1 "$@"
}
ls_abs thisdir/that*/anotherdir/*.log