Questions tagged «escape-characters»

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

4
从ncurses应用程序调用的脚本输出中的转义序列
我目前正在我的家庭服务器上的tmux会话中将mcabber作为我的Jabber客户端(使用ncurses)运行。我在本地将iTerm2作为终端仿真器运行,它支持通过字符转义序列触发咆哮通知。 注意:echo此问题中的所有内容都类似printf %b,或echo -e在bash和GNU中工作echo。 例如,echo "\e]9;foobar\007"使iTerm2发送带有文本“ foobar”的Growl消息。 但是,在tmux会话中,转义序列会被吃掉。因此,\Ptmux可以像这样使用专有字符转义序列: echo "\ePtmux;\e\e]9;foobar\007\e\\" 这会在tmux会话中触发咆哮消息。 但是,当我在收到新消息时触发的mcabber事件脚本中使用此命令时,不会触发任何通知,就像将回声发送到错误的终端一样。 我想这与触发脚本的mcabber有关,它是一个ncurses应用程序,因此我普通bash脚本的输出丢失了,而iTerm 2却看不到它。 在回应发现的一些想法之前,我还尝试打电话给打sm而未成功 tput smcup echo "\ePtmux;\e\e]9;$FROM: $MSG\007\e\\" tput rmcup 我想这不起作用,因为问题不是切换回“真实终端窗口”,而是将输出直接定向到ncurses窗口。 关于这个有什么想法吗?

2
如何确定控制台输出的当前颜色?
我知道,如果有彩色终端可用,则可以使用转义字符为其输出着色。 但是是否有可能找出当前输出显示为哪种颜色?或者,如果我现在将其输出,文本将是什么颜色? 我要求在使用这些转义字符时不要破坏任何以前的颜色设置。“默认前景色”转义字符是从配色方案中获取的信息,而不是在更改之前的文本颜色。

