问题描述
大多数时候,当我在某个目录中并从命令行运行某个作业时,我喜欢这样做:
ls -ltr | tail -3
确认我期望的文件确实存在。
为了避免输入太频繁,我在 ~/.bach_profile
中添加:
alias ltr="ls -ltr | tail -3"
Bash
doesn't accept
参数,但我们可以写
ltr() {
ls -ltr "${1}" | tail -3
}
在(说)下载一些东西之后,这使得输入 ltr ~/Downloads
成为可能。
但我不能再只输入 ltr
。我现在必须输入 ltr .
。
(我在 macOS 终端中,以防万一。)
解决方法
您可以像这样使用默认参数值:
ltr() {
ls -ltr "${1:-.}" | tail -3
}
如果缺少 .
,它将使用 ls -ltr
作为 $1
的参数。
有了这个,你可以像这样使用:
ltr ~/Documents
ltr ~/Downloads
ltr
Please read this about parsing the output of ls
这并不完全符合您的要求,但在这种情况下,最好使用它:
ltr() {
ls -ltr "$@" | tail -3
}
"$@"
扩展为传递给 ltr
的所有参数,因此您可以传递多个参数...或根本不传递,并且您传递的任何参数都会传递给 ls -ltr
.