当前位置: 首页 > 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.jsqmd.com/news/1134602/

相关文章:

  • fdisk 分区实战:1块20GB磁盘创建3主1扩2逻辑分区完整流程
  • Jboss安全配置实战:从弱口令防护到网站根目录加固
  • Windows 10 家庭版 Administrator 账户救急:PE 环境下 3 步解锁与密码重置
  • Linux /proc/<pid>/fd 实战:3种方法实时捕获进程标准输出与错误流
  • glibc 2.31 源码升级风险规避:3个关键备份与回滚策略(附CentOS 7实测)
  • Windows 10 22H2 外置SSD原生安装:diskpart + DISM 命令7步部署,跨电脑启动实测
  • STM32驱动WS2812B灯带:SPI+DMA实现高效灯光控制
  • Windows 11/10 系统配置工具 msconfig 的5个高级调试功能实战
  • Linux 日志分析实战:grep 组合 awk/sed 实现 5 类复杂多关键字过滤
  • CentOS 7.6 Swap 分区动态调整:从 1.2G 扩容至 2.2G 的 8 步操作实录
  • YOLO目标检测演进史:从v1到v13,如何解决速度、精度与部署难题
  • 属性 sdn的策略自动生成方案
  • LTC6903数字控制振荡器与STM32集成指南
  • Deepin Boot Maker:5分钟制作Linux启动盘的开源神器
  • Spring Boot集成Google Authenticator实现TOTP两步验证实战
  • r77-rootkit Shellcode无文件部署:反射式DLL注入与内存驻留技术详解
  • JDK系列15:JDK21虚拟线程正式版深度实战|彻底解决Java高并发IO瓶颈
  • statsmodels 0.14.0 seasonal_decompose 实战:加法与乘法分解的3步核心差异
  • Linux chmod 755 与 644 权限实战:Web服务器部署的3个关键场景配置
  • Wand-Enhancer完整指南:快速免费解锁WeMod专业版功能的终极解决方案
  • 为什么文件明明是 UTF-8,PowerShell 里还是中文乱码?一篇讲透 Codex、Claude 等 AI 编码工具下的排查与修复
  • Windows 10/11 硬盘分区变 RAW:3 步数据抢救与 chkdsk /f 修复实战
  • AndroidKiller 1.3.1 + IDA Pro 6.8 逆向实战:3种方法破解 Native 层 CrackMe
  • 前缀和题解:多加一个哨兵,少掉一堆边界判断
  • 受到启发,写了一个验证输入的简易框架
  • 银河麒麟V10 SP1 密码策略配置:PAM cracklib 模块 12 个参数详解与实战
  • 统信UOS V20 自启动管理优化:5步禁用非必要服务,开机速度提升30%
  • 2026玉林黄金回收白银回收铂金回收旧料回收怎么选?五家高实价铂金白银线下门店测评清单 + 联系方式
  • WinBtrfs终极指南:如何在Windows上无缝读写Linux Btrfs文件系统
  • DeepL Chrome扩展:5分钟实现专业级浏览器划词翻译的完整指南