Questions tagged «escape-characters»

转义序列,例如终端命令和功能键的编码


2
为什么Ctrl-D(EOF)退出外壳?
您是否通过输入此转义序列从字面上“结束文件”,即,交互shell会话是否像其他文件流一样被shell视为真实文件流?如果是这样,哪个文件? 或者,Ctrl+ D信号只是占位符,意味着“用户已完成输入,您可以终止输入”?

12
从脚本输出中删除控制字符(包括控制台代码/颜色)
我可以使用“脚本”命令在命令行上记录交互式会话。但是,这包括所有控制字符和颜色代码。我可以使用“ col -b”删除控制字符(如退格键),但是找不到删除颜色代码的简单方法。 请注意,我想以常规方式使用命令行,因此不想在此处禁用颜色-我只想从脚本输出中删除它们。此外,我知道可以试一试并尝试找到一个正则表达式来解决问题,但是我希望有一个更简单(更可靠的方法-如果开发我的正则表达式时我不知道有什么代码怎么办?)解决方案。 要显示问题: spl62 tmp:脚本 脚本启动,文件为打字稿 spl62 lepl:ls add-licence.sed build-example.sh提交测试push-docs.sh add-licence.sh build.sh删除许可证.sed setup.py asn build-test.sh delete-licence.sh src build-doc.sh干净的doc-src test.ini spl62 lepl:退出 脚本完成,文件为打字稿 spl62 tmp:cat -v打字稿 脚本从CLT 2011年6月9日上午09:47:27开始 spl62 lepl:ls ^ M ^ [[0m ^ [[00madd-licence.sed ^ [[0m ^ [[00; 32mbuild-example.sh ^ [[0m ^ [[00mcommit-test ^ [[0m ^ [[00; …

5
如何在shell中转义报价?
我在转义bash字符时遇到麻烦。我想在其他用户下运行命令时转义单引号和双引号。出于这个问题的目的,假设我想在屏幕上回显以下内容: 'single quote phrase' "double quote phrase" 如果还需要切换到其他用户,该如何转义所有特殊字符: sudo su USER -c "echo \"'single quote phrase' \"double quote phrase\"\"" 当然,这不会产生正确的结果。





5
如何使终端以粗体显示user @ machine?
我在一些屏幕截图(不记得在网络上的什么地方)中看到终端可以显示[username@machine /]$粗体字母。我也很期待得到这个,因为我总是发现自己在长输出中滚动,很难找到我命令后的第一行。 如何使用户名等加粗或着色?

2
如何避免终端中的转义序列攻击?
阅读CVE-2009-4487的详细信息(这与日志文件中转义序列的危险有关)令我有些惊讶。 引用CVE-2009-4487: nginx 0.7.64将数据写入日志文件,而无需清除不可打印的字符,这可能允许远程攻击者通过包含终端仿真器转义序列的HTTP请求来修改窗口的标题,或者可能执行任意命令或覆盖文件。 显然,这并不是nginx中的安全漏洞,而是终端仿真器中的安全漏洞。 当然,可能cat只是偶然地将日志文件发送到终端,但是grep很常见。less也许可以清理转义序列,但是谁知道什么shell命令不会更改转义序列... 我倾向于同意Varnish的回复: 通常会定期询问终端响应转义的智慧,但是仍然没有一个主要的终端仿真程序适合丢弃这些序列,这可能是在与不再使用的1970's技术兼容的错误尝试。[..]从安全性的角度来看,与其责怪编写日志文件的所有程序,不如让终端仿真程序停止做愚蠢的事情,从而一次解决此问题和其他安全性问题,将更有效率。并为所有人。 因此,我的问题是: 如何保护我的xterm,使其不再能够通过转义序列执行命令或覆盖文件? X的哪些终端仿真器可以抵抗这种攻击?

3
如何防止随机控制台输出破坏终端?
SE上有许多问题,显示了如何从损坏的终端中恢复cat /dev/urandom。对于那些不熟悉此问题的人-这里的内容是: 您执行cat /dev/urandom或等效操作(例如cat binary_file.dat)。 打印垃圾。 没关系...除非您的终端即使在命令完成后仍继续打印垃圾!这是实际上是g ++输出的文本错误呈现的屏幕截图: 我猜人们对C ++错误有时过于神秘是正确的! 通常的解决方案是运行stty sane && reset,尽管每次发生时都运行它很烦人。 因此,我要重点关注的是发生这种情况的原始原因,以及在发出此命令后如何防止终端损坏。我不是在寻找诸如将有问题的命令传递到tr或的解决方案xxd,因为这要求您在实际运行/打印之前知道程序/文件输出二进制文件,并且每次输出此类数据时都需要记住该文件/二进制文件。 我注意到URxvt,PuTTY和Linux帧缓冲区中的行为相同,所以我认为这不是终端特定的问题。我的主要怀疑是随机输出包含一些ANSI转义代码,该代码会翻转字符编码(实际上,如果cat /dev/urandom再次运行,很有可能它将破坏终端,这似乎证实了这一理论)。如果正确,那么此转义码是什么?有禁用它的标准方法吗?

4
减少突出显示的搜索模式,而不是使其变为斜体
据我了解,男人less用作传呼机,并且在使用less它搜索关键字时会以斜体“突出”关键字。我觉得这确实很不方便,所以我想将其更改为vim那样的东西set hlsearch,其中发现的模式具有不同的背景。 我尝试运行,man -P vim systemd但是由于错误状态1而退出,因此看起来像是我坚持了less。 我没有找到man less任何帮助(相反,我发现该选项-G将关闭同时突出显示所有内容,这比斜体字更糟)。 话虽如此,有人知道如何在手册页中实现搜索突出显示(更改背景颜色)吗? 仅供参考,我运行Ubuntu 14.10 我碰到了这个问题,似乎是在问同样的问题,但是我不确定是否遵循该工作原理(LESS_TERMCAP_so)。该less手册页并没有提到这一点。(通过此解决方案,我得到了奇怪的结果)

3
在不同的shell中使用“ echo -e”转义序列
我只是注意到,Linux上的Shell中-e似乎不存在该echo命令的标志。这是一个混乱的设置还是“正常”的? 以一些代码为例: #!/bin/sh echo -e "\e[3;12r\e[3H" 印刷品: -e \e[3;12r\e[3H 这以前工作!我猜有些stty命令非常错误,现在不再起作用。有人建议我sh实际上是正义的bash。

8
如何计算文件中字节序列出现的次数?
我想计算某个字节序列在文件中发生了多少次。例如,我想找出该数字\0xdeadbeef在可执行文件中出现了多少次。现在我正在使用grep做到这一点: #/usr/bin/fish grep -c \Xef\Xbe\Xad\Xde my_executable_file (因为我的CPU是little-endian,所以这些字节以相反的顺序写入) 但是,我的方法存在两个问题: 这些\Xnn逃逸序列仅在鱼壳中起作用。 grep实际上是在计算包含我的幻数的行数。如果模式在同一行中出现两次,则只会计数一次。 有办法解决这些问题吗?我如何才能使这一衬板在Bash shell中运行并准确计算出文件中图案出现的次数?

2
\ e和^ [之间的区别
吉尔斯写道: 字符27 = 033 = 0x1b = ^[=\e Demizey 写道: ^ [只是ESCAPE的表示形式,\ e被解释为实际的ESCAPE字符 然后我还从TechRepublic的文章中找到了这一行 确保将键序列写为\ e [24〜而不是^ [[24〜。这是因为^ [序列等效于[Esc]键,该键在外壳程序中由\ e表示。因此,例如,如果键序列为^ [[OP,则要使用的最终绑定代码将为\ e [OP。 但是我一直在使用使用^ [而不是\ e的映射。 那么它们可以互换吗?我什么时候需要使用一个而不是另一个?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.