2014年8月22日

Linux Meld 比较工具,升级后怎么设置字符编码

Meld 升级到 3.11 版本后,原来设置语言文字编码的选项消失了。
没有了编码检测设置,在比较文件时常会遇到 "无法提取文件 文件不是使用 ['utf8'] 进行编码的" 或者 "Could not read file, file is not in encodings: ['utf8']"。
参考这里:Meld 3.11.0 and encoding
in meld 1.8.4 I had the option "Encoding". Here I used "utf8 latin1".
In meld 3.11.0 there is no "Encoding" options. It seems to use only utf8.
By comparing some of my files I get the error message:"Could not read file"
--------------------
There is no UI for it. You can set the encodings that will be tried in
Meld's 'detect-encodings' gsettings key.
按网上的回答就是:界面设置编码的地方没有了,配置里面仍然有效。

解决办法:
1、 用命令查看当前设置的编码
      gsettings  get  org.gnome.meld  detect-encodings
2、 用命令设置支持哪些字符集编码检测
      gsettings  set  org.gnome.meld  detect-encodings  "['utf8','cp936','latin1']"

2011年1月13日

挖掘 type 命令

今天测试个脚本,居然发现 ifconfig 命令会找不到,呖。。。。开发无止境,测试无止境!!

修改了一下,用 type 命令重新定位一下,判断系统中 ifconfig 命令的位置,代码如下:
IFCONF="/sbin/ifconfig"
[ ! -x "/sbin/ifconfig" ] &&
IFCONF=`type ifconfig | awk '{print $3}'`

接着又发现新问题了,type 的返回信息很“丰富”啊。。。
启动 bash 以后运行 type ifconfig 返回 ifconfig is /sbin/ifconfig
运行一次 ifconfig 后再运行 type ifconfig 返回 ifconfig is hashed (/sbin/ifconfig)

查看一下帮助,看看有没有什么参数可以用,type --help,
type: usage: type [-afptP] name [name ...]
不过,只有bash才支持这些参数;非POSIX的东西,不敢多用。

为了保证可靠性,修改代码:
IFCONF="/sbin/ifconfig"
[ ! -x "/sbin/ifconfig" ] &&
IFCONF=`type ifconfig | awk '{print $NF}' | sed 's/(\|)//g'`

当然,仍然不放心。。因为 type 有时候还会有这样的输出格式:
(bash) type type --> type is a shell builtin
(ksh) type type --> type is an alias for 'whence -v'

如果某人在环境变量里面 alias ifconfig='ifconifg -a' 了,这个脚本会报错吗?
好象不会,有兴趣可以研究一下。。。。。