登录到远程 ssh 会话时,有时我会对错误的文件(二进制文件或目录)执行 cat 操作,并且显示会转换为乱码。唯一的出路是关闭终端并打开一个新终端,这让我很沮丧,因为通常已经有很多与当前终端相关的状态。
更新:虽然我收到了很好的答案,但仍然存在一个小问题。请参阅此后续问题。
我能做什么?

从 OS X 开始,我通过 ssh 进入 foo(一个 Linux 机器)。我的终端标题更改为 foo。然后我 ssh 进入 bar(另一个 Linux 机器)。我的终端标题更改为 bar。我退出了酒吧。我的终端标题更改为 foo。我退出 foo。我的终端标题保持 foo (而不是改回原来的标题)。问题显然不在于终端,因为在从 Linux 机器注销回到 Linux 机器时它可以正常工作。它可能不是 ssh,因为我对 vim 有同样的问题。在我看来,离开了贝壳。我正在使用 BASH。纵观整个环境,我没有看到 Linux 机器和我的 OS X 机器之间有太大区别。两者都使用 xterm 的术语。
随着新版 Snow Leopard,OS X 将 bash 版本升级为GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0).
现在,我.bashrc设置了以下设置:
# Colors
export TERM=xterm-color
export GREP_OPTIONS='--color=auto' GREP_COLOR='1;32'
export CLICOLOR=1
export LSCOLORS=ExGxFxDxCxHxHxCbCeEbEb
# Setup some colors to use later in interactive shell or scripts
export COLOR_NC='\e[0m' # No Color
export COLOR_WHITE='\e[1;37m'
export COLOR_BLACK='\e[0;30m'
export COLOR_BLUE='\e[0;34m'
export COLOR_LIGHT_BLUE='\e[1;34m'
export COLOR_GREEN='\e[0;32m'
export COLOR_LIGHT_GREEN='\e[1;32m'
export COLOR_CYAN='\e[0;36m'
export COLOR_LIGHT_CYAN='\e[1;36m'
export COLOR_RED='\e[0;31m'
export COLOR_LIGHT_RED='\e[1;31m'
export COLOR_PURPLE='\e[0;35m'
export COLOR_LIGHT_PURPLE='\e[1;35m'
export COLOR_BROWN='\e[0;33m'
export COLOR_YELLOW='\e[1;33m'
export COLOR_GRAY='\e[1;30m'
export COLOR_LIGHT_GRAY='\e[0;37m'
Run Code Online (Sandbox Code Playgroud)
这些颜色稍后用于输出。这曾经在以前版本的 OSX 中工作,但现在我的输出不合作。
在各种 Linux 机器上,您可以
cd /
Run Code Online (Sandbox Code Playgroud)
和
cd //
Run Code Online (Sandbox Code Playgroud)
使用相应的命令后,shell 会说当前目录是“/”或“//”。
所以问题是:“/”和“//”之间有什么区别,如果答案是“没有区别”,那么为什么“//”与“/”的显示方式不同
顺便提一句
cd ///
cd ////
cd /////
Run Code Online (Sandbox Code Playgroud)
所有结果都在 shell 中说当前目录是“/”
这是一个示例会话:
[user@host /]$ cd //
[user@host //]$ cd /
[user@host /]$ cd //
[user@host //]$ cd /
[user@host /]$
Run Code Online (Sandbox Code Playgroud) 我试图在我的本地服务器上使用 SCP 将文件从一个远程服务器复制到另一个远程服务器(两个远程服务器都使用自定义端口(xxxx)
我在尝试:
scp -r -P xxxx root@xxx.xxx.xxx.111:/home/myimages/images.tar.gz root@xxx.xxx.xxx.222:/home/myimages/images.tar.gz
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
ssh: connect to host xxx.xxx.xxx.222 port 22: Connection timed out
Run Code Online (Sandbox Code Playgroud)
有什么建议?
“Shell”和“Bash”有什么区别,这些术语是什么意思?
据我所知,没有区别。但是我看过很多关于“Shell”的书和其他关于“Bash”的书!
因此,如果我想在 Mac OS X 上使用终端并编写一些 bash 脚本,我想知道我应该阅读哪种类型的书。
我刚开始使用 zsh,并且喜欢它。但是,当涉及到国际角色时,我偶然发现了一个烦恼:
? ~ touch åäö.txt
? ~ ls
Desktop Dropbox Music Sites
Documents Library Pictures a??a??o??.txt
Downloads Movies Public
? ~ rm -v a<030a>a<0308>o<0308>.txt
åäö.txt
? ~
Run Code Online (Sandbox Code Playgroud)
使用 bash,它看起来像这样(在两种情况下,文件名rm -v都是通过按自动完成的TAB)。
johan@retina ~ $ touch åäö.txt
johan@retina ~ $ ls
Desktop Dropbox Music Sites
Documents Library Pictures åäö.txt
Downloads Movies Public
johan@retina ~ $ rm -v åäö.txt
åäö.txt
johan@retina ~ $
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题zsh?
编辑:
设置export LANG=en_US:UTF-8修复了 eg 的输出,ls并在TAB完成时有多个匹配项时在当前输入下方的行上正确显示它。但是,从TAB …
bash ×10
macos ×4
linux ×3
ssh ×3
shell ×2
terminal.app ×2
filesystems ×1
mac ×1
navigation ×1
remote ×1
scp ×1
telnet ×1
timer ×1
utf-8 ×1
zsh ×1