命令行是向您的机器发送命令最直接的方式。如果您用了 GNU/Linux 命令行的话,您就会发现它要比您以前曾用过的任何其他命令行更为强大。这是因为您不仅能够访问所有 X 应用程序,还能够访问其他数以千计的终端模式(相对于图形模式)工具及其众多的参数和可能的参数组合,而这些是没有相对应的按钮或菜单等图形方式能够简单模拟的。
要承认的是,绝大多数人需要一点帮助才能开始。如果您还没有进入终端模式,并仍然在使用图形界面,那么首先请开启一个终端模拟器。访问 GNOME、KDE 或者其他您正在使用的窗口管理器的主菜单,您就能在 + 菜单中找到许多模拟器。请选中其中的某一个,比如 或 。根据您用户界面的不同,面板上可能会有相应的图标(图 1.2 “KDE 面板上的终端图标”)。
当您启动该终端模拟器后,您实际上是在执行一个 shell。这是您与之交互的程序的名字。接着您就会看到提示符:
[zhang@localhost zhang]$ |
以上假定您的用户名为zhang而您的机器名为 localhost (当您的机器不是某个现存网络的一部分的时候)。在提示符后面是让您输入命令的地方。请注意,当您是 root 的时候,提示符中的 $ 字符会变为 # (这只在默认配置下成立,因为您能够自定义 GNU/Linux 中所有这些细节)。要成为 root,请在启动 shell 后输入 su。
# 输入 root 密码(您输入的密码不会在屏幕上回显) [zhang@localhost zhang]$ su Password: # exit (或 Ctrl-D) 会让您返回普通用户帐户 [root@localhost zhang]# exit [zhang@localhost zhang]$ |
下文中将只是以一个 $ 来代表提示符,而不论您是一个普通用户还是 root。当您需要作为 root 来执行某条命令的时候,我们会提示您的。因此,请牢记上述 su 命令。
当您一启动一个 shell 时,一般您应该位于您自己的 home/ 目录。要显示当前目录名,请键入 pwd (代表显示工作目录(Print Working Directory)):
$ pwd /home/zhang |
命令 cd 与 DOS 中的那个基本相同。它的作用是改变工作目录。您可以用 . 和 .. 分别来代表当前和上层目录。仅仅输入 cd 会让您返回您的主目录。键入 cd - 能让您返回您访问过的前一个目录。最后,您可以键入 cd ~li_si 进入li_si的主目录(单独的 ~ 表示您自己的 home/ 目录)。请注意,作为一个普通用户,一般您不能够进入其他用户的 home/ 目录(除非他们特别授权您,或者这是您系统上的默认配置)。不过 root 不受此限。因此作为 root 您可以:
# pwd /root # cd /usr/share/doc/HOWTO # pwd /usr/share/doc/HOWTO # cd ../FAQ-Linux # pwd /usr/share/doc/FAQ-Linux # cd ../../../lib # pwd /usr/lib # cd ~li_si # pwd /home/li_si # cd # pwd /root |
所有进程都拥有它们各自的环境变量。shell 让您能够通过 echo 命令直接查看它们。现举几例:
PATH:它保存了在您键入一个命令的时候 shell 应该搜索的所有目录列表。请注意,和 DOS 不同,默认情况下 shell 不会在当前目录中搜索命令。
PS1:它决定了您的提示符应该显示什么。通常它是一个特殊序列的组合。详情请阅读 bash(1)手册页,或在终端键入 man bash 来查看。
要让 shell 打印出某个变量的值,您必须在该变量名前添加一个 $ 符号。例如:
$ echo 你好 你好 $ echo $HOME /home/zhang $ echo $USERNAME zhang $ echo 你好 $USERNAME 你好 zhang $ cd /usr $ pwd /usr $ cd $HOME $ pwd /home/zhang |
正如您所见,shell 会在执行命令前先用变量的值来替换它们。否则,上述 cd $HOME 例子就不会起作用了。实际上,shell 先用 $HOME 的值 /home/zhang 来替换它。然后,该命令就变为 cd /home/zhang。而这正是我们所需要的。echo $USERNAME 也一样。
不用多说,该命令的功能是:在标准输出(通常是屏幕)上输出一个或多个文件的内容。
$ cat /etc/fstab /dev/hda5 / ext2 defaults 1 1 /dev/hda6 /home ext2 defaults 1 2 /dev/hda7 swap swap defaults 0 0 /dev/hda8 /usr ext2 defaults 1 2 /dev/fd0 /mnt/floppy auto sync,user,noauto,nosuid,nodev 0 0 none /proc proc defaults 0 0 none /dev/pts devpts mode=0620 0 0 /dev/cdrom /mnt/cdrom auto user,noauto,nosuid,exec,nodev,ro 0 0 $ cd /etc $ cat modules.conf shells alias parport_lowlevel parport_pc pre-install plip modprobe parport_pc ; echo 7 > /proc/parport/0/irq #pre-install pcmcia_core /etc/rc.d/init.d/pcmcia start #alias char-major-14 sound alias sound esssolo1 keep /bin/zsh /bin/bash /bin/sh /bin/tcsh /bin/csh /bin/ash /bin/bsh /usr/bin/zsh |
这个名字是用来谐谑 UNIX® 上首先被使用的分页器 more 的。分页器是用来帮助用户一页一页(更准确地说,应该是一屏一屏)地查看长文件的程序。我们讨论 less 而不是 more 的原因是 less 更为直观。您应该使用 less 来查看单屏容纳不下的大文件。例如:
less /etc/termcap |
要在该文件中浏览,请使用上下方向键。按 Q 就可以退出。less 能做的要比只是显示:“按 H 键显示可用选项帮助”要多得多。
ls (LiSt)命令基本等同于 DOS 下的 dir 命令,不过它还有许许多多额外功能。实际上,这很大程度上归因于 UNIX® 下的文件有更多特性。ls 命令的语法是:
ls [选项] [文件|目录] [文件|目录...] |
如果没有在命令行中特别指明哪个文件或目录,ls 将列出当前目录中的文件。它有着众多的选项,这里我们只介绍其中的一些:
-a:列出所有文件,包括隐藏文件。还记得吗,UNIX® 下的隐藏文件是那些名字以 . 开头的。相对于选项 -a,-A 选项会列出“几乎”全部的文件,除了 “.” 和 “..”。
-i:在每个文件旁边打印其 inode 号(该文件在文件系统中的唯一编号,参见第 9 章 Linux 文件系统)。
有许多键盘快捷方式,它们主要的优点是节省了很多打字的时间。这一节假定您使用 Mandrakelinux 提供的缺省 shell -- bash,不过这些按键方式对其他 shell 也可能起作用。
首先:方向键。bash 保存了已执行命令的历史记录,您可以通过上、下方向键来查看。向前翻阅的最大行数由环境变量 HISTSIZE 定义。而且,这一历史记录能够在两个会话之间保留。因此,您就不会丢失您在上一个会话中曾经键入过的命令了。
左、右键在当前行移动光标,让您能够编辑您的命令。然而还有别的方式让您一次不止移动一个字符:例如 Ctrl-A 和 Ctrl-E 可以移到当前行的开头以及结尾。Backspace 和 Del 正如期望的那样起作用。Backspace 相当于 Ctrl-H。Del 和 Ctrl-D 也一样。Ctrl-K 可以从光标处删除到行末。Ctrl-W (或者 Alt-Backspace)可以删除光标前的一个单词。
在一个空白行中键入 Ctrl-D 将结束当前会话,这要比键入 exit 方便得多。Ctrl-C 将会打断当前正在执行的命令,不过如果您是在编辑命令行的过程中,它将会取消所有的编辑并返回到提示符。Ctrl-L 可以清屏。Ctrl-Z 暂停某项任务,并将其挂起。该快捷方式在您忘记在命令之后键入 “&” 时非常有用。比如:
$ xpdf MyDocument.pdf |
不过这样一来您就不能再使用您的 shell 了,因为其前台被任务 xpdf 进程占领。要将该任务转入后台运行并恢复您对 shell 的控制,只要按下 Ctrl-Z 后键入 bg。
最后,Ctrl-S 和 Ctrl-Q 分别用来暂停和继续对屏幕的输出。它们不常用,不过您可能会误按 Ctrl-S (毕竟在键盘上 S 和 D 靠的很近)。所以,如果您碰上了不管您输入什么都不能在终端屏幕上看得的怪事时,请试着按按 Ctrl-Q。注意:您在 Ctrl-S 和 Ctrl-Q 之间输入的所有字符将会被一起显示到屏幕上。