【问题标题】:Bash / Linux : "s" character ignored in promptBash / Linux:提示中忽略“s”字符
【发布时间】:2017-02-08 18:19:22
【问题描述】:

操作系统:CentOS Linux 版本 7.2.1511(核心)

Bash 版本:GNU bash,版本 4.2.46(1)-release (x86_64-redhat-linux-gnu)

我遇到了一个非常奇怪的问题。

在这台服务器上,我不能再使用我的“s”键了。键入“s”键只会在提示符上打印任何内容。但是,我看到服务器通过闪烁的“_”反应的方式获取输入(不知道如何调用这个东西..)

此外,我无法从其他显示器复制/粘贴“s”字符。例如,复制/粘贴字符串“sysconfig”将导致仅粘贴“yconfig”。

我发现提示符上有“s”字符的唯一方法是通过自动完成。例如,通过点击“/etc/ba”+TAB,这将显示 /etc/bashrc。然后我可以在其他命令中使用“s”字符。 我也可以使用历史来使用这个字符(使用以前键入的命令的“s”)

在登录提示符下,我可以使用“s”字符。 我还可以在文本编辑器中将此字符用作 vim。

据我所知,我最近没有对我的 bash_profile 进行任何更改(实际上自服务器安装以来我根本没有更改),也没有对其他主要系统参数进行更改。唯一的问题可能是加载的键,因为我使用的是法语键 (loadkeys fr)。

我尝试了以下方法:

  • 测试我的键盘:我可以在其他地方使用“s”字符
  • 重启服务器:同样的问题发生
  • 加载美国密钥:同样的问题发生

我必须说我对这个问题一无所知,所以我请求你的帮助!

提前致谢。

M.

顺便说一句,这是我在这个网站上的第一个问题。如果您发现我可以改进我的问题,请告诉我。


按照@chepner 第一个解决方法进行编辑(查看评论中的更多详细信息)

解决方法已由 @chepner 找到:bind $'"\x73": \x73elf-in\x73ert's 字符重新绑定到 s 键。

但是,这在重新启动后不会持续存在。似乎有些东西正在绑定s 键来做其他事情。为了进一步调查问题的根本原因,我在这里提供了命令bash -x 的输出:

[root@localhost ~]# echo $INPUTRC

[root@localhost ~]# bash -x
+ alias 'rm=rm -i'
+ alias 'cp=cp -i'
+ alias 'mv=mv -i'
+ '[' -f /etc/bashrc ']'
+ . /etc/bashrc
++ '[' '\s-\v\$ ' ']'
++ '[' -z '' ']'
++ case $TERM in
++ '[' -e /etc/sysconfig/bash-prompt-xterm ']'
++ '[' 0 -ge 3405 ']'
++ PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
++ shopt -s histappend
++ history -a
++ shopt -s checkwinsize
++ '[' '\s-\v\$ ' = '\s-\v\$ ' ']'
++ PS1='[\u@\h \W]\$ '
++ shopt -q login_shell
++ '[' 0 -gt 199 ']'
++ umask 022
++ SHELL=/bin/bash
++ for i in '/etc/profile.d/*.sh'
++ '[' -r /etc/profile.d/256term.sh ']'
++ '[' '[\u@\h \W]\$ ' ']'
++ . /etc/profile.d/256term.sh
+++ local256=
+++ '[' -n '' ']'
+++ '[' -n '' ']'
+++ unset local256
++ for i in '/etc/profile.d/*.sh'
++ '[' -r /etc/profile.d/colorgrep.sh ']'
++ '[' '[\u@\h \W]\$ ' ']'
++ . /etc/profile.d/colorgrep.sh
+++ /usr/libexec/grepconf.sh -c
+++ alias 'grep=grep --color=auto'
+++ alias 'egrep=egrep --color=auto'
+++ alias 'fgrep=fgrep --color=auto'
++ for i in '/etc/profile.d/*.sh'
++ '[' -r /etc/profile.d/colorls.sh ']'
++ '[' '[\u@\h \W]\$ ' ']'
++ . /etc/profile.d/colorls.sh
+++ '[' -z '[\u@\h \W]\$ ' ']'
+++ '[' -z '' ']'
+++ alias 'll=ls -l'
+++ alias 'l.=ls -d .*'
+++ INCLUDE=
+++ COLORS=
+++ for colors in '"$HOME/.dir_colors.$TERM"' '"$HOME/.dircolors.$TERM"' '"$HOME/.dir_colors"' '"$HOME/.dircolors"'
+++ '[' -e /root/.dir_colors.xterm ']'
+++ for colors in '"$HOME/.dir_colors.$TERM"' '"$HOME/.dircolors.$TERM"' '"$HOME/.dir_colors"' '"$HOME/.dircolors"'
+++ '[' -e /root/.dircolors.xterm ']'
+++ for colors in '"$HOME/.dir_colors.$TERM"' '"$HOME/.dircolors.$TERM"' '"$HOME/.dir_colors"' '"$HOME/.dircolors"'
+++ '[' -e /root/.dir_colors ']'
+++ for colors in '"$HOME/.dir_colors.$TERM"' '"$HOME/.dircolors.$TERM"' '"$HOME/.dir_colors"' '"$HOME/.dircolors"'
+++ '[' -e /root/.dircolors ']'
+++ '[' -z '' ']'
+++ '[' -e /etc/DIR_COLORS.xterm ']'
+++ '[' -z '' ']'
+++ '[' -e /etc/DIR_COLORS.256color ']'
++++ /usr/bin/tty -s
++++ /usr/bin/tput colors
+++ '[' x8 = x256 ']'
+++ '[' -z '' ']'
+++ '[' -e /etc/DIR_COLORS ']'
+++ COLORS=/etc/DIR_COLORS
+++ '[' -n /etc/DIR_COLORS ']'
+++ '[' -e '' ']'
++++ /usr/bin/dircolors --sh /etc/DIR_COLORS
+++ eval 'LS_COLORS='\''rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:'\'';
export LS_COLORS'
++++ LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:'
++++ export LS_COLORS
+++ '[' -z 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:' ']'
+++ /usr/bin/grep -qi '^COLOR.*none' /etc/DIR_COLORS
+++ unset TMP COLORS INCLUDE
+++ alias 'll=ls -l --color=auto'
+++ alias 'l.=ls -d .* --color=auto'
+++ alias 'ls=ls --color=auto'
++ for i in '/etc/profile.d/*.sh'
++ '[' -r /etc/profile.d/lang.sh ']'
++ '[' '[\u@\h \W]\$ ' ']'
++ . /etc/profile.d/lang.sh
+++ sourced=0
+++ '[' -n en_US.UTF-8 ']'
+++ saved_lang=en_US.UTF-8
+++ '[' -f /root/.i18n ']'
+++ LANG=en_US.UTF-8
+++ unset saved_lang
+++ '[' 0 = 1 ']'
+++ unset sourced
+++ unset langfile
++ for i in '/etc/profile.d/*.sh'
++ '[' -r /etc/profile.d/less.sh ']'
++ '[' '[\u@\h \W]\$ ' ']'
++ . /etc/profile.d/less.sh
+++ '[' -x /usr/bin/lesspipe.sh ']'
+++ export 'LESSOPEN=||/usr/bin/lesspipe.sh %s'
+++ LESSOPEN='||/usr/bin/lesspipe.sh %s'
++ for i in '/etc/profile.d/*.sh'
++ '[' -r /etc/profile.d/vim.sh ']'
++ '[' '[\u@\h \W]\$ ' ']'
++ . /etc/profile.d/vim.sh
+++ '[' -n '4.2.46(1)-release' -o -n '' -o -n '' ']'
+++ '[' -x /usr/bin/id ']'
++++ /usr/bin/id -u
+++ ID=0
+++ '[' -n 0 -a 0 -le 200 ']'
+++ return
++ for i in '/etc/profile.d/*.sh'
++ '[' -r /etc/profile.d/which2.sh ']'
++ '[' '[\u@\h \W]\$ ' ']'
++ . /etc/profile.d/which2.sh
+++ alias 'which=alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
++ unset i
++ unset -f pathmunge
++ printf '\033]0;%s@%s:%s\007' root localhost '~'
[root@localhost ~]#

