3.3. 重要的 Linux 命令

本节深入探讨了 SUSE Linux 系统中最为重要的命令。本章所列命令只是众多命令中的一小部分。伴随各个命令列出了参数,并且适当的时候还给出了典型的示例应用程序。有关各个命令的详细信息,请使用 man,并在后面键入命令名称来查看其手册页,例如 man ls

在参考手册页中,用 PgUpPgDn 可以上下移动。用HomeEnd 可以切换显示文档的开头和结尾。按 Q 可以结束这种查看模式。使用 man man 可以了解有关 man 命令本身的更多信息。

下面的概述中使用不同的字体来表示各个命令元素。实际命令及其必需选项始终显示为命令选项。需要指定的内容或非必需参数均放在 [方括号] 中。

按需调整设置。如果没有名称为 file 的文件存在,就不需要写入 ls file。通常可以将几个参数组合起来,例如用 ls -la 来代替 ls -l -a

3.3.1. 文件命令

下节将列出最重要的文件管理命令。它包括从总体文件管理到文件系统 ACL 操纵的所有文件管理命令。

3.3.1.1. 文件管理

ls [options] [files]

如果运行 ls 时未附加任何参数,程序将以缩写格式列出当前目录中的内容。

-l

详细列表

-a

显示隐藏文件

cp [options] source target

source 复制到 target

-i

在覆盖现有 target 之前等待确认(如果需要)

-r

递归复制(包含子目录)

mv [options] source target

source 复制到 target,然后删除原始 source

-b

在移动 source 之前创建该文件的备份副本

-i

在覆盖现有 targetfile 之前等待确认(如果需要)

rm [options] files

从文件系统中删除指定文件。除非使用选项 -r,否则不能使用 rm 删除目录。

-r

删除所有现有子目录

-i

在删除各个文件之前等待确认

ln [options] source target

创建从 sourcetarget 的内部链接。通常这种链接直接指向同一文件系统上的 source。但是,如果执行带 -s 选项的 ln 命令,则可以创建一个符号链接,仅指向 source 所在的目录,支持跨文件系统的链接。

-s

创建符号链接

cd [options] [directory]

更改当前目录。执行不带任何参数的 cd 命令将转到用户主目录。

mkdir [options] directory

创建新目录。

rmdir [options] directory

删除指定的目录(如果该目录已清空)。

chown [options] username[:[group]] files

将文件所有权转让给具有指定用户名的用户。

-R

更改所有子目录中的文件和目录

chgrp [options] groupname files

将特定 file 的组所有权转让给具有指定组名的组。如果文件拥有者既是当前组也是新组的成员,该拥有者只能转让组所有权。

chmod [options] mode files

更改访问权限。

mode 参数由三个部分构成:groupaccessaccess typegroup 接受以下字符:

u

用户

g

group

o

其它

对于 access,用 + 可以授予权限,用 - 可以拒绝授予权限。

access type 受以下选项控制:

r

read

w

write

x

eXecute - 执行文件或转至目录

s

设置 uid 位 - 就像由文件拥有者启动那样启动应用程序或程序

也可以选择使用数字代码。此代码的四位数字由值 4、2 和 1 之和组成 - 即二进制掩码的十进制结果。第一位设置“设置用户 ID (SUID) (4)”标志、“设置组 ID (2)”和粘滞 (1) 位。第二位定义文件拥有者的权限。第三位定义组成员的权限,最后一位设置其他所有用户的权限。用 4 设置读权限,2 设置写权限,1 设置执行文件的权限。文件的拥有者通常都会收到 6 或 7,表示可执行文件。

gzip [parameters] files

此程序使用复杂的数学算法压缩文件内容。以这种方式压缩的文件的扩展名为 .gz,而且使用前需解压缩。要压缩若干文件甚至是整个目录,请使用 tar 命令。

-d

