如何将默认参数添加到 `Bash` 函数?

How can I add a default parameter to a `Bash` function?

大多数时候,当我在某个目录中并 运行 从命令行执行某些工作时,我喜欢这样做:

ls -ltr | tail -3

确认我期待的文件确实存在。

为了避免输入太频繁,我添加到我的 ~/.bach_profile:

alias ltr="ls -ltr | tail -3"

Bash doesn't accept 参数,但我们可以写

ltr() {
    ls -ltr "" | tail -3
}

在(比如说)下载了一些东西之后,这使得输入 ltr ~/Downloads.

成为可能

但我不能再只输入 ltr。我现在必须输入 ltr ..

如何向 Bash 函数添加默认参数?

(我在 macOS 终端中,以防有所不同。)

您可以像这样使用默认参数值:

ltr() {
   ls -ltr "${1:-.}" | tail -3
}

如果缺少 </code>,它将使用 <code>. 作为 ls -ltr 的参数。

有了这个你可以这样使用:

ltr ~/Documents
ltr ~/Downloads
ltr

Please read this about parsing the output of ls

这并不完全符合您的要求,但在这种情况下,使用它可能会更好:

ltr() {
    ls -ltr "$@" | tail -3
}

"$@" 扩展为传递给 ltr 的所有参数,因此您可以传递多个参数...或 none,无论您传递什么,都会传递至 ls -ltr.