如何为Bash函数设置默认参数,支持无参及指定路径调用?
解决方案
你可以用Bash的参数默认值扩展语法修改函数即可,修改后的写法如下:
ltr() { ls -ltr "${1:-.}" | tail -3 }
语法说明
${1:-.}是Bash的内置参数扩展规则:
- 如果第一个输入参数
$1存在且非空,就使用$1的值 - 如果
$1不存在(无参调用)或者为空,就使用默认值.(代表当前目录)
修改完成后执行source ~/.bash_profile让配置立即生效,之后就可以同时支持两种调用方式:
- 无参调用
ltr:默认查询当前目录下的最新3个文件 - 带参调用
ltr ~/Downloads:查询指定目录下的最新3个文件
macOS 环境注意事项
- 该语法完全兼容macOS自带的Bash 3.2版本,无需额外安装依赖
- 若你使用的是macOS Catalina及更高版本,系统默认Shell已改为Zsh,此时修改
~/.bash_profile不会生效,需要将函数写到~/.zshrc文件中,执行source ~/.zshrc生效即可 - 若需要支持传入多个目录同时查询,可以将函数优化为如下写法,会自动处理所有传入的路径参数:
ltr() { ls -ltr "${@:-.}" | tail -3 }
内容的提问来源于stack exchange,提问作者Sam7919
相关产品推荐
相关产品推荐

