21

Shell笔记之xargs

一直来使用的一个删除命令:

find . -type f -name "*.log" -print|xargs rm -f

原来竟有一个隐患,那就是虽然find命令是以”\n”为定界符,但是一旦文件中含有空格,RM命令却无法辨别真实的文件名。比如如果目录中有这样三个文件:


hello
world.log
hello world.log

在这个目录中执行命令就会删除上面两个文件hello和world.log,而不是预期的下面两个log文件。

安全的做法是指定XARGS的定界符

find . -type f -name "*.log" -print0|xargs -0 rm -f

13

Make things easy

在SO有一个看似非常诡异的时区问题,讲的是在JAVA中使用上海时区计算“1927-12-31 23:54:07”和“1927-12-31 23:54:08”之间的Timestamp差时是353而不是1.结果大神Jon Skeet十几分钟后就找到了原因。于是很多人惊叹于他的效率之高,Jon说道:

problem
It’s easy when you know what you’re looking for

01

rsync problem

If you’re puzzled why rsync not work any more after a system reboot with following error informations


rsync: Failed to exec ssh: Permission denied (13)
rsync error: error in IPC code (code 14) at pipe.c(86) [receiver=2.6.9]
rsync: writefd_unbuffered failed to write 4 bytes [receiver]: Broken pipe (32)
rsync error: error in IPC code (code 14) at io.c(1122) [receiver=2.6.9]

car Continue reading

30

字符编码详解及由来(UNICODE,UTF-8,GBK)

很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节”。

  再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为”计算机”。

  开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。
Continue reading