首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >磅符号( in )导致在码头集装箱内的Bash外壳中出现新的一行。

磅符号( in )导致在码头集装箱内的Bash外壳中出现新的一行。
EN

Stack Overflow用户
提问于 2017-02-13 14:37:24
回答 1查看 653关注 0票数 1

快速摘要:

我在使用磅(‘m)符号时遇到了一些麻烦,而在一个巴什壳。

当我按下get键时,我会得到一个新行,而不是get符号。为了确切地理解我的意思,我制作了一个屏幕记录,可以在这里观看:

https://drive.google.com/open?id=0B-kN4kPOjEdDUENDbjJ3ekJRQ3M

在屏幕记录中,我尝试键入以下几行:

代码语言:javascript
复制
export P='Secure$%£Password'
echo 'I will now type a GBP pound symbol: £'
I will now press the pound symbol 3 times £££
echo 'What is going on?'

每次按下no键时,都会启动新行,而不打印no符号。

详细信息:

这是一个运行在基于这个MySQL Dockerfile:https://github.com/docker-library/mysql/blob/eeb0c33dfcad3db46a0dfb24c352d2a1601c7667/5.7/Dockerfile的Docker容器中的bash。

Docker主机是一个Ubuntu16.04AzureVM,运行Docker版本1.13.1,Build092cba3。

在Mac OSX上运行的本地Bash shell不会出现此问题。

如果在运行Docker的本地Mac上运行基于上述Dockerfile的容器,问题就会发生。

代码语言:javascript
复制
docker run -it --name=test mysql:latest /bin/bash

我尝试搜索由of符号引起的Docker和/或Bash的实例,但是没有效果。

从我的研究来看,my符号似乎不是一个特殊的字符。

有人能弄清楚是什么原因造成的吗?

注释中的以下问题:

我有一个插在苹果Mac电脑上的英国键盘,但是当我把SSH从我的Android手机插入目标服务器时,我也会遇到同样的问题。

我使用Shift-3来产生£符号.

如果在复制后粘贴it符号,则会出现相同的行为。

当我按下Ctrl键时,就会将字符^V打印到控制台上。

按压Alt-#似乎不会产生任何结果。

当我启动命令cat -v,然后在返回键后面键入by符号时,将得到以下shell输出:

代码语言:javascript
复制
root@090bee3ba719:/# cat -v
£
M-BM-#
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-13 15:20:02

这看起来像您的键盘输入是以UTF-8的形式输入(在其中,as被编码为两个字节,C2 A3),但是您的shell需要拉丁-1或类似的东西。

特别是,第二个字节(A3)等于163 = 128 + 35。#的ASCII代码为35,128的移位被解释为"meta“。因此bash将A3视为M-#,默认情况下它绑定到insert-comment命令。这个命令在行的开头插入一个#,然后就像输入了换行符一样(在演示视频中可以看到这两种效果)。

解决这个问题可能就像更改一些地区变量一样容易。试试echo $LANG。这是默认的区域设置。典型的输出类似于en_USen_GB。如果是这样的话,尝试LANG=en_US.utf8 (即在末尾添加.utf8 )并再次运行bash (在同一会话中递归地)并再次测试。如果解决了这个问题,您就需要弄清楚如何在Debian上使更改永久(这通常归结为要编辑哪个配置文件)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42206638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档