1.5.1前提条件 为了使用这本书,你需要安装Liux操作系统。你可以通过两种方式,来完成安装。 l.在一台(不用很新)的电脑上安装Liux。你选择哪个Linux发行版安装,是无关紧要的 事。虽然大多数人一开始选择安装Ubuntu,.Fedora,或者OpenSUSE。如果你拿不定主 意,那就先试试Ubuntu。由于主机硬件配置不同,安装Linux时,你可能不费吹灰之力 就装上了,也可能费了九牛二虎之力还装不上。所以我建议,一台使用了几年的台式机, 至少要有256M的内存,6G的硬盘可用空间。尽可能避免使用笔记本电脑和无线网络, 在Liux环境下,它们经常不能工作。 2.使用“Live CD.”许多Linux发行版都自带一个比较酷的功能,你可以直接从系统安装 盘CDROM中运行Linux,而不必安装Linux。开机进入BIOS设置界面,更改引导项, 设置为“从CDROM启动”。 不管你怎样安装Lix,为了练习书中介绍的知识,你需要有超级用户(管理员)权限。 当你在自己的电脑上安装了Lix系统之后,就开始一边阅读本书,一边练习吧。本书大 部分内容都可以自己动手练习,坐下来,敲入命令,体验一下吧。 为什么我不叫它“GNU/Linux” 在某些领域,把Linux操作系统称为“GNU/Linux操作系统”,则政治立场正 确。但Lx”的问题是,没有一个完全正确的方式能命名它,因为它是由许许 多多,分布在世界各地的贡献者们,合作开发而成的。从技术层面讲,Lix只是 操作系统的内核名字,没别的含义。当然内核非常重要,因为有它,操作系统才能 运行起来,但它并不能构成一个完备的操作系统。 Richard Stallman是一个天才的哲学家,自由软件运动创始人,自由软件基金会 创办者,他创建了GNU工程,编写了第一版GNUC编译器(gcc),创立了GNU 通用公共协议(the GPL)等等。他坚持把Linux称为“GNU/Linux”,为的是准 确地反映GNU工程对Linux操作系统的贡献。然而,尽管GNU项目早于Linux 内核,项目的贡献应该得到极高的赞誉,但是把GNU用在Lix名字里,这对其 他为Liux的发展做出重大贡献的程序员来说,就不公平了。而且,我觉得要是叫 也要叫“Liux/GNU”比较准确一些,因为内核会先启动,其他一切都运行在内核 之上。 在目前流行的用法中,“Linux'”指的是内核以及在一个典型的Linux发行版中 所包含的所有免费及开源软件;也就是说,整个Iiux生态系统,不只有GNU项 20
1.5.1 前提条件 为了使用这本书,你需要安装 Linux 操作系统。你可以通过两种方式,来完成安装。 1. 在一台(不用很新)的电脑上安装 Linux。你选择哪个 Linux 发行版安装,是无关紧要的 事。虽然大多数人一开始选择安装 Ubuntu, Fedora, 或者 OpenSUSE。如果你拿不定主 意,那就先试试 Ubuntu。由于主机硬件配置不同,安装 Linux 时,你可能不费吹灰之力 就装上了,也可能费了九牛二虎之力还装不上。所以我建议,一台使用了几年的台式机, 至少要有 256M 的内存,6G 的硬盘可用空间。尽可能避免使用笔记本电脑和无线网络, 在 Linux 环境下,它们经常不能工作。 2. 使用“Live CD.”许多 Linux 发行版都自带一个比较酷的功能,你可以直接从系统安装 盘 CDROM 中运行 Linux,而不必安装 Linux。开机进入 BIOS 设置界面,更改引导项, 设置为“从 CDROM 启动”。 不管你怎样安装 Linux,为了练习书中介绍的知识,你需要有超级用户(管理员)权限。 当你在自己的电脑上安装了 Linux 系统之后,就开始一边阅读本书,一边练习吧。本书大 部分内容都可以自己动手练习,坐下来,敲入命令,体验一下吧。 为什么我不叫它“GNU/Linux” 在某些领域,把 Linux 操作系统称为“GNU/Linux 操作系统”,则政治立场正 确。但“Linux”的问题是,没有一个完全正确的方式能命名它,因为它是由许许 多多,分布在世界各地的贡献者们,合作开发而成的。从技术层面讲,Linux 只是 操作系统的内核名字,没别的含义。当然内核非常重要,因为有它,操作系统才能 运行起来,但它并不能构成一个完备的操作系统。 Richard Stallman 是一个天才的哲学家,自由软件运动创始人,自由软件基金会 创办者,他创建了 GNU 工程,编写了第一版 GNU C 编译器(gcc),创立了 GNU 通用公共协议(the GPL) 等等。他坚持把 Linux 称为“GNU/Linux”,为的是准 确地反映 GNU 工程对 Linux 操作系统的贡献。然而,尽管 GNU 项目早于 Linux 内核,项目的贡献应该得到极高的赞誉,但是把 GNU 用在 Linux 名字里,这对其 他为 Linux 的发展做出重大贡献的程序员来说,就不公平了。而且,我觉得要是叫 也要叫“Linux/GNU” 比较准确一些,因为内核会先启动,其他一切都运行在内核 之上。 在目前流行的用法中,“Linux”指的是内核以及在一个典型的 Linux 发行版中 所包含的所有免费及开源软件;也就是说,整个 Linux 生态系统,不只有 GNU 项 20
目软件。在操作系统商界,好像喜欢使用单个词的名字,比如说DOS,Windows, MacOS,Solaris,.Irix,AIX.所以我选择用流行的命名规则。然而,如果你喜欢用 “GNU/Linux”,当你读这本书时,可以在脑子里搜索并替换“Linux”。我不介意。 1.6 拓展阅读 Wikipedia网站上有些介绍本章提到的名人的文章,以下是链接地址: http://en.wikipedia.org/wiki/Linux_Torvalds .http://en.wikipedia.org/wiki/Richard_Stallman 介绍自由软件基金会及GNU项目的网站和文章: .http://en.wikipedia.org/wiki/Free_Software_Foundation ·http:/www.fsf.org ·http://www.gmu.org Richard Stallman用了大量的文字来叙述“GNU/Linux”的命名问题,可以浏览以下网页: .http://www.gnu.org/gnu/why-gnu-linux.html http://www.gnu.org/gnu/gnu-linux-faq.html#tools 21
目软件。在操作系统商界,好像喜欢使用单个词的名字,比如说 DOS, Windows, MacOS, Solaris, Irix, AIX. 所以我选择用流行的命名规则。然而,如果你喜欢用 “GNU/Linux”,当你读这本书时,可以在脑子里搜索并替换“Linux”。我不介意。 1.6 拓展阅读 Wikipedia 网站上有些介绍本章提到的名人的文章,以下是链接地址: • http://en.wikipedia.org/wiki/Linux Torvalds • http://en.wikipedia.org/wiki/Richard Stallman 介绍自由软件基金会及 GNU 项目的网站和文章: • http://en.wikipedia.org/wiki/Free Software Foundation • http://www.fsf.org • http://www.gnu.org Richard Stallman 用了大量的文字来叙述“GNU/Linux”的命名问题,可以浏览以下网页: • http://www.gnu.org/gnu/why-gnu-linux.html • http://www.gnu.org/gnu/gnu-linux-faq.html#tools 21
2什么是shell 一说到命令行,我们真正指的是shell。shell就是一个程序,它接受从键盘输入的命令,然 后把命令传递给操作系统去执行。几乎所有的Liux发行版都提供一个名为bash的来自GNU 项目的shell程序。“bash”是“Bourne Again SHell'”的首字母缩写,所指的是这样一个事实, bash是最初Unix上由Steve Bourne写成shell程序sh的增强版。 2.1终端仿真器 当使用图形用户界面时,我们需要另一个和shll交互的叫做终端仿真器的程序。如果我们 浏览一下桌面菜单,可能会找到一个。虽然在菜单里它可能都被简单地称为“terminal'”,但 是KDE用的是konsole,而GNOME则使用gnome-.terminal。还有其他一些终端仿真器可供 Linux使用,但基本上,它们都完成同样的事情,让我们能访问shell。也许,你可能会因为附 加的一系列花俏功能而喜欢上某个终端。 2.2第一次按键 好,开始吧·启动终端仿真器!一旦它运行起来,我们应该看到一行像这样的文字: [me@linuxbox -] 这叫做shell提示符,无论何时当shell准备好了去接受输入时,它就会出现。然而,它可 能会以各种各样的面孔显示,这则取决于不同的Lix发行版,它通常包括你的用户名@主 机名,紧接着当前工作目录(稍后会有更多介绍)和一个美元符号。 如果提示符的最后一个字符是“#”,而不是“$”,那么这个终端会话就有超级用户权限。 这意味着,我们或者是以©ot用户的身份登录,或者是我们选择的终端仿真器提供超级用户 (管理员)权限。 22
2 | 什么是 shell 一说到命令行,我们真正指的是 shell。shell 就是一个程序,它接受从键盘输入的命令,然 后把命令传递给操作系统去执行。几乎所有的 Linux 发行版都提供一个名为 bash 的来自 GNU 项目的 shell 程序。“bash”是“Bourne Again SHell”的首字母缩写,所指的是这样一个事实, bash 是最初 Unix 上由 Steve Bourne 写成 shell 程序 sh 的增强版。 2.1 终端仿真器 当使用图形用户界面时,我们需要另一个和 shell 交互的叫做终端仿真器的程序。如果我们 浏览一下桌面菜单,可能会找到一个。虽然在菜单里它可能都被简单地称为“terminal”,但 是 KDE 用的是 konsole , 而 GNOME 则使用 gnome-terminal。还有其他一些终端仿真器可供 Linux 使用,但基本上,它们都完成同样的事情,让我们能访问 shell。也许,你可能会因为附 加的一系列花俏功能而喜欢上某个终端。 2.2 第一次按键 好,开始吧。启动终端仿真器!一旦它运行起来,我们应该看到一行像这样的文字: [me@linuxbox ~]$ 这叫做 shell 提示符,无论何时当 shell 准备好了去接受输入时,它就会出现。然而,它可 能会以各种各样的面孔显示,这则取决于不同的 Linux 发行版,它通常包括你的用户名 @ 主 机名,紧接着当前工作目录(稍后会有更多介绍)和一个美元符号。 如果提示符的最后一个字符是“#”, 而不是“$”, 那么这个终端会话就有超级用户权限。 这意味着,我们或者是以 root 用户的身份登录,或者是我们选择的终端仿真器提供超级用户 (管理员)权限。 22
假定到目前为止,所有事情都进行顺利,那我们试着键入字符吧。在提示符下敲入一些像 下面一样的乱七八糟的字符: [me@linuxbox -]kaekfjaeifj 因为这个命令没有任何意义,所以shel会提示错误信息,并让我们再试一下: bash:kaekfjaeifj:command not found [me@linuxbox -] 2.3命令历史 如果按下上箭头按键,我们会看到刚才输入的命令“kaek5aei近”重新出现在提示符之后。 这就叫做命令历史。许多Liux发行版默认保存最后输入的500个命令。按下下箭头按键,先 前输入的命令就消失了。 2.4移动光标 可借助上箭头按键,来获得上次输入的命令。现在试着使用左右箭头按键。看一下怎样把 光标定位到命令行的任意位置?通过使用箭头按键,使编辑命令变得轻松些。 2.5关于鼠标和光标 虽然,shell是和键盘打交道的,但你也可以在终端仿真器里使用鼠标。X窗口系统(使 GUI工作的底层引擎)内建了一种机制,支持快速拷贝和粘贴技巧。如果你按下鼠标左键,沿 着文本拖动鼠标(或者双击一个单词)高亮了一些文本,那么这些高亮的文本就被拷贝到了一 个由X管理的缓冲区里面。然后按下鼠标中键,这些文本就被粘贴到光标所在的位置。试试 看。 注意:不要在一个终端窗口里使用Ctrl-c和Ctrl-v快捷键来执行拷贝和粘贴操作。它们不 起作用。对于shell来说,这两个控制代码有着不同的含义,它们在早于Microsoft Windows (定义复制粘贴的含义)许多年之前就赋予了不同的意义。 你的图形桌面环境(像KDE或GNOME),努力想和Windows一样,可能会把它的聚焦 策略设置成“单击聚焦”。这意味着,为了让窗口聚焦(变成活动窗口)你需要单击它。这与 23
假定到目前为止,所有事情都进行顺利,那我们试着键入字符吧。在提示符下敲入一些像 下面一样的乱七八糟的字符: [me@linuxbox ~]$ kaekfjaeifj 因为这个命令没有任何意义,所以 shell 会提示错误信息,并让我们再试一下: bash: kaekfjaeifj: command not found [me@linuxbox ~]$ 2.3 命令历史 如果按下上箭头按键,我们会看到刚才输入的命令“kaekfjaeifj”重新出现在提示符之后。 这就叫做命令历史。许多 Linux 发行版默认保存最后输入的 500 个命令。按下下箭头按键,先 前输入的命令就消失了。 2.4 移动光标 可借助上箭头按键,来获得上次输入的命令。现在试着使用左右箭头按键。看一下怎样把 光标定位到命令行的任意位置?通过使用箭头按键,使编辑命令变得轻松些。 2.5 关于鼠标和光标 虽然,shell 是和键盘打交道的,但你也可以在终端仿真器里使用鼠标。X 窗口系统(使 GUI 工作的底层引擎)内建了一种机制,支持快速拷贝和粘贴技巧。如果你按下鼠标左键,沿 着文本拖动鼠标(或者双击一个单词)高亮了一些文本,那么这些高亮的文本就被拷贝到了一 个由 X 管理的缓冲区里面。然后按下鼠标中键,这些文本就被粘贴到光标所在的位置。试试 看。 注意:不要在一个终端窗口里使用 Ctrl-c 和 Ctrl-v 快捷键来执行拷贝和粘贴操作。它们不 起作用。对于 shell 来说,这两个控制代码有着不同的含义,它们在早于 Microsoft Windows (定义复制粘贴的含义)许多年之前就赋予了不同的意义。 你的图形桌面环境(像 KDE 或 GNOME),努力想和 Windows 一样,可能会把它的聚焦 策略设置成“单击聚焦”。这意味着,为了让窗口聚焦(变成活动窗口)你需要单击它。这与 23
“聚焦跟随着鼠标”的传统X行为不同,传统X行为是指只要把鼠标移动到一个窗口的上方。 它能接受输入,但是直到你单击窗口之前它都不会成为前端窗口。设置聚焦策略为“聚焦跟随 着鼠标”,可以使拷贝和粘贴更方便易用。尝试一下。我想如果你试了一下你会喜欢上它的。 你能在窗口管理器的配置程序中找到这个设置。 2.6试试运行一些简单命令 现在,我们学习了怎样输入命令,那我们执行一些简单的命令吧。第一个命令是date。这 个命令显示系统当前时间和日期。 [me@linuxbox -]date Thu0ct2513:51:54EDT2007 一个相关联的命令,cal,它默认显示当前月份的日历。 [me@linuxbox -]cal October 2007 Su Mo Tu We Th Fr Sa 123456 78910111213 14151617181920 21222324252627 28293031 查看磁盘剩余空间的数量,输入df: [me@linuxbox-]$df Filesystem 1K-blocks Used Available Use%Mounted on /dev/sda2 15115452 5012392 994971634%/ /dev/sda5 59631908 2654542430008432 47%/home /dev/sda1 147764 17370122765 13%/b0ot tmpfs 256856 0 256856 0%/dev/shm 同样地,显示空闲内存的数量,输入命令free。 24
“聚焦跟随着鼠标”的传统 X 行为不同,传统 X 行为是指只要把鼠标移动到一个窗口的上方。 它能接受输入,但是直到你单击窗口之前它都不会成为前端窗口。设置聚焦策略为“聚焦跟随 着鼠标”,可以使拷贝和粘贴更方便易用。尝试一下。我想如果你试了一下你会喜欢上它的。 你能在窗口管理器的配置程序中找到这个设置。 2.6 试试运行一些简单命令 现在,我们学习了怎样输入命令,那我们执行一些简单的命令吧。第一个命令是 date。这 个命令显示系统当前时间和日期。 [me@linuxbox ~]$ date Thu Oct 25 13:51:54 EDT 2007 一个相关联的命令,cal,它默认显示当前月份的日历。 [me@linuxbox ~]$ cal October 2007 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 查看磁盘剩余空间的数量,输入 df: [me@linuxbox ~]$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 15115452 5012392 9949716 34% / /dev/sda5 59631908 26545424 30008432 47% /home /dev/sda1 147764 17370 122765 13% /boot tmpfs 256856 0 256856 0% /dev/shm 同样地,显示空闲内存的数量,输入命令 free。 24