将打包的 gzip 文件解压缩,使其恢复原始大小,并且能够正常处理(类似命令 gunzip

tar options archive files

tar 将一个或多个文件放入档案。压缩是可选操作。tar 是相当复杂的命令,可以附带若干选项。最常用的选项如下:

-f

将输出结果写入文件,而不是按惯例显示在屏幕上

-c

创建新的 tar 档案

-r

将文件添加到现有档案中

-t

输出档案内容

-u

添加文件,但仅适用于文件比档案中已有的文件更新的情况

-x

将档案中的文件解包(抽取

-z

gzip 将生成的档案打包

-j

bzip2 压缩生成的档案

-v

列出已处理的文件

tar 创建的档案文件以 .tar 结尾。如果这个 tar 档案还使用 gzip 进行了压缩,则以 .tgz.tar.gz 结尾。如果是使用 bzip2 压缩的,则以 .tar.bz2 结尾。应用程序示例可见于第 3.1.5 节 “存档和数据压缩”

locate patterns

只有在安装 findutils-locate 包后,此命令才可用。使用 locate 命令可以查找指定文件所处的目录。如果需要,可使用通配符来指定文件名。该程序的速度非常快,因为它使用专为此目的创建的数据库(而不是搜索整个文件系统)。但恰恰是这一点也带来了一个重大缺陷:无法找到在最后更新文件数据库后创建的任何文件。以根用户身份使用 updatedb 可以生成该数据库。

updatedb [options]

此命令可以对 locate 使用的数据库进行更新。要包含所有现有目录中的文件,请以根用户身份运行程序。最好通过追加与号 (&) 令程序在后台运行,这样您就可以紧接着处理同一命令行 (updatedb &)。此命令通常作为 daily cron 作业运行(请参见 cron.daily)。

find [options]

使用 find 可以在指定目录中搜索文件。第一个参数指定搜索的起始目录。选项 -name 后面必须紧跟搜索字符串,字符串中也可以包含通配符。与使用数据库的 locate 不同,find 扫描的是实际目录。

3.3.1.2. 用于访问文件内容的命令

file [options] [files]

使用 file 可检测指定文件的内容。

-z

尝试查看压缩文件的内部

cat [options] files

cat 命令用于显示文件的内容,使用它可以将所有内容连续打印输出到屏幕上。

-n

在左侧对输出编号

less [options] files

此命令可用于浏览指定文件的内容。使用 PgUpPgDn 可以向上或向下滚动半屏,使用 Space 可以向下滚动一整屏。使用 HomeEnd 可以跳转至文件的开头和结尾。按 Q 可以退出程序。

grep [options] searchstring files

grep 命令用于在指定文件中查找特定的搜索字符串。如果找到搜索字符串,该命令将显示找到的 searchstring 所在的行及文件名。

-i

忽略大小写

-H

只显示各个文件的名称,不显示文本行

-n

另外显示含有匹配项的行的编号

-l

只列出其中不含 searchstring 的文件

diff [options] file1 file2

diff 命令用于比较任意两个文件的内容。该程序生成的输出将列出所有不匹配的行。这是只需发送程序变更而不是全部源代码的编程人员经常使用的命令。

-q

只报告两个文件是否不同

-u

生成一个“统一”的 diff,从而增加输出的可读性。

3.3.1.3. 文件系统

mount [options] [device] mountpoint

使用此命令可以将任意数据介质(如硬盘、CD-ROM 驱动器和其它设备)装入 Linux 文件系统的某个目录。

-r

只读装入

-t filesystem

指定文件系统,通常包括:ext2(表示 Linux 硬盘)、msdos(表示 MS-DOS 介质)、vfat(表示 Windows 文件系统)、iso9660(表示 CD)

对于没有在 /etc/fstab 中定义的硬盘,还须同时指定设备类型。在这种情况下只能由根用户装入。如果其他用户也应该能够装入文件系统,则应在 /etc/fstab 文件的对应行中输入选项 user(用逗号分隔多个用户),并保存所做更改。有关详细信息,请参见 mount(1) 手册页。

umount [options] mountpoint

此命令可用于从文件系统中卸载装入的驱动器。为防止数据丢失,请在将可移除的数据介质从其所在驱动器中移除之前运行此命令。通常只有根用户才能运行 mountumount 命令。要使其他用户也能运行这些命令,需编辑 /etc/fsstab 文件,以便为相应的驱动器指定选项 user

3.3.2. 系统命令

下节列出了用于检索系统信息以及进程和网络控制的几个最重要的命令。

3.3.2.1. 系统信息

df [options] [directory]

df(可用磁盘)命令如不与任何选项一同使用,则可以显示磁盘空间总量、当前占用磁盘空间以及所有已装入驱动器上的可用空间等相关信息。如果指定了目录,则只显示有关该目录所在的驱动器的信息。

-h

以用户可读的格式显示占用的块数(以 GB、MB 或 KB 为单位)

-T

文件系统的类型(ext2、nfs,等等)

du [options] [path]

执行此命令时若不带任何参数,则可以显示当前目录中的文件和子目录所占用的磁盘空间总量。

-a

显示各个文件的大小

-h

以用户可读的格式输出

-s

仅显示计算的总大小

free [options]

free 命令用于显示有关占用 RAM 和交换空间的信息,可指明这两个类别中的空间总量和占用量。有关详细信息,请参见 第 10.1.6 节 “free 命令” (↑参考)

-b

以字节为单位输出

-k

以 KB 为单位输出

-m

以 MB 为单位输出

date [options]

这个简单程序可以显示当前系统时间。如果以根用户身份运行,该程序也可用于更改系统时间。有关该程序的详细信息,请参见 date(1) 手册页。

3.3.2.2. 进程

top [options]

top 提供有关当前运行的进程的快速概览。按 H 键可访问一个页面,其中简要说明了用于自定义该程序的主要选项。

ps [options] [process ID]

如果运行时未指定任何选项,此命令将显示一个表,其中包含您已经启动的所有程序或进程。此命令的选项前不带连字符。

aux

显示所有进程的详细列表,不区分拥有者

kill [options] process ID

有时程序并不能正常终止。多数情况下,通过在执行 kill 命令时指定相应的进程 ID 就应能够停止此类异常程序(请参见 topps)。kill 将发送 TERM 信号,指示程序自行关闭。如果仍无效,可使用以下参数:

-9

发送一个 KILL 信号而不是 TERM 信号,这将在几乎所有情况下终止指定的进程

killall [options] processname

此命令类似 kill,但它使用进程名(而不是进程 ID)作为参数,可以取消具有该名称的所有进程。

3.3.2.3. 网络

ping [options] hostname or IP address

ping 命令是用于测试 TCP/IP 网络基本功能的标准工具。它可以向目标主机发送一个小的数据包,请求立即回复。如果发送有效,ping 将据此显示一条消息,指明网络链接基本有效。

-c number

确定要发送的包总数,并且在发送这些包后终止(默认情况下未设置任何限制)

-f

溢流 ping:发送尽可能多的数据包;这是为根用户保留的用于测试网络的常用方法

-i value

指定发送两个数据包的间隔(以秒为单位,默认值:一秒)

nslookup

域名系统将域名解析为 IP 地址。使用此工具可以将查询发送到名称服务器(DNS 服务器)。

telnet [options] hostname or IP address [port]

Telnet 实际上是一种因特网协议,能支持您跨网络在远程主机上操作。telnet 同时也是一个 Linux 程序的名称,该程序使用此协议支持远程计算机上的操作。

[Warning]警告

切勿在第三方可能“窃听”的网络上使用 Telnet。特别是在因特网上,请使用 ssh 之类的加密传送方法,避免恶意使用口令(请参见有关 ssh 的参考手册页)。

3.3.2.4. 其他

passwd [options] [username]

用户可以使用此命令随时更改自己的口令。根用户管理员可以使用该命令更改系统中任意用户的口令。

su [options] [username]

使用 su 命令可在当前正在运行的会话中以其它用户名登录。指定用户名和相应的口令。采用根用户身份时无需提供口令,因为根用户有权采用任意用户的身份。在未指定用户名的情况下使用该命令时,系统将提示您输入根用户口令并切换到超级用户(根用户)。

-

使用 su - 可为另一个用户启动登录 shell

halt [options]

为避免丢失数据,您应该始终使用此程序关闭系统。

reboot [options]

halt 的操作相同,只不过系统会立即重引导。

clear

此命令用于清空控制台中的可见区域。该命令不带选项。

3.3.3. 参考信息

本章所列命令只是众多命令中的一小部分。有关其它命令的信息或更详细的信息,建议您参考 O'Reilly 出版的《Linux in a Nutshell》