5 个有用的 Linux Shell 转义序列
创始人
2024-03-02 14:41:57
0

如何在你的 Bash 终端使用这些秘密代码,请下载我们新的 Linux 元字符速查表。

我最近在读一篇 Don watkins 关于 Shell 元字符的文章。他的文章让我想到了你可以用 shell 输入做的所有的奇怪事情。虽然我可能还没有发现极端的情况,但是我经常发现 shell 转义序列,比如 \b\t\f 非常有用。

转义序列是一种特殊类型的终端输入。它们旨在让你能够输入物理键盘上没有的字符或触发事件。下面是我最喜欢的 Bash shell 的转义序列。

1、退格符

你可以在命令中输入若干退格符,以便在命令执行时触发。例如这个命令,你可能会认为它的输出是ab,但是看一下真正的输出:

$ echo a$'\b'b
b

从技术上来说,Shell 确实输出了 ab(你可以通过在命令后面附加 | wc -m 来确认这一点),但是全部输出的一部分是 \b 退格事件。退格键在输出 b 字符之前删除了 a 字符,因此输出只有 b 字符。

2、换行符

换行符是一个让你的 Shell 转到下一行的第 0 列的信号。这一点很重要,当使用像 printf 这样的命令时,它不会像 echo 那样在输出的末尾自动添加换行符。看看不带 \n 换行符的 printf 语句和带换行符的 printf 语句之间的区别:

$ printf "%03d.txt" 1
001.txt$
$ printf "%03d.txt\n" 1
001.txt
$

3、换页符

\f 换页信号就像换行符,但是却并不是返回到第 0 列。下面是一个使用换页符而不是换行符的 printf 命令:

$ printf "%s\f" hello
hello
     $

你的 Shell 提示符出现在下一行,但不是在下一行的行首。

4、制表符

有两种制表符转义序列:水平制表符 \t 和垂直制表符 \v。水平制表符如下所示:

$ echo a$'\t'b
a     b

理论上,垂直制表符是相同的原理,但是在垂直空间中。然而,在大多数控制台上,一行的垂直间距是不可变的,所以它通常看起来很像一个换页符:

$ echo a$'\v'b
a
 b

5、Unicode

Unicode 标准中有很多可用的字符,而你的键盘只有大约 100 个键。在 Linux 上有几种方法可以输入 特殊字符,但是将它们输入到终端的一种方法是使用 Unicode 转义序列。这个转义序列以 \u 开头,后跟一个十六进制值。你可以在文件 /usr/share/X11/locale/en_US.UTF-8/Compose 中找到许多 Unicode 值。你也可以在 https://www.Unicode.org/charts/ 查看 Unicode 规范。

这对于输入像圆周率 π(圆的周长与直径之比)等常见符号非常有用:

$ echo $'\u03C0'
π

还有许多其他的符号和字符:

$ echo $'\u270B'
✋
$ echo $'\u2658'
♘
$ echo $'\u2B67'
⭧

有盲文符号、音乐符号、字母、电气符号、数学符号、表情符号、游戏符号等等。事实上,有如此多的可用符号,有时你需要 \U(注意大写字母)Unicode 转义序列来访问高区的 Unicode。例如,这张红心 5 的扑克牌只出现在 \U 转义序列中:

$ echo $'\U1F0B5'
?

浏览一下 Unicode 规范,找到适合你的位置,并使用 \u\U 来访问你需要的所有特殊符号。

除此之外

Bash Shell 的手册页中列出了 18 个转义序列,我发现其中一些更有用。我已经在本文中介绍了我最爱的几个,Don Watkins 也谈到了他在文章中最常用的元字符,但是还有更多待发现。有很多方法可以对字母和数字、子 Shell、数学方程等进行编码。为了更好地了解 Shell 可用的元字符,可以下载我们的 元字符速查表,你可以在使用计算机上最强大的应用程序 —— Linux 终端时将它放在手边。


via: https://opensource.com/article/23/2/escape-sequences-linux-shell

作者:Seth Kenlon 选题:lkxed 译者:zepoch 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

Blessed库中如何渲染...
在Blessed库中,可以使用 text 方法来渲染终端上的ans...
2024-12-22 17:00:12
避免使用转义序列,并在Ja...
在JavaScript中,我们可以使用模板字符串(template...
2024-12-16 18:31:17
避免使用转义序列的方法是&...
以下是一个示例代码,演示如何使用getchar()函数来避免使用转...
2024-12-16 18:30:28
ascii转义序列显示问题...
如果在终端或控制台中使用ascii转义序列时发现无法正确显示,可以...
2024-11-11 08:01:20
API调用中的文字字面值中...
使用双反斜杠(\)来转义字符。例如,如果要在字符串中包含引号,则应...
2024-09-07 12:02:08
5 个有用的 Linux ...
如何在你的 Bash 终端使用这些秘密代码,请下载我们新的 Lin...
2024-03-02 14:41:57

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...