1
尖号方括号方括号A ^ [[A-这是什么意思?
抱歉,如果已经有人问过这个问题,但是我不知道如何找到自己的答案-当我在任何搜索引擎中搜索“ ^ [[A”时,它都会完全忽略“ ^ [[”部分。 无论如何,我的问题是:有时在终端机中(在Mac上),当我按箭头键时,会出现字符“ ^ [[A”,“ ^ [[B”,“ ^ [[C””或“ ^ [[D”” 。我似乎还记得几年前在使用(最可能的)DOS时遇到的情况,我认为它的发生频率也更高。 为什么会发生,这是什么意思?


2
除Bash和Zsh之外的其他外壳程序是否支持ANSI-C引用?例如$'string'
我有一个shell脚本,该脚本使用以下命令在其输出中打印一个绿色的选中标记: col_green="\e[32;01m" col_reset="\e[39;49;00m" echo -e "Done ${col_green}✓${col_reset}" 在阅读了有关Bash的ANSI-C引用之后,我意识到我可以在设置颜色变量并-e从echo中删除标志时使用它。 col_green=$'\e[32;01m' col_reset=$'\e[39;49;00m' echo "Done ${col_green}✓${col_reset}" 这似乎很吸引人,因为它意味着无论将消息传递给Bash的内置echo还是外部util /bin/echo(我在macOS上),消息都能正确打印。 但这是否会使脚本的可移植性降低?我知道Bash和Zsh支持这种引用风格,但是我不确定其他人。

1
使用grep时屏幕上出现奇怪的符号?
知道是什么原因造成的吗?如果不使用grep,则唯一显示的内容是ISO代码和空白。 使用的软件 命令: ./trans --id --input /path/to/txt | grep ISO | grep [a-z] root@box /test # alias grep alias grep='grep --color=auto' root@box /test # type grep grep is aliased to `grep --color=auto' 正常输出:


2
脚本出现问题,文件名中带有空格
我有一个脚本,该脚本将来自远程主机的文件压缩回本地。有时文件名包含空格。scp不喜欢其文件名中的空格。由于某种原因,我尝试处理空间的结果未产生正确的scp路径。 码: PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg scp $PATH Me@10.1.10.33:/Users/Me/Desktop 结果是 Cannot find directory: var/root/Documents/MyFile Cannot find directory: OG-v1.2.3.pkg 将PATH括在引号中"$PATH"会产生相同的错误。 将空间交换为逃逸空间也不起作用,尽管据我所知应该这样: ESC_PATH=${PATH/' '/'\ '} 尽管打印转义的路径表明编辑有效: echo $ESC_PATH > /var/root/Documents/MyFile\ OG-v1.2.3.pkg

3
在输出量上转义序列是否有客观好处?
在.*rc网上的人们的档案或各种代码中,我倾向于看到许多人手动使用ANSI转义序列而不是使用tput。 我的理解tput是更通用/更安全,所以这使我感到奇怪: 是否有任何客观原因应该使用转义序列代替tput?(可移植性,错误的鲁棒性,异常的终端...?)

2
“ CTRL + arrow / s”的gnome终端ANSI转义序列是什么?
我正在尝试将bash配置~/.inputrc为这些设置 (注意:←,→指的是左右箭头键) Ctrl+ ←-应该跳回一个字 Ctrl+ →-应该向前跳一个字 目前,我已经拥有了~/.inputrc它,但是它不起作用。Ctrl + arrow什么都不产生。 "\eC-5C":forward-word "\eC-5D":backward-word 我确定我的转义顺序是错误的。组合 的正确转义顺序是Ctrl + arrow什么? 终端:gnome终端内部的tmux


3
如何打印带有转义序列的控制字符?
我已经用tput定义了红色 red=$(tput setaf 1) 为我的程序中的警告着色。这工作正常: printf '%sfail\n' "$red" # prints 'fail' in red 但是有一次我想按原样打印转义序列,例如: \ E [31mfail 我该怎么做?我知道printf有一个%q标志,但是它可以逃避其他我不想要的东西。


3
在passwd中导出HTTP_PROXY和特殊字符
假设为了论证,我在下面输入的密码是 abc123@ 我需要通过公司代理对我的linux计算机进行身份验证,以获取补丁和更新...通常,我会使用以下命令: export HTTP_PROXY='http://<Americas\Username>:<Password>@proxy.foo.com' export http_proxy='http://<Americas\Username>:<Password>@proxy.foo.com' 但是,当我用以结尾的真实密码替换@然后运行时aptitude update,我得到... [mpenning@netwiki ~]$ sudo -E aptitude update Err http://mirror.anl.gov squeeze Release.gpg Could not resolve '@proxy.foo.com' Err http://mirror.anl.gov/debian/ squeeze/main Translation-en Could not resolve '@proxy.foo.com' 我尝试用\@,,,\@\@双字符(@@)来转义密码,并且似乎没有什么可以正确地代理此密码。直到最近更改了密码,我才开始遇到问题。 退出密码的正确方法是什么bash?

2
DEC ANSI命令序列问题;光标移动
因此,我正在编写一个终端仿真程序(我知道,我应该编译腻子等),并且处于通过vttest进行确认以确保正确的阶段。我现在将其基于VT102,但在基础正常工作时将添加更高的终端功能,例如颜色。 该命令集主要是ANSI。DEC有自己的命令集,但从1973年左右开始支持ANSI命令。这些ANSI标准现在似乎不可用,但是ECMA等效项是我拥有的(ECMA-48似乎最相关),但据我回答,这个问题一直没有得到解决。可以看到。大多数ANSI命令序列以ESC开头。许多命令以此处显示为CSI的命令序列标识符开头,并在数据中表示为0x1c 0x5b(ESC [),如果可能进行8位通信,则表示为0xdb 。然后遵循识别命令的顺序。有些命令会影响光标位置,有些会影响屏幕,有些会引起对主机的响应,等等。 一些终端命令包含数字参数。示例CSI 10 ; 5 H意味着将光标位置排在第10行第5列。当缺少数字参数时,将使用默认值:CSI 10 ; H意味着将光标位置排在第10行第1列,因为未提供参数时默认值为1。 我有来自vt100.net的vt102手册(大量资源),大约有十二页提供了有关这些命令序列的部分信息。显然,完整的DEC福音终端规范从未使它脱离DEC。 清楚的是CSI C向右移动光标,默认值为1。 尚不清楚的是CSI 0 C。 为什么在那里有零,这似乎会使命令什么都不做?如果它表示“使用默认值”,则可以将其发送为1,但是较短的字符串将没有参数,并且始终依赖默认值解释为1。这些实际的物理VT终端通常在300波特及以下的波特率下使用,因此一个字符确实很重要! 我对vttest并不了解,我只能尝试两种方法,看看哪种方法可以使一切完美,但我已经足够了,这样的小问题开始变得重要了。
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.