xDroid's Blog

14 waste cost (从新手到菜鸟的Linux教程)

标题只是我在练习反缩写能力,而已。

在没有word的年代,人们怎么知道自己作文写了多少字呢(误)?总不见得一个个数吧,所以有一个小巧的程序wc就是干这个事情的:

wang:~$ which wc
/usr/bin/wc
wang:~$ ll /usr/bin/wc
-rwxr-xr-x 1 root root 42336 10 15  2015 /usr/bin/wc*

真的很小哎。

随便试一下:

wang:~$ ls
Desktop    Downloads         Music     Public     Videos
Documents  examples.desktop  Pictures  Templates
wang:~$ wc examples.desktop
 240  569 8980 examples.desktop

哇( ⊙o⊙ )那三个数字是什么意思啊……查一下man wc好了:

WC(1) User Commands WC(1)

NAME
wc - print newline, word, and byte counts for each file

SYNOPSIS
wc [OPTION]… [FILE]…
wc [OPTION]… –files0-from=F

DESCRIPTION
Print newline, word, and byte counts for each FILE, and a total line if
more than one FILE is specified. With no FILE, or when FILE is -, read
standard input. A word is a non-zero-length sequence of characters
delimited by white space. The options below may be used to select
which counts are printed, always in the following order: newline, word,
character, byte, maximum line length.

所以它们分别代表行数,词数和字节数。

不过对于中文来说词数没有什么意义,既然wc判定一个词的方法是没有空格字符分割,所以这样做就没有什么意义:

wang:~$ echo "中文很美,不过wc不懂" > chinese
wang:~$ cat chinese
中文很美,不过wc不懂
wang:~$ wc chinese
 1  1 30 chinese

wc:怪我咯?)

后来估计吐槽的人实在太多,于是开发者就加上了一个统计unicode字符数的功能:

wang:~$ wc chinese -m
12 chinese

别忘了换行符也算一个字符。

这里补充一句,这个文件共30个字节,除掉换行符和wc两个英文字母,还剩下27个字节,所以每个中文字占3个字节。