You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS/Ubuntu Bash中如何区分命令输入与命令输出?

我之前在处理大量命令输出的时候也头疼过找不到输入的命令在哪,试了几个实用的方法,不管是CentOS还是Ubuntu的bash环境都能用,分享给你:

方法1:高亮你的命令输入(修改提示符)

最简单的方式是通过修改PS1环境变量,给命令输入区域设置和输出不同的颜色。比如把提示符设为绿色,输入的命令设为黄色:

# 临时生效,重启终端后失效
export PS1="\[\e[32m\]\u@\h:\w\$\[\e[33m\] "
  • \[\e[32m\]:开启绿色显示提示符
  • \u@\h:\w\$:默认的提示符内容(用户名@主机名:当前路径$)
  • \[\e[33m\]:切换到黄色,后续输入的命令都会是黄色
  • 输出会保持终端默认的白色,刚好和黄色的命令区分开

如果要永久生效,把上面的命令添加到你的~/.bashrc文件末尾,然后执行source ~/.bashrc即可。

方法2:给命令输出加缩进+高亮命令

如果输出内容特别多,缩进是最直观的区分方式。可以写一个简单的bash函数来包装命令:

# 把这个函数加到~/.bashrc里
run() {
    # 用红色高亮显示要执行的命令
    echo -e "\e[31m$*\e[0m"
    # 执行命令,给输出每行加4个空格缩进
    "$@" | sed 's/^/    /'
}

用法示例:

run ls -l /etc

效果:红色的命令行,后面跟着缩进4格的输出,一眼就能分清哪行是你输入的命令,哪部分是输出。

方法3:给命令和输出设置不同颜色

如果喜欢用颜色区分,可以让命令和输出各用一种颜色,比如命令用蓝色,输出用青色:

# 同样加到~/.bashrc
color_run() {
    echo -e "\e[34m执行命令: $*\e[0m"
    "$@" | awk '{print "\033[36m" $0 "\033[0m"}'
}

这样执行color_run df -h时,命令行会是蓝色,所有输出内容都是青色,和默认的终端文字完全区分开。

方法4:自动高亮所有命令(进阶玩法)

如果不想每次都敲函数前缀,可以用bash的DEBUG陷阱,自动在执行每个命令前高亮打印命令:

# 临时生效,永久生效就加到~/.bashrc
trap 'echo -e "\e[35m> $BASH_COMMAND\e[0m"' DEBUG

这个陷阱会在每个命令执行前,用紫色打印出命令内容(带>前缀),然后再执行命令输出结果。如果觉得内部命令(比如cd、echo)也被高亮太烦,可以加个过滤:

trap '[[ ! $BASH_COMMAND =~ ^(cd|echo|pwd)$ ]] && echo -e "\e[35m> $BASH_COMMAND\e[0m"' DEBUG

这样就只会高亮外部命令,内部命令不会额外打印。

小补充:ANSI颜色码参考

常用的前景色码:

  • 30: 黑色
  • 31: 红色
  • 32: 绿色
  • 33: 黄色
  • 34: 蓝色
  • 35: 紫色
  • 36: 青色
  • 37: 白色
  • 0: 重置颜色(回到终端默认)

你可以根据自己的喜好调整颜色组合~

内容的提问来源于stack exchange,提问作者WesternGun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:22:32