我无法理解这里发生的一切。我查看了一些被调用的文件,但没有发现任何相关的文件。不过我可能会错过一些东西,因为我不习惯阅读此输出,也不知道如何解释所有这些。

如果您看到 s 键与 s 字符绑定的其他内容,请告诉我?

谢谢。

M.

【问题讨论】:

  • 查看bind -p | grep $'"\x73":'的输出;输出应该是"s": self-insert。如果不是,则某些东西会反弹您的s 键以执行其他操作。请注意,这与您所观察到的一致,即只有使用 Readline 库的程序才会受到影响。
  • »闪烁的 "_"« 被称为 cursor :D 顺便说一句非常有趣的问题。
  • @chepner :bind -p | grep $'"\x73":' 的输出为空。谢谢你的评论。你知道怎么绑定回来吗? @Socowi:是的,光标,对:D
  • 好的,至少作为一个快速修复,您应该能够根据需要运行 bind $'"\x73": \x73elf-in\x73ert' 以恢复您的 s 密钥的功能。对于长期修复,您必须首先弄清楚是什么删除了s 的绑定。查看~/.inputrc 或您使用的任何bash 配置文件。
  • 谢谢@chepner,成功了。我可以再次使用我的s 密钥。这不是持久的,重启后问题又回来了。看看我的 bach 配置文件,我发现我在 4 月份编辑了 ~/.inputrc 以添加 set-bell-style none 并且这个文件中没有其他内容。我的 homdir 中的其他文件是:.bash_history.bash_logout.bash_profile.bashrccshrc.tcshrc.viminfo。我从来没有碰过那些文件。如果您有想法.. 无论如何感谢您到目前为止的帮助,非常有用

标签: linux bash centos7


【解决方案1】:

我将发布一些一般信息作为未来参考的答案。

如果您遇到相同类型的问题并需要重新绑定密钥,您可能想知道需要使用什么十六进制代码(在我的例子中,\x73s 密钥)。看看ASCII CODE TABLE。不要忘记您需要选择十六进制列!

或者,您可以运行以下命令来获取字符关联的十六进制代码:

for i in `seq 33 126`; do printf '\\x%x => ' $i; echo -e "$(printf '\\x%x ' $i)"; done

其他参考:

希望对您有所帮助。

M.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 2014-10-18
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多