Linux Mint Debian Edition在gnome桌面环境下gnome-terminal无法输入中文的解决方法

2012年2月27日 没有评论

自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窗口输入中文了(害我几个月了建不了中文文件目录)。

let与expr

2011年7月20日 9 条评论

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内建命令实现,则最好使用内建命令,以减少系统调用。

分类: BASH, LINUX 标签:

在linux下进行文本字符编码转换和断行格式转换

2011年7月14日 4 条评论

我在《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进行演示。

阅读全文…

Linux环境打开Windows下编写的中文文档乱码问题

2011年7月12日 6 条评论

我们从网上下载的好多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,闲话少叙,感兴趣的朋友直接跟着我看效果:

阅读全文…

分类: LINUX 标签:

Bash中的常用比较运算符

2011年7月6日 7 条评论
运算符 描述 示例


文件比较运算符
-e
filename
如果
filename存在,则为真
[ -e /var/log/messages ]
-d
filename

如果
filename为目录,则为真
[ -d /tmp/dir ]
-f
filename
如果
filename为常规文件,则为真
[ -f /bin/ls ]
-L
filename
如果
filename为符号链接,则为真
[ -L /bin/ls ]
-r
filename

如果
filename可读,则为真
[ -r /var/log/messages ]
-w
filename
如果
filename可写,则为真
[ -w /var/file.txt ]
-x
filename
如果
filename可执行,则为真
[ -L /bin/ls ]

filename1-nt
filename2

如果
filename1
filename2新,则为真
[ /tmp/lab/file1 -nt /tmp/lab/file2 ]
filename1-ot
filename2

如果
filename1
filename2旧,则为真
[ /tmp/lab/file1 -ot /tmp/lab/file2 ]
阅读全文…
分类: BASH, LINUX 标签: