Questions tagged «special-characters»

如果它的含义超出其字面意义,即元含义,那么我们将其称为特殊字符。

11
什么是`^ M`,我如何摆脱它?
当我在中打开文件时vim,看到奇怪的^M字符。 不幸的是,世界上最受欢迎的搜索引擎在查询中使用特殊字符的效果不佳,因此我在这里问: 这个^M角色是什么? 它怎么可能到达那里? 我如何摆脱它?


7
不能在bash中使用感叹号(!)?
我正在尝试使用curl命令访问!其路径中带有感叹号()的http url 。例如: curl -v "http://example.org/!287s87asdjh2/somepath/someresource" 控制台会回复bash: ... event not found。 这里发生了什么?逃脱感叹号的正确语法是什么?

7
接收任意文件有多安全?
有时,当我cat误将一个二进制文件时,终端混乱了。很快reset就无法解决,但是从理论上讲,攻击者无法创建一个文件,当该文件显示在终端上时,该文件将执行一些任意代码吗?通过终端仿真器中的漏洞利用或其他方式。

16
如何删除文件名中包含非打印字符的文件
我以某种方式设法创建了一个似乎没有文件名的文件。我在以下线程中找到了一些有关如何获取文件更多详细信息的信息。 但是,我尝试了列出的一些建议,但似乎无法删除该文件。我不确定该如何创建,但是在尝试复制xml文件时发生了。 文件上的一些信息如下: > ls -lb total 296 -rw-r--r-- 1 voyager endeavor 137627 Jan 12 12:49 \177 > file * : XML document > ls -i 417777 我试图找到使用inum开关,然后将其通过管道传递到rm,因为这似乎是摆脱它的最简单的方法。但是,下面链接下面的线程底部给出的示例对我来说失败了。示例是: > find -inum 41777 -exec ls -al {} \; find: illegal option -- i find: [-H | -L] path-list predicate-list 因此,我首先尝试使用路径列表,如下所示,但这也不起作用: > …

10
处理带有特殊首字符的文件名(例如♫)
我最近遇到了一个名称以字符“ the”开头的文件。我想复制此文件,将其输入ffmpeg,并在终端中以其他各种方式引用它。我通常会自动完成怪异的文件名,但这会失败,因为我什至无法输入第一个字母。 我不想切换到鼠标来执行复制粘贴操作。我不想为可能的情况记住一堆代码。我的临时解决方案是切换到vim,粘贴!ls并复制有问题的字符,然后退出并将其粘贴到终端中。这行得通,但是非常可怕。 有没有更简单的方法来处理这种情况? 注意:如果使用鱼壳,它会改变一切。

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


3
了解Unix文件名编码
我很难理解文件名编码的工作方式。在unix.SE上,我发现矛盾的解释。 文件名存储为字符 引用另一个答案: 关于Linux上文件系统字符编码的几个问题 正如您在问题中提到的[…],UNIX文件名只是一个字符序列;内核对编码一无所知,而编码完全是用户空间(即应用程序级)的概念。 如果文件名存储为字符,则必须进行某种编码,因为最后文件名必须以磁盘上的位或字节序列结尾。如果用户可以选择任何编码来将字符映射到馈送给内核的字节序列,则可以为有效文件名创建任何字节序列。 假设以下内容:用户使用随机编码X,它将文件foo转换为字节序列α并将其保存到磁盘。另一个用户使用编码ÿ。在这种编码中,α转换为/,不允许作为文件名。但是,对于第一个用户,该文件有效。 我认为这种情况不会发生。 文件名存储为二进制Blob 引用另一个答案: 在Linux上,文件名和路径使用哪种字符集编码? 正如其他人所指出的那样,这确实没有答案:文件名和路径没有编码。OS仅处理字节序列。各个应用程序可能选择将它们解释为以某种方式进行编码,但这有所不同。 如果系统不处理字符,如何在文件名中禁止使用特定字符(例如/或NULL)?没有/ 编码就没有a的概念。 一种解释是,文件系统可以存储包含任何 字符的文件名,只有考虑到编码的用户程序才会阻止包含无效字符的文件名。反过来,这意味着文件系统和内核可以毫无困难地处理包含/。的文件名。 我也认为这是错误的。 编码在哪里进行,不允许使用特定字符的限制在哪里?

10
如何在X11下键入度数符号(使用默认的英语键盘布局)?
我正尝试在电子邮件中输入外部温度(以度为单位)。在我的Mac上,度数符号(°)是Option+ Shift+ 8。但是我正在使用默认美国英语键盘布局的Ubuntu 10.10在Thunderbird中编写电子邮件。在X11下,我用什么组合键来获得度数符号? 编辑:杰特成功回答了这个问题...但是,比他的回答中任何易于使用的按键奖励积分!


2
CTRL + 4(和CTRL + \)在bash中做什么?
我只是偶然发现CTRL+ 4 关闭stdin了从命令行读取输入的程序。 当我 在程序阅读中键入CTRL+ 4或CTRL+ 时,它是这样的/stdin $ cat wefwef wefwef ^\Quit $ bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. ^\Quit $ 我得到^\Quit显示,然后程序关闭。与使用^C或相比有什么区别^D?怎么^\Quit办? 编辑:发现CTRL+ \做同样的事情。

5
如何找到特定字形的通用名称?
有时,我想知道一个字形的名称。例如,如果我看到了−,我可能想知道它是连字符-,破折号–,破折号—还是减号−。有什么方法可以将其复制粘贴到终端以查看其内容吗? 我不确定我的系统是否知道这些字形的通用名称,但是肯定有一些可用的(部分)信息,例如中的/usr/share/X11/locale/en_US.UTF-8/Compose。例如, <Multi_key> <exclam> <question> : "‽" U203D # INTERROBANG 另一个示例字形:🐄。

2
Grep:在手册页标题中搜索单词时出现意外结果
尝试在macOS上grep手册页时遇到奇怪的行为。例如,Bash手册页显然出现了以下字符串NAME: $ man bash | head -5 | tail -1 NAME 如果我为grep name获得了结果,但是如果我为grep获得NAME,则不会: $ man bash | grep 'NAME' $ man bash | grep NAME 我尝试了其他我知道的大写单词,搜索SHELL没有BASH结果,而搜索了结果。 这里发生了什么? 更新:感谢您提供所有答案!我认为值得添加我遇到的环境。我想编写一个bash函数进行包装,man并且在尝试查找内置shell的手册页的情况下,跳至Bash手册页的相关部分。也许有更好的方法,但是这是我目前所拥有的: man () { case "$(type -t "$1")" in builtin) local pattern="^ *$1" if bashdoc_match "$pattern \+[-[]"; then command man bash | less …

1
为什么将抑扬/插入符号用作Ctrl的符号?
我很早以前就开始使用Linux控制台,但是我从来没有问过自己关于抑扬号(^。)的字符()的问题。我想问一下为什么用它代替了这个词Ctrl。 前几天,我在使用nano的时候就想到了这一点,我还搜索了互联网上是否有答案,但发现的只是关于“它是什么”和“它代表什么”的问题。 有历史原因吗?还是来自某种奇怪的约定?

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.