如何修改bash的st函数,使其同时修改终端标题并执行指定命令
改进
st函数实现标题修改+命令执行一体 改进后的st函数代码
function st() { if [[ -z "$ORIG" ]]; then ORIG=$PS1 fi local title="$*" PS1="${ORIG}\[\e]2;${title}\a\]" # 执行传入的命令,保留参数的原始格式 "$@" # 可选:命令执行完毕后恢复原始终端标题,取消下方注释即可 # PS1="$ORIG" }
关键修改说明
- 新增
local title="$*":把所有传入的参数统一作为标题内容,和原函数逻辑保持一致。 - 使用
"$@"执行命令:确保命令的参数(比如带空格的文件名、特殊选项)能被正确解析,避免参数拆分错误。 - 可选的标题恢复:如果希望命令执行完成后自动把终端标题改回原来的样子,取消最后一行
PS1="$ORIG"的注释即可。
使用示例
执行以下命令,终端标题会立即变为yarn transportation start,同时自动运行对应的命令:
st yarn transportation start
如果要执行带特殊参数的命令,比如:
st grep "error log" app.log
标题会设为grep "error log" app.log,同时正确执行grep "error log" app.log命令。
内容的提问来源于stack exchange,提问作者Piyush Chauhan
相关产品推荐
相关产品推荐

