命令行是向您的机器发送命令最直接的方式。如果您用了 GNU/Linux 命令行的话,您就会发现它要比您以前曾用过的任何其他命令行更为强大。这是因为您不仅能够访问所有 X 应用程序,还能够访问其他数以千计的终端模式(相对于图形模式)工具及其众多的参数和可能的参数组合,而这些是没有相对应的按钮或菜单等图形方式能够简单模拟的。
要承认的是,绝大多数人需要一点帮助才能开始。如果您还没有进入终端模式,并仍然在使用图形界面,那么首先请开启一个终端模拟器。访问主菜单,您就能在 + 菜单中找到许多模拟器。请选中其中的某一个,比如 或 。根据您用户界面的不同,面板上可能会有相应的图标(图 1.2 “KDE 面板上的终端图标”)。
当您启动该终端模拟器后,您实际上就在使用 shell
。这是同您交互的程序的名称。您将看到提示符:
[zhang@localhost zhang]$
以上假设您的用户名是zhang,并且您机器的机器名是 localhost
(当您的机器不属于某个网络时就是这种情况)。提示符后面就是您输入命令的地方。请注意,当您为 root
用户时,提示符中的 $
字符将会变成 #
(仅当您使用默认设置的时候,因为这些设置在 GNU/Linux 中都可以修改)。要升级到 root
,请在启动 shell
后输入 su。
[zhang@localhost zhang]$ su # 输入 root 用户密码 (密码不会回显) Password: # 输入 exit (或按 Ctrl-D) 将让您返回普通用户账户 [root@localhost zhang]# exit [zhang@localhost zhang]$
当您启动一个 shell
时,一般您应该位于您自己的主目录。要显示当前目录名,请键入 pwd (代表显示工作目录(Print Working Directory)):
$ pwd /home/zhang
命令 cd 与 DOS 中的那个基本相同。它的作用是改变工作目录。您可以用 .
和 ..
分别来代表当前和上层目录。仅仅输入 cd 会让您返回您的主目录。键入 cd - 能让您返回您访问过的前一个目录。最后,您可以键入 cd ~li_si 进入li_si的主目录(单独的 ~
表示您自己的主目录)。请注意,作为一个普通用户,一般您不能够进入其他用户的主目录(除非他们特别授权您,或者这是您系统上的默认配置)。不过 root
不受此限。因此作为 root
您可以:
$ su - Password: # 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
:它决定了您的提示符应该显示什么。通常它是一个特殊序列的组合。详情请在终端键入 man bash 来查看 bash(1) 的手册页。
要让 shell
打印出某个变量的值,您必须在该变量名前添加一个 $
符号。例如:
$ echo Hello Hello $ echo $HOME /home/zhang $ echo $USERNAME zhang $ echo Hello $USERNAME Hello 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 # This file is edited by fstab-sync - see 'man fstab-sync' for details /dev/hda2 / ext3 defaults 1 1 /dev/hdc /mnt/cdrom auto umask=0022,user,iocharset=utf8,noauto,ro,exec,users 0 0 none /mnt/floppy supermount dev=/dev/fd0,fs=ext2:vfat,--,umask=0022,iocharset=utf8,sync 0 0 none /proc proc defaults 0 0 /dev/hda3 swap swap defaults 0 0 $ cd /etc $ cat modprobe.preload # /etc/modprobe.preload: kernel modules to load at boot time. # # This file should contain the names of kernel modules that are # to be loaded at boot time, one per line. Comments begin with # a `#', and everything on the line after them are ignored. # this file is for module-init-tools (kernel 2.5 and above) ONLY # for old kernel use /etc/modules nvidia-agp $ cat shells /bin/bash /bin/csh /bin/sh /bin/tcsh
这个名字是用来谐谑 UNIX® 上首先被使用的分页器 more 的。分页器是用来帮助用户一页一页(更准确地说,应该是一屏一屏)地查看长文件的程序。我们讨论 less 而不是 more 的原因是 less 更为直观。您应该使用 less 来查看单屏容纳不下的大文件。例如:
less /etc/termcap
要在该文件中浏览,请使用上下方向键。按 Q 就可以退出。less 能做的要比只是显示:“按 H 键显示可用选项帮助”要多得多。
ls (LiSt)命令基本等同于 DOS 下的 dir 命令,不过它还有许许多多额外功能。实际上,这很大程度上归因于 UNIX® 下的文件有更多特性。ls 命令的语法是:
ls [选项] [文件|目录] [文件|目录...]
如果没有在命令行中特别指明哪个文件或目录,ls 将列出当前目录中的文件。它有着众多的选项,这里我们只介绍其中的一些:
-a
:列出所有文件,包括隐藏文件。还记得吗,UNIX® 下的隐藏文件是那些名字以 .
开头的。相对于选项 -a
,-A
选项会列出“几乎”全部的文件,除了 “.” 和 “..”。
-h
:在每个文件后面以可读形式显示该文件的大小。这意味着您会看到文件大小中有后“K”、“M”和“G”之类的,例如“234K”和“132M”。请注意,该大小以 2 为底数,而不是以 10 为底数。这表示 1 K 实际上是 1024 字节而不是 1000 字节。
-i
:在每个文件旁边打印其 inode 号(该文件在文件系统中的唯一编号,参见第 4 章 Linux 文件系统)。
有许多键盘快捷方式,它们主要的优点是节省了很多打字的时间。这一节假定您使用 Mandriva Linux 提供的缺省 shell
-- bash,不过这些按键方式对其他 shell
也可能起作用。
首先:方向键。bash 保存了已执行命令的历史记录,您可以通过上、下方向键来查看。向前翻阅的最大行数由环境变量 HISTSIZE
定义。而且,这一历史记录能够在两个会话之间保留。因此,您就不会丢失您在上一个会话中曾经键入过的命令了。
左、右键在当前行移动光标,让您能够编辑您的命令。然而还有别的方式让您一次不止移动一个字符:例如 Ctrl-A 和 Ctrl-E 可以移到当前行的开头以及结尾。Backspace 和 Del 正如期望的那样起作用。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 之间输入的所有字符将会被一起显示到屏幕上。