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

bash脚本运行时按ENTER键触发清屏的实现方法

在Bash脚本中捕获ENTER键触发清屏

完全可以实现。核心是修改终端的输入模式,让脚本能实时捕获按键,而非等待回车缓冲。以下是修改后的完整脚本:

#!/bin/bash

# 保存终端原始配置,脚本退出时自动恢复,避免终端状态异常
trap 'stty "$original_stty"; exit' EXIT
original_stty=$(stty -g)

# 切换终端到非规范模式:关闭输入缓冲、关闭回显,让按键实时被读取
stty -echo -icanon time 0 min 0

# 后台启动按键监听循环
while true; do
    # 读取单个字符
    read -n 1 key
    # 判断是否为ENTER键(ASCII 13,对应\r)
    if [[ "$key" == $'\r' ]]; then
        clear
    fi
done &

# 原有的输出逻辑
while true; do
    sleep 1
    echo -n '.'
done

关键部分说明:

  • 终端状态保存与恢复:stty -g导出当前终端设置,trap确保脚本退出时恢复,防止退出后终端无法正常输入。
  • 非规范模式设置:-icanon关闭规范输入模式,取消按键缓冲;time 0 min 0让read不会阻塞等待输入;-echo关闭输入回显,避免按ENTER时出现多余的换行符。
  • 按键监听:后台循环用read -n 1读取单个字符,捕获到ENTER键($'\r')时执行clear清屏。

使用说明:

  1. 将脚本保存为dot_printer.sh,赋予执行权限:chmod +x dot_printer.sh
  2. 运行脚本:./dot_printer.sh
  3. 按ENTER键即可清屏,脚本会继续输出点;按Ctrl+C退出,终端自动恢复正常状态。

如果遇到ENTER键不触发的情况,可以尝试将判断条件改为[[ "$key" == $'\n' ]],部分终端环境下ENTER对应\n而非\r。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 07:52:47