xDroid's Blog

3 关于Shell世界的“Hello World” (从新手到菜鸟的Linux教程)

你有听说过“Shell”语言吗?如果这个词汇对你不是太熟悉的话,那么你更有可能听说过“脚本”(script)这个东西。不同于它在戏剧范畴的意思(表演戏剧、拍摄电影等所依据的底本又或者书稿的底本),在计算机学中,脚本是指使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称宏或者批处理文件。说道脚本语言,我们可能更熟悉python或者javascript(都是眼下火热的脚本语言);不过追根溯源,脚本语言的历史可以说到Bourne shell,就是标题里提到的shell的意思。

sh一开始是Unix系统中的终端解释器,后来GNU项目编写了一个兼容的、可以运行在Linux上面的版本,叫bash(Bourne-Again shell)(罕见的不是递归缩写的例子)。其实bash也有很多的衍生版本,但是在语法、结构、接口等方面都差不多,顶多只有微小的差别,所以我们就不太加以区分它们,都用bash来代称了。

如果要详细地对bash探讨一番,我估计可以写另外一个系列的教程了。不过注意到bash所支持的shell也是一种编程语言的话,我们就先要来看看怎么打出“Hello World”来。其实也很简单,只要这样:

wang:~$ echo 'Hello World!'
Hello World!

严格地说起来,其实echo不是一个bash的内嵌命令。所谓内嵌命令,就是bash本身提供支持的命令,比如cdhelp;像echo命令,其实是另一个可执行文件。这一点我们以后会再提及。

接下来的一件事情就比较“魔法”了;如果我们在上一条命令后面加上 > z.txt ,会发生什么事情呢?

wang:~$ echo 'Hello World!' > z.txt
wang:~$```
???发生了什么?看起来那个大于号像是把前面一个东西导入到了后面的文件中去。为了验证我们的猜想,用`ls`查看一下:
```bash
wang:~$ ls
Desktop    Downloads         Music     Public     Videos
Documents  examples.desktop  Pictures  Templates  z.txt

果然多出来一个z.txt文件。

可是我们怎么来查看文件内容呢?欲知后事如何,请待下回分解。