【发布时间】:2016-04-24 16:30:07
【问题描述】:
我一直在阅读 Unix 编程环境 并进行了包含的练习。我知道这项工作有些过时,但我发现它是一个很好的资源。
在第一章中,有一些练习向读者展示了与终端的交互并被要求解释交互。这是一个例子:
练习 1-1。解释发生了什么
$ date\@
在正文中,解释了@ 将被解释为行终止字符。我系统上的等价物是^u,但我可以用stty kill @模拟书中的终端。
根据阅读内容和我的直觉,我希望调用 date\@ 会返回以下内容:
date@: command not found
文字支持这个推理:
如果您在
#或@前面加上反斜杠\,则它失去了特殊含义。所以要输入# 或@,请输入\#或\@。
我的问题是我什至无法在终端中输入示例。只要我输入@,该行就会被删除。反斜杠似乎没有转义行终止字符。
假设我对转义字符应该如何与终端控制字符交互是正确的,我该如何设置我的系统(Ubuntu GNU/Linux)来模拟文本中的行为?
这是另一个类似的练习:
练习 1-2。 大多数 shell(尽管不是第 7 版 shell)将
#解释为引入注释,并忽略从#到行尾的所有文本。鉴于此,假设您的擦除字符也是#,请解释以下脚本:
$ date
Mon Sep 26 12:39:56 EDT 1983
$ #date
Mon Sep 26 12:40:21 EDT 1983
$ \#date
$ \\#date
#date: not found
$
由于我的擦除字符设置为#,因此无法复制此成绩单。反斜杠似乎没有转义擦除字符。
【问题讨论】: