如何让Mac系统的echo -e命令输出中文等Unicode编码字符(Mac系统默认命令行环境bash版本升级修改)

这是我之前发表在新浪博客里的技术文章,一并转过来收集。

U5317U4eac这样的Unicode编码中文编码字符,经常会出现在iOS开发过程中。在断点调试的时候,控制台打印出来的都是这种编码,而不是中文,如何打印输出这种文字,真的很头疼。

之前在唐巧的博客中,看到他提到,可以在系统终端中,使用” echo”命令来将Unicode的字符转义成中文,可是在自己的mac上试验却始终不成功。今天在QQ群里再次看到别人可以使用这一命令来输出中文,正好比较闲,就搜索了一下问题的解决方案。

从万能的谷歌那里找到问题的根源,是由于Mac自带的终端bash版本过低,3.8.x的版本,无法支持echo 输出中文。那么只要将系统自带的bash升级到最新版本(至少要4.2.x以上)即可。

首先在终端中执行以下命令,用来安装bash最新版本:

brew install bash

(很多人在这一步失败,那是因为你没有安装 brew, 请参考这篇文章安装

或者直接执行:

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)"

安装

在命令执行结束后,你会看到bash被安装到那个目录下(类似 /usr/local/bash/4.x.x),记录下来,在这个目录后加上”bin/bash“内容,形成类似:/usr/local/bash/4.x.x/bin/bash 这样的完整路径,复制这个完整路径。

执行:

sudo vim /etc/shells

修改/etc/shells文件,将刚才的完整路径复制到这一文件中,执行:wq!保存退出

执行

chsh

将其中一行类似”Shell:
/usr/local/bin/bash” 中Shell: 后的路径,改成刚才的完整路径。
继续 :wq! 保存退出

重启终端
执行

echo $BASH_VERSION

如果输出的版本是4.2.x或者更高,现在你就可以在终端中,使用

echo -e "U5317U4eac"

来输出中文了!恭喜!注意,是echo -e +需要输出的字符串

PS:如果在chsh命令里修改的路径错误,退出重启终端会因为无法载入bash出错,这时,可以使用终端的偏好设置》启动 中的Shell的打开方式,使用命令(完整路径): /bin/bash来使用系统默认的bash启动终端,当然,这里使用命令也可以使用上面的完整路径来直接启动最新版本的bash。

参考链接:
修改系统默认Shell:
http://blog.yuaz.net/archives/292
Upgrade Bash to 4+ on OS X
http://buddylindsey.com/upgrade-bash-to-4-on-os-x/

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注