自Ubuntu从默认的gnome桌面系统转向Unity,gnome3又不尽人意时,我开始寻找其他linux桌面环境发行版。我希望它的内核版本足够新,但默认桌面环境又使用经典的gnome2的发行版。linuxmint基于ubuntu,但相对于ubuntu更易用。默认漂亮的中文字体,强大的硬件驱动支持和类kde(你也可能理解为windows)的开始菜单及便利的软件中心。
用了一段时间的linuxmint 11后,出于好奇又去使用linux mint debian,这是一个滚动更新,没有固定版本号的系统,用起来真不错。唯一让人遗憾的是,在gnome-terminal窗口无法输入中文,切换输入法时,ibus输入法直接提示“ No input window”,用scim输入法依然不行。切换到中文语言环境,依旧不行。
今天通过忽然明白了,linux mint debian使用的gnome桌面系统其实也是gnome2和gnome3的结合体,使用了gtk3,而ibus默认支持在Gtk2下进行输入,安装ibus-gtk3即可支持gnome-termina窗口输入中文。
sudo apt-get install scim-gtk3
终于,我又可以欢乐在的gnome-terminal窗口输入中文了(害我几个月了建不了中文文件目录)。
bash中的整数运算中常会用到let与expr,下面我通过实例演示他们各自的用法:
afaty@afaty-laptop ~ $ a=1
afaty@afaty-laptop ~ $ echo $(expr $a + 1) # 注意这里“+”两边有空格。
2
afaty@afaty-laptop ~ $ echo $(expr $a+1) #“+”两边没有空格输出的结果,这一定不是我们想要的。
1+1
afaty@afaty-laptop ~ $ echo $_
2
afaty@afaty-laptop ~ $ b=2
afaty@afaty-laptop ~ $ let c=$a+$b # 注意这里“+”两边没有空格。
afaty@afaty-laptop ~ $ echo $c
3
afaty@afaty-laptop ~ $ let c=$a + $b # “+”两边有空格,报语法错误了。
bash: let: +: syntax error: operand expected (error token is "+")
afaty@afaty-laptop ~ $ let c="$a + $b" # 其实"+"两边可以有空格的,但需要用引导把两边引起来。
afaty@afaty-laptop ~ $ echo $c
3
# 下面没有用到let和expr,但实现了同样的结果。
afaty@afaty-laptop ~ $ echo $(($a+$b)) # “+”两边没空格。
3
afaty@afaty-laptop ~ $ echo $(($a + $b)) # # “+”两边有空格。
3
afaty@afaty-laptop ~ $ echo $_
3
演示完了,我们看看let和expr在bash中属性有什么不一样。
afaty@afaty-laptop ~ $ type expr # expr是一个命令。
expr is /usr/bin/expr
afaty@afaty-laptop ~ $ dpkg -S /usr/bin/expr # 看一下expr属于哪个软件包(coreutils)。
coreutils: /usr/bin/expr
afaty@afaty-laptop ~ $ dpkg -L coreutils|grep expr # 确定属于coreutils这个软件包。
/usr/share/man/man1/expr.1.gz
/usr/bin/expr
afaty@afaty-laptop ~ $ type let # let是一个shell内建命令。
let is a shell builtin
如果写bash脚本,能用shell内建命令实现,则最好使用内建命令,以减少系统调用。
我在《Linux环境打开Windows下编写的中文文档乱码问题》一文是提到在linux环境下用可以用mousepad或leafpad文本阅读器打开windows下文本解决中文乱码。博友inbi在评论中说有”有unix2dos和dos2unix这两个命令“。首先,我在上一博文中要解决的问题是在LINUX环境下正常阅读Windows下编写的含有中文字符的文本,而不对文本进行写操作(即改变文本格式:比如格式转换、属性、权限等操作),在这里,我也提醒各位做LINUX系统管理的朋友,在LINUX系统环境下,在对任何文件进行写操作时都尽量保持审慎态度(比如一个业务数据文件的Modify属性的改变就有可能导致基于此属性的数据备份任务失败)。其次,unix2dos和dos2unix这两个命令是用来转换文本断行格式的,而无法对文本的字符编码进行转换。下面,我就linux下文本字符编码转换和断行字符转换给大家讲解。
接下来,我们依旧使用《Linux环境打开Windows下编写的中文文档乱码问题》一文中的afaty@afaty-laptop ~/Downloads/system_status/Readme.txt进行演示。
阅读全文…
我们从网上下载的好多txt文件拷贝到linux下,用KDE桌面环境自带的文本编辑器kedit或GNOME桌面环境自带的文本编辑器gedit打开时,经常会遇到中文乱码问题。下面是我用gedit打开一个从网上下载的bash脚本压缩包中的Readme.txt文件显示的部分内容(文件中含有中文)
afaty@afaty-laptop ~/Downloads/system_status $ gedit Readme.txt
ÈçºÎʹÓÃ
œ«³ÌÐòœâѹµœÄãÐèÒªŒà²âµÄÈκÎUNIX/LinuxϵͳÖÐ,È»ºóÖŽÐÐÆäÖеĜűŸÎÄŒþŒŽ¿É
#./cpu.sh
disk.shµÄʹÓÃÐèÒªžø³ö²ÎÊý,Èç/dev/sda1µÈ
²»Ò»¶šÐèÒªrootÈšÏÞ
Ŀǰ֧³ÖµÄϵͳƜ̚:Linux,AIX,Solaris,HP-UX,SCO-UNIX
这是因为这个文件是在windows环境下编写的,windows环境下的文本文件默认使用的是gb2312的字符编码格式,而linux环境下一般使用utf-8字符编辑格式。
在这里,我给大家推荐另外两个linux环境下的轻量级的文本编辑工具,可以很好的解决这个问题:这两个工具分别是mousepad和leafpad,出自同一作者之手,都可以自动检测文本的字符编辑,其中mousepad是轻量级桌面Xfce下默认安装的文本编辑器。
在ubuntu/debian环境下可以通过“apt-get install mousepad”命令安装mousepad,通过“apt-get install leafpad”命令安装leafpad;在CentOS环境下可以通过“yum install mousepad”命令安装mousepad,通过“yum install leafpad“命令安装leafpad。
我用的是ubuntu,闲话少叙,感兴趣的朋友直接跟着我看效果:
阅读全文…