中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » 何为转义,转义是一个怎样的过程
作者:
标题: 何为转义,转义是一个怎样的过程 上一主题 | 下一主题
komafd2
初级用户




积分 53
发帖 20
注册 2007-6-8
状态 离线
『楼 主』:  何为转义,转义是一个怎样的过程

转义字符不仅仅将与其相关的特定字符串转义并替换为特定字符串,而且自身也会被“脱逸”。而且类似于C语言中的转义字符"\",双%会转义并脱逸为单%,四%则脱为双%。

这里的转义不太理解,
还有转义字符有那些 ^这个取消字符转义的符号,也是转义字符吗?
请前辈赐教

2008-2-29 23:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 2 楼』:  

我的理解:所谓的转义字符,就是将一个本来具有特殊意义的字符的特殊意义去掉,而以它本身的面貌呈现。

例如,在cmd命令行中,“| > <”这些符号表示管道操作,但现在我想通过echo显示一个管道符号给用户,例如我照下面这样写:

echo 2>1 is true.

由于这里的>号默认是作为管道操作符出现的,直接在cmd下执行这个命令会显示如下:

  Quote:
d:\work\dos>echo 2>1 is true
is true

很显然,这不是我们需要的结果,我们需要将>号默认的管道操作这个特殊意义去掉,那么我们用如下的命令就可以了:

  Quote:
d:\work\dos>echo 2^>1 is true
2>1 is true



   此帖被 +1 点积分    点击查看详情   
评分人:【 komafd2 分数: +1  时间:2008-3-2 13:27




偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2008-3-1 15:29
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 3 楼』:  

楼上的理解有问题
转义,顾名思义
就是将其它的字符转换意义(通常是其后紧跟的字符或字符串)
这有些类似于C语言或正则表达式中的字符"\"

在命令行下
^是转义字符,就是将管道和重定向之类的字符的功能符号转换为可显示符号
%是转义字符,就是将后面的字符的显示特性转换为变量标识
"是转义字符,就是将其间的字符的功能符号转换为可显示符号

转义字符的英文是Escape Character

有时候也翻译为逃逸字符
除了是对Escape的直译之外
还因为它转换其它字符的意义后
自己也逃逸不见了

当然起初的理由来源于ANSI组织的一个输入输出标准
DOS下的驱动程序ANSI.SYS就是这个标准的简单实现
ANSI.SYS 定义了一系列特殊标记
用来改变显示图形、控制光标移动和键的重定义
ANSI.SYS 设备驱动程序支持转义序列的 ANSI 终端仿真
以便控制系统的屏幕和键盘

这些特殊标记均由字符Esc(ASCII码为十六进制的1B)和字符[起始
而Esc就是Escape的缩写
所以这些特殊标记被称为“Escape sequence”
而这个起始的特殊字符就被称为“Escape character”

而以后起到类似作用的字符则大多继续沿用了这个称谓

   此帖被 +25 点积分         点击查看详情   
评分人:【 Climbing 分数: +25  时间:2008-3-2 01:00


2008-3-1 17:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
komafd2
初级用户




积分 53
发帖 20
注册 2007-6-8
状态 离线
『第 4 楼』:  谢谢俩位前辈赐教

看了俩位前辈的解释
觉得clinbing前辈的

转义字符,就是将一个本来具有特殊意义的字符的特殊意义去掉,而以它本身的面貌呈现。 具体指的是^ ,这一点跟qzwqzw前辈的关于^的解释一样

但是对qzwqzw前辈的话有几点还想在请教
在命令行下
^是转义字符,就是将管道和重定向之类的字符的功能符号转换为可显示符号
%是转义字符,就是将后面的字符的显示特性转换为变量标识
"是转义字符,就是将其间的字符的功能符号转换为可显示符号

这里的在命令行下,是说在命令行下只有这三个是转义字符吗?
第二,%  是 将后面的字符的显示特性转换为变量标识 ,
这里的显示特性就是显示字符 (即打什么字符就显示什么字符,对吗)
转换位变量标识,我可以理解为将字符转变为变量名吗?
还有这一句

这些特殊标记均由字符Esc(ASCII码为十六进制的1B)和字符[起始
这句完全不理解,请前辈赐教

以及
这些特殊标记被称为“Escape sequence”

如果这些特殊字符是转义字符的话,那为何前文称为转义字符的英文是Escape Character 后面则成了Escape sequence? 是前辈笔误吗?

[ Last edited by komafd2 on 2008-3-1 at 06:25 PM ]

2008-3-1 18:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 5 楼』:  

楼上的理解还是片面了
转义字符,脱逸字符,逃逸字符是Escape character的不同译法
实际上是完全一样的
至少在DOS领域内

至于4楼算是问道点子上了
在命令行下的转义字符种类取决于对转义字符的理解
通常情况下
我提到的这三个是大家公认的转义字符
其它的一些是则有争议的
比如FOR变量中~,set中的=等

关于%的理解我没有什么需要补充的

至于Escape sequence(通常译为“转义序列”)
它是转义字符+被转义字符的合称
它的具体内容和含义
你只要查找一下论坛ANSI的资料就清除了

   此帖被 +1 点积分    点击查看详情   
评分人:【 komafd2 分数: +1  时间:2008-3-2 13:27


2008-3-1 23:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 6 楼』:  

谢谢qzwqzw兄详细的解释,我原来的理解确实有些片面了,受教了。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2008-3-2 01:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
komafd2
初级用户




积分 53
发帖 20
注册 2007-6-8
状态 离线
『第 7 楼』:  谢谢各位强辈的赐教

谢谢各位前辈的耐心赐教,
看了qzwqzw前辈的解释,似乎更加理解了,再次感谢!

[ Last edited by komafd2 on 2008-3-2 at 01:29 PM ]

2008-3-2 13:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
p308945
初级用户





积分 21
发帖 11
注册 2010-5-9
状态 离线
『第 8 楼』:  

好!不过我还是有些疑惑!

2010-6-27 12:23
查看资料  发送邮件  发短消息 网志  OICQ (895175589)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: