Linux终端转义enter,linux终端里为什么不能直接输入转义序列?

很久很久以前……

很久很久以前,电脑操作员只能通过键盘,在黑漆漆的终端中输入命令,跟那些隐藏在屏幕之后的神灵,哦不,计算机,对话。

他们很快发现,有些字符不能打出来,比如换行,怎么在字符串表示一个换行呢?换行符打不了呀,毕竟键盘那么小,如果给换行符一个键,那么同样也得给回车符、制表符或者什么鬼符留一个键。这么下来键盘就只有章鱼能用啦。

另外这些换行符在终端界面上怎么显示出来呢?当时的终端屏幕也就能支持ASCII字符,很难拿出一个稀奇古怪的符号来表示换行。

还好聪明的操作员们发明了一种机制,就是用\作为转义字符。这么一来,键盘上的键就可以跟\组合起来用了,比如\t,\r。妈妈再也不用担心我没字符用了!操作员们给这种字符起了个好听的名字,叫转义字符。

顺便说下,转义字符的英文是escape character,现在知道为什么会有ESC键吧。

当然,转义字符也带来了许多问题(哼,都怪你们这些耍小聪明的操作员们!)。比如,你怎么区分\n到底是一个转义字符,还是两个字符?这个问题,待会我们再来谈谈。

操作员们快乐了一段时间……

过了一段无忧无虑的日子之后,操作员发现,他们需要对终端进行更多的操作,比如按一下键就能清空终端的游戏界面,这样就不会被老板抓现行了。

当然这个问题可不能求助于造键盘的厂商……这样的需求一定会被嘲笑的,何况那时键盘厂商造的键盘,有些连Ctrl都没有……于是当时的操作员用起了老办法。嗯,就是使用更多的转义字符。他们制定了更多转义字符,其中有一个系列叫做ECMA-48 CSI sequences。那本书所说的ESC[2J,就是定义在这个系列中。

现在,man console_codes, /ECMA-48 CSI sequences搜索这个系列的字符,你就能看到这个用于清屏的转义字符了。

顺便说下,你的书的记载有误,j应该是大写的J才对。

怎么区分转义字符和非转义字符?

这个要看具体的上下文。

在一般情况下,终端会把接收到的字符作为非转义字符处理,比如输入\n,终端会认为你输入的是两个字符,而不是一个回车。这样在输入正常的内容时,就不用经常挂念着要进行反转义什么的。

不过还是有特殊的情况的。

怎么在终端中输入转义字符串?

一种常用的方法是,用echo来输出转义字符。

对于你的问题中,因为\e表示ESC,那么可以通过echo -e '\e[2J'来输出转义字符ESC[2J。试试看会发生什么事……

想直接在终端中输入?关键是要让终端把ESC当做一个普通的字符,而不是特殊的控制字符。还好有一个Ctrl+v能把它紧邻的字符作为普通字符输入。

先Ctrl+v,再ESC,接着[2J,最后按下换行,看看效果~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值