openEuler 通常会安装在一些内网设备上,并且有些命令行工具也不方便安装。 本文将会以这些限制为前提,记录一些惯用的配置。

为每行 stdout 打印时戳

一般来说直接安装 moreutils,然后 <cmd> | ts 就能为标准输出的每行打印其输出的时戳。 但是 openEuler 仓库里暂时没有,手动安装的话需要解决一些麻烦的依赖。

所以我是暂时用 alias 简单处理一下:

alias ts='while IFS= read -r line; do printf "[%(%F %T)T] $line\n"; done'

效果大概是:

$ (echo foo; echo bar) | ts
[2025-03-10 22:37:42] foo
[2025-03-10 22:37:42] bar

配置 Bash 命令提示符

改变 Bash 命令提示符的输出:

  • 完整工作路径
  • 当前时间
  • 当前 Git 分支(如果有)
parse_git_branch() {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1='[\[\e[31m\]\D{%F} \t\[\e[0m\] \u@\h \[\e[32m\]\w\[\e[33m\]$(parse_git_branch)\[\e[0m\]]$ '

效果大概是:

[2025-03-10 23:03:27 root@localhost ~/project/repo (main)]$ echo foo
foo

其实要输出 Git 分支的话,是更推荐使用 git-prompt.sh 的。 但考虑到内网环境的限制,本文还是选择了更通用的配置方式。