当前位置: 首页 > news >正文

Linux echo 命令 5 个高级转义符实战: 退格、 回车的 3 种脚本应用

Linux echo命令高级转义符实战:退格、回车的3种脚本应用

1. 转义符速查与核心原理

在Linux终端交互和脚本编写中,echo -e的转义字符能实现光标控制、文本特效等高级功能。以下是5个关键转义符的速查表:

转义符作用描述ASCII码典型应用场景
\b退格(删除前一个字符)08密码输入掩码、动态修正
\r回车(光标回到行首)0D进度条、单行刷新
\c终止输出(忽略后续字符)-交互式问答控制
\n换行(光标移到下一行首)0A多行文本输出
\t水平制表符09对齐表格数据

工作原理:当启用-e选项时,echo会解析字符串中的反斜杠序列。例如\b实际发送ASCII码08到终端,终端收到后会执行退格操作。需要注意的是:

  • 转义效果依赖终端模拟器的实现
  • 部分老旧设备可能不支持所有转义序列
  • 在管道传递时需确保下游程序能处理控制字符

2. 进度条动态实现技巧

2.1 基础进度条脚本

#!/bin/bash echo -ne "[ ]\b\b\b\b\b" for i in {1..20}; do echo -n "#" sleep 0.1 done echo "] Done!"

关键点解析

  1. -n取消末尾换行
  2. \b连续五次回退到方括号内
  3. 循环输出#形成进度填充

2.2 百分比进度显示

for i in {1..100}; do printf "\rProgress: %3d%%" $i sleep 0.05 done echo

提示:printfecho更适合格式化输出,%3d保证数字始终占3位宽度

2.3 彩色进度条增强版

echo -e "[\E[34m=====\E[0m]" for i in {1..5}; do echo -ne "\r[\E[34m" for j in $(seq 1 $i); do echo -n "="; done echo -ne "\E[0m" sleep 0.5 done

颜色控制语法

  • \E[34m:设置蓝色(34为颜色码)
  • \E[0m:重置颜色属性
  • 可组合使用如\E[34;1m表示亮蓝色

3. 密码输入模拟与文本覆盖

3.1 密码输入掩码效果

echo -n "Enter password: " while IFS= read -r -s -n1 char; do if [[ $char == $'\0' ]]; then break fi password+="$char" echo -n "*" done echo echo "Password length: ${#password}"

参数说明

  • -s:禁止回显
  • -n1:每次读取1字符
  • $'\0':检测回车键(ASCII NUL)

3.2 动态文本覆盖技术

for i in {10..1}; do echo -ne "\rCountdown: $i " sleep 1 done echo -e "\rLaunch! "

3.3 多行文本局部刷新

echo -e "Line1\nLine2\nLine3" sleep 1 echo -ne "\033[2A\r" # 上移2行 echo "New Line1"

光标控制序列

  • \033[2A:光标上移2行
  • \033[K:清除从光标到行尾的内容
  • \033[s/\033[u:保存/恢复光标位置

4. 高级组合应用案例

4.1 终端打字机效果

text="Hello, this is typewriter effect" for ((i=0; i<${#text}; i++)); do echo -n "${text:$i:1}" sleep 0.1 if (( (i+1) % 5 == 0 )); then echo -n "\b\b\b \b\b\b" sleep 0.3 fi done echo

4.2 旋转等待指示器

spin='-\|/' while :; do for i in {0..3}; do echo -ne "\rProcessing ${spin:$i:1}" sleep 0.1 done done

4.3 控制台贪吃蛇游戏框架

#!/bin/bash width=20 height=10 snake="*" food="@" # 初始化画面 clear echo -ne "\033[2J" echo -ne "\033[${height};0H" for ((i=0; i<$width; i++)); do echo -n "-"; done # 游戏主循环(示例) echo -ne "\033[5;5H$snake" echo -ne "\033[3;8H$food"

扩展建议

  • 结合stty设置非阻塞输入
  • 使用tput获取终端尺寸
  • 添加分数计算和碰撞检测
http://www.gsyq.cn/news/1646586.html

相关文章:

  • Windows 10 家庭版 Administrator 账户救急:PE 环境下 3 步解锁与密码重置
  • Jboss安全配置实战:从弱口令防护到网站根目录加固
  • Linux 日志分析实战:grep 组合 awk/sed 实现 5 类复杂多关键字过滤
  • STM32驱动WS2812B灯带:SPI+DMA实现高效灯光控制
  • CentOS 7.6 Swap 分区动态调整:从 1.2G 扩容至 2.2G 的 8 步操作实录
  • Wand-Enhancer完整指南:快速免费解锁WeMod专业版功能的终极解决方案
  • YOLO目标检测演进史:从v1到v13,如何解决速度、精度与部署难题
  • 为什么文件明明是 UTF-8,PowerShell 里还是中文乱码?一篇讲透 Codex、Claude 等 AI 编码工具下的排查与修复
  • 前缀和题解:多加一个哨兵,少掉一堆边界判断
  • WinBtrfs终极指南:如何在Windows上无缝读写Linux Btrfs文件系统
  • DeepL Chrome扩展:5分钟实现专业级浏览器划词翻译的完整指南
  • Windows 11 右键菜单管理:Git Bash 等3类工具的自定义与清理
  • 美加墨世界杯:大模型预测翻车,却在营销与应用场景中大放异彩!
  • Wig/BigWig 格式实战:3步从BAM文件生成UCSC基因组浏览器轨迹
  • Linux Swap 分区实战:CentOS 7.6 下 3 种方法动态调整 1-8GB 交换空间
  • C++和C中const的区别详解
  • Windows与Mac系统锁屏密码重置全攻略
  • 老旧Mac系统重生指南:突破官方限制的硬件兼容方案
  • Windows 11 右键菜单修复:3种方法恢复被折叠的 Git Bash Here 选项
  • Servlet 3.0 与 JSP 2.3 实战:5分钟构建一个带登录验证的简易留言板
  • Spring Boot+Vue课程作业管理系统毕业设计实战指南
  • 从Harness Engineering到Hermes Agent:构建可靠、可进化AI智能体的工程实践
  • 企业微信第三方应用扫码登录 3 步实战:Spring Boot 后端 + 域名配置避坑
  • 锂离子电池过压保护与STM32L031C6系统设计
  • Hadoop Web控制台安全加固实战:绕过官方Simple认证,实现Nginx反向代理密码验证
  • 设计系统 Token 工程化:从定义到 CI 校验的完整链路
  • MetaMask 13.37.0 安全配置进阶:5项关键设置防范钓鱼与资产丢失
  • TongWeb 7.0 连接池配置优化:10个关键参数详解与性能压测对比
  • Windows 11/10系统AutoCAD 2025安装部署与优化全指南
  • MetaMask 13.37.0 安全配置进阶:3项关键设置与5类常见钓鱼攻击防范