$rmfg$ Is -iltotal 04.查询文件在通常的UNIX操作系统中,有三个命令可以用于从文件中查找给定的字符串,并显示相应的行。●grep:最为常用,可用固定字符串来查询,也可用正则表达式来查询。egrep(extendedgrep):扩展的grep,可用正则表达式查询。●fgrep(fastgrep):快速grep,但只能查询固定字符串。在Linux操作系统中,这三个命令都已合并了,用户只要使用grep就可以了(当然也可以使用其他两个,事实上这两个是grep的链接。grep命令格式:grep[选项]字符串或正则表达式[文件列表]以下是grep命令的应用举例。显示信箱中Emml发送者:$grepFrom'$MAIL显示含有fork的C语言文件名:$grep-1fork*.c除了grep外,Linux还提供了其他文件查询工具,如:nngrep可以查询新闻组。zgrep可以查询压缩过的文件。zipgrep同zgrep。利用联机帮助命令man可以了解上述命令的具体用法。这是Linux下最重要的命令之一。属必须掌握的命令。其用法为:man命令其用法相当简单,只需在man后加上要查询的命令名,系统就会给出该命令的所有使用方法和说明。这对于学习Linux命令的益处很大。5.文件排序对文本文件,可以用命令sort进行排序。命令sort可以带有各种不同的选项,从而采用不同的排序方法。其格式为:sort[option][FILE]用选项“-f”,可以不区分大小写,例如:$lsI sort -f其中:“1”是管道命令,它将命令1s的输出作为命令sort的输入,所以Issort-f的含义,是将目录列表按字母排序显示,不区分字母的大小写。用选项“-n”,可以按数值大小进行排序,而不是按字母顺序进行排序。例如:is-s I sort-n用选项“-r”,可以用逆序排序,例如:$Is-s|sort-nr(从这里开始)用选项“+数值”,可以按跳过所定数值的域后的那个字段进行排序,例如:$Is-1|sort +4nr6。对文件的列或域的操作在Linux系统中,可以对文件中的列或域进行各种剪切和合并,常用命令有三个。14
14 $ rm f g $ ls -il total 0 4.查询文件 在通常的 UNIX 操作系统中,有三个命令可以用于从文件中查找给定的字符串,并显 示相应的行。 ● grep:最为常用,可用固定字符串来查询,也可用正则表达式来查询。 ● egrep(extendedgrep):扩展的 grep,可用正则表达式查询。 ● fgrep(fastgrep):快速 grep,但只能查询固定字符串。 在 Linux 操作系统中,这三个命令都已合并了,用户只要使用 grep 就可以了(当然也可 以使用其他两个,事实上这两个是 grep 的链接)。 grep 命令格式: grep[选项]字符串或正则表达式[文件列表] 以下是 grep 命令的应用举例。 显示信箱中 Emml 发送者: $ grep 'From' $MAIL 显示含有 fork 的 C 语言文件名: $grep -l 'fork' *.c 除了 grep 外,Linux 还提供了其他文件查询工具,如: nngrep 可以查询新闻组。 zgrep 可以查询压缩过的文件。 zipgrep 同 zgrep。 利用联机帮助命令 man 可以了解上述命令的具体用法。这是 Linux 下最重要的命令之 一。属必须掌握的命令。其用法为: man 命令 其用法相当简单,只需在 man 后加上要查询的命令名,系统就会给出该命令的所有使 用方法和说明。这对于学习 Linux 命令的益处很大。 5.文件排序 对文本文件,可以用命令 sort 进行排序。命令 sort 可以带有各种不同的选项,从而采 用不同的排序方法。其格式为: sort [option] [FILE] 用选项“-f”,可以不区分大小写,例如: $ls | sort -f 其中:“|”是管道命令,它将命令 1s 的输出作为命令 sort 的输入,所以 ls | sort -f 的含 义,是将目录列表按字母排序显示,不区分字母的大小写。 用选项“-n”,可以按数值大小进行排序,而不是按字母顺序进行排序。例如: $is -s | sort -n 用选项“-r”,可以用逆序排序,例如: $ls –s | sort -nr(从这里开始) 用选项“+数值”,可以按跳过所定数值的域后的那个字段进行排序,例如: $ls -1 | sort +4nr 6.对文件的列或域的操作 在 Linux 系统中,可以对文件中的列或域进行各种剪切和合并,常用命令有三个
cut:从文件中选择列或域。paste:对文件中的列或域进行合并。join:可根据关键域对文件进行合并。1)cut用cut可以仅显示文件的字节数和文件名:$ls-1 [cut-c29-4l, 55-上述命令中的“-c”表示按字符(character)选取,“29-41”表示字符区间,“55-"”表示从第55个字符开始到结尾。而“-5”则表示从开头到第5个字符。用cut命令可以显示用户名、用户全名和用户的主目录名:$ls-1 cut c29-4l,55-上述命令中的“-c”表示按字符(character)选取,“29-41”表示字符区间,“55-”表示从第55个字符开始到结尾。而“-5”则表示从开头到第5个字符。用cut命令可以显示用户名、用户全名和用户的主目录名:$cut -d:-f1,5-6/etc/passwd上述命令中“-d:”表示域的分隔符(delimiter)是“:”,-f之后的数字表示第几个域,1表示第1个域,5-6表示第5和第6个域。2)pastecut和paste命令组合使用可以显示用户全名、用户名、主目录名和注册的shell。cut -d: -f5 /etc/passwd>/tmp/tlcut-d:-fl /etc/passwd >/tmp/t2cut-d:-f6/etc/passwd|paste/tmp/tl/tmp/t2paste命令行中的“_”表示第三个输入文件来自标准输入。3)join用join命令可以根据共同的关键域(GID)而将/etc/passwd和/etc/group进行合并。$join-t:-jl4-j23letc/passwd/etc/group以上“-t”表示域的分隔符是“:”,而不是默认的制表符Tab或“\t”,“-i14”表示第1个文件的第4个域为共同域,“-j23”表示第2个文件的第3个域为共同域。7.文件的压缩和解压缩操作LINUX中使用gzip和compress命令可以完成对文件的压缩,用compress命令压缩的文件后缀名为“Z”。1)compress格式compress文件名也可以使用通配符同时压缩几个文件。默认情况下,一个文件压缩之后,源文件将会被删除。如果要解压缩文件,可以使用如下命令:uncompress文件名同样可以使用通配符*,Z解压缩所有的压缩文件,在指定文件名时要包括.z后缀。2)gzipgzip命令是一种新的压缩工具,它的压缩算法不同于compress命令。使用gzip命令时,应指定压缩类型和文件名。格式gzip-9文件名上述命令中-9选项用来告诉gzip命令使用最高压缩因素,是最常用的选项。gzip命令压缩文件的扩展名是,gz,并且压缩完毕后,源文件将被删除。解压缩文件时,可以使用15
15 cut:从文件中选择列或域。 paste:对文件中的列或域进行合并。 join:可根据关键域对文件进行合并。 1)cut 用 cut 可以仅显示文件的字节数和文件名: $ls -1 | cut -c29-4l, 55- 上述命令中的“-c”表示按字符(character)选取,“29-41”表示字符区间,“55-'’表示 从第 55 个字符开始到结尾。而“-5'’则表示从开头到第 5 个字符。 用 cut 命令可以显示用户名、用户全名和用户的主目录名: $ls -1 | cut c29-4l, 55- 上述命令中的“-c”表示按字符(character)选取,“29-41”表示字符区间,“55-”表示 从第 55 个字符开始到结尾。而“-5”则表示从开头到第 5 个字符。 用 cut 命令可以显示用户名、用户全名和用户的主目录名: $cut -d:-f1,5-6 /etc/passwd 上述命令中“-d:”表示域的分隔符(delimiter)是“:”,-f 之后的数字表示第几个域,1 表示第 1 个域,5-6 表示第 5 和第 6 个域。 2)paste cut 和 paste 命令组合使用可以显示用户全名、用户名、主目录名和注册的 shell。 cut -d:-f5 /etc/passwd > /tmp/tl cut -d:-fl /etc/passwd > /tmp/t2 cut -d:-f6 /etc/passwd | paste /tmp/tl /tmp/t2 paste 命令行中的“-”表示第三个输入文件来自标准输入。 3)join 用 join 命令可以根据共同的关键域(GID)而将/etc/passwd 和/etc/group 进行合并。 $join -t:-jl 4 -j2 3 /etc/passwd /etc/group 以上“-t”表示域的分隔符是“:”,而不是默认的制表符 Tab 或“\t”,“-j14”表示第 1 个文件的第 4 个域为共同域,“-j23”表示第 2 个文件的第 3 个域为共同域。 7.文件的压缩和解压缩操作 LINUX 中使用 gzip 和 compress 命令可以完成对文件的压缩,用 compress 命令压缩的 文件后缀名为“.Z”。 1)compress 格式 compress 文件名 也可以使用通配符同时压缩几个文件。默认情况下,一个文件压缩之后,源文件将会 被删除。如果要解压缩文件,可以使用如下命令: uncompress 文件名 同样可以使用通配符*.Z 解压缩所有的压缩文件,在指定文件名时要包括.z 后缀。 2)gzip gzip 命令是一种新的压缩工具,它的压缩算法不同于 compress 命令。使用 gzip 命令时, 应指定压缩类型和文件名。 格式 gzip -9 文件名 上述命令中-9 选项用来告诉 gzip 命令使用最高压缩因素,是最常用的选项。gzip 命令 压缩文件的扩展名是.gz,并且压缩完毕后,源文件将被删除。解压缩文件时,可以使用
gunzip或者gzip-d文件名。3)tartar命令(tapearchive)在很多年以前就集成在UNIX系统中了。但tar命令的用户界面不友好,尤其是在不熟悉tar命令的用法时。tar命令的目的是建立一个单一的文档文件,就像DOS环境下的ZIP命令一样。使用tar命令可以将多个文件组合成为一个单一的大文件,这样就更加易于管理和备份。格式tar[选项】[文件名]选项中包含很多选项,具体内容可以从mantar中获得。文件名中可以使用通配符。下面是两个使用tar的例子:tarcvfarchivel.tar/usr/src/linux此命令将/usr/src/linux目录下的所有文件组合成一个archivel.tar文件。使用c选项表示tar命令创建一个新文档,v选项表示tar命令在执行时显示提示信息,f选项表示tar命令使用文件名archivel.tar作为输出文件。tar命令不会自动在文件名后面加上扩展名.tar,所以使用者必须自已加上,tar以便识别文档文件。tar xvf archivel.tar此命令将释放archivel.tar中的文件。使用f选项指明要释放的tar文件。v选项指示tar在执行时显示提示信息。-x选项用来从文档中释放文件。1.5.4.进程控制命令Linux是一个多用户、多任务操作系统。多任务是指可以同时执行多个任务。但是一般计算机只有一个CPU,所以严格地说并不能同时执行多个任务。不过,由于Linux操作系统只分配给每个任务很短的运行时间片,如20毫秒,而且可以快速地在多个任务之间进行切换,因而看起来好像是在同时执行多个任务。在Linux系统中,任务就是进程,它是正在执行的程序。进程在运行过程中要使用CPU、内存、文件等计算机资源。由于Linux是多任务操作系统,可能会有多个进程同时使用同一个资源,因此操作系统要跟踪所有的进程及其使用的系统资源,以便进行进程和资源的管理。1.Linux的前台与后台进程在Linux中,进程可以分为前台进程和后台进程。前台进程可以交互操作,即可以从键盘接收输入且可以将输出送到屏幕;而后台进程是不可以交互操作的。前台进程一个接一个地执行,而后台进程可以与其他进程同时执行。2.进程控制前面的所有例子中,在shell提示符下输入的命令都是按前台方式执行的。如果要按后台方式执行,只要在命令行末尾加上“&”即可。1)利用两次命令指定两个后台进程Syes>/tmp/null&[1] 163$yes>/tmp/trash&[2]1642)用shell内部命令jobs来显示当前终端下的所有进程Sjobs[1]-Running yes>tmp/null &16
16 gunzip 或者 gzip-d 文件名。 3)tar tar 命令(tapearchive)在很多年以前就集成在 UNIX 系统中了。但 tar 命令的用户界面不 友好,尤其是在不熟悉 tar 命令的用法时。 tar 命令的目的是建立一个单一的文档文件,就像 DOS 环境下的 ZIP 命令一样。使用 tar 命令可以将多个文件组合成为一个单一的大文件,这样就更加易于管理和备份。 格式 tar [选项] [文件名] 选项中包含很多选项,具体内容可以从 mantar 中获得。文件名中可以使用通配符。下 面是两个使用 tar 的例子: tar cvf archivel.tar /usr/src/linux 此命令将/usr/src/linux 目录下的所有文件组合成一个 archivel.tar 文件。使用 c 选项表示 tar 命令创建一个新文档,v 选项表示 tar 命令在执行时显示提示信息,f 选项表示 tar 命令 使用文件名 archivel.tar 作为输出文件。 tar 命令不会自动在文件名后面加上扩展名.tar,所以使用者必须自己加上.tar 以便识 别文档文件。 tar xvf archivel.tar 此命令将释放 archivel.tar 中的文件。使用 f 选项指明要释放的 tar 文件。 v 选项指示 tar 在执行时显示提示信息。- x 选项用来从文档中释放文件。 1.5.4.进程控制命令 Linux 是一个多用户、多任务操作系统。多任务是指可以同时执行多个任务。但是一 般计算机只有一个 CPU,所以严格地说并不能同时执行多个任务。不过,由于 Linux 操作 系统只分配给每个任务很短的运行时间片,如 20 毫秒,而且可以快速地在多个任务之间进 行切换,因而看起来好像是在同时执行多个任务。 在 Linux 系统中,任务就是进程,它是正在执行的程序。进程在运行过程中要使用 CPU、 内存、文件等计算机资源。由于 Linux 是多任务操作系统,可能会有多个进程同时使用同 一个资源,因此操作系统要跟踪所有的进程及其使用的系统资源,以便进行进程和资源的 管理。 1.Linux 的前台与后台进程 在 Linux 中,进程可以分为前台进程和后台进程。前台进程可以交互操作,即可以从 键盘接收输入且可以将输出送到屏幕;而后台进程是不可以交互操作的。前台进程一个接 一个地执行,而后台进程可以与其他进程同时执行。 2.进程控制 前面的所有例子中,在 shell 提示符下输入的命令都是按前台方式执行的。如果要按后 台方式执行,只要在命令行末尾加上“&”即可。 1)利用两次命令指定两个后台进程 $yes > /tmp/null & [1] 163 $yes>/tmp/trash& [2] 1642)用 shell 内部命令 jobs 来显示当前终端下的所有进程 $jobs [1]-Running yes>tmp/null &
[2]+Runningyes>tmp/trash&3)用fg将一个后台进程转换为前台进程$ fg%1。yes>/tmp/null4)用组合Ctrl+Z来暂停执行一个进程,并转换为后台进程$ fg %lyes>/tmp/null[]-Stoppedyes>/tmp/null5)用bg(重新)运行一个后台进程$ bg %1[1]yes>/tmp/null6)用kill命令撤销一个进程$ kill %1如果想中止某个特定的进程,应该首先使用PS命令列出当前正在执行中的进程的清单,然后再使用kill命令中止其中的某一个或者全部进程。在默认情况下,ps命令将列出当前系统中的进程,如下所示:$ psPIDTTY STATTIMECOMMAND367pos0:00bash581pos0:01rxvt747pos0:00(applix)809pos0:18netscape index.html945po R0:00psps命令会列出当前正在运行的程序以及这些程序的进程号,也就是它们的PID。可以使用这些信息通过向kill命令发出一个“-9”,也就是SIGKILL信号来终止某个进程:$kill-9809在Linux系统中,可以定时执行一个程序。只需用at(或batch)、atq、atrm来分别安排、查询、删除定时作业任务。例如,下面列出一个脚本程序,并安排其在2:30am执行:$moreWholsWorkingdate>home/wang/bin/outwho>>/home/wang/bin/outSat-f/home/wang/bin/Who±sWorking 02:30Job4willbeexecutedusing/bin/sh进程之间可能具有父子关系,如在shell提示下执行的进程都是当前shell的子进程。shell也是一个进程,它不断地执行用户的输入命令。一般而言,当父进程结束时,其子进程也已结束。与文件系统相似,进程之间的关系也是树状的,但是其变化较快。所有进程都是由1号进程init进程派生出来的。这就是说,当用户退出系统后,该用户的所有进程,不管是前台的还是后台的,都将结束。如果要让一进程在用户退出系统后继续执行,则可使用nohup命令。例如:S nohup find-name,*game*,-print&[1] 320nohup: appending output tO nohup. out$17
17 [2]+Running yes>tmp/trash& 3)用 fg 将一个后台进程转换为前台进程 $ fg %1 。 yes>/tmp/null 4)用组合 Ctrl+Z 来暂停执行一个进程,并转换为后台进程 $ fg %l yes>/tmp/null [1] - Stopped yes>/tmp/null 5)用 bg(重新)运行一个后台进程 $ bg %1 [1]yes>/tmp/null 6)用 kill 命令撤销一个进程 $ kill %1 如果想中止某个特定的进程,应该首先使用 ps 命令列出当前正在执行中的进程的清 单,然后再使用 kill 命令中止其中的某一个或者全部进程。在默认情况下,ps 命令将列出 当前系统中的进程,如下所示: $ ps PID TTY STAT TIME COMMAND 367 p0 S 0:00 bash 581 p0 S 0:01 rxvt 747 p0 S 0:00 (applix) 809 p0 S 0:18 netscape index.html 945 p0 R 0:00 ps ps 命令会列出当前正在运行的程序以及这些程序的进程号,也就是它们的 PID。 可以使用这些信息通过向 kill 命令发出一个“-9”,也就是 SIGKILL 信号来终止某个 进程: $ kill -9 809 在 Linux 系统中,可以定时执行一个程序。只需用 at(或 batch)、atq、atrm 来分别安排、 查询、删除定时作业任务。例如,下面列出一个脚本程序,并安排其在 2:30am 执行: $ more WholsWorking date>home/wang/bin/out who>>/home/wang/bin/out $at-f/home/wang/bin/Who 土 sWorking 02:30 Job 4 will be executed using /bin/sh 进程之间可能具有父子关系,如在 shell 提示下执行的进程都是当前 shell 的子进程。 shell 也是一个进程,它不断地执行用户的输入命令。一般而言,当父进程结束时,其子进 程也已结束。与文件系统相似,进程之间的关系也是树状的,但是其变化较快。所有进程 都是由 1 号进程 init 进程派生出来的。 这就是说,当用户退出系统后,该用户的所有进程,不管是前台的还是后台的,都将 结束。如果要让一进程在用户退出系统后继续执行,则可使用 nohup 命令。例如: $ nohup find/-name,'*game*',-print& [1] 320 nohup:appending output tO nohup.out' $
3.进程的优先级进程是有优先级的。超级用户的优先级比普通用户的要高,用户前台进程的优先级比后台进程的要高。在Linux中,优先数为-20(最高优先级)-19(最低优先级)。默认优先数为O。所有用户都可以降低自已的优先级,而只有超级用户可以增加优先级。可以用nice命令或者系统调用来改变进程的优先级,具体使用方法可用命令“mannice”查询。1.5.5.系统管理Linux是一个功能强大而复杂的操作系统。为了能更好地发挥系统性能,需要一些系统管理方面的知识。本节介绍超级用户、账号管理、文件系统管理等内容。1.超级用户UID(UserID,用户IⅢI)称做用户标识符,它是系统分配给每个用户的用户识别号。系统通常通过UID而不是用户名来操作和保存用户信息。每一个Linux系统上都有一个UID为0的特殊用户,它通常称做超级用户或root用户(因为它的用户名通常为root)。当以root用户身份登录时,对整个系统具有完全的访问权限。也就是说,对于root用户,系统将不进行任何权限检查,并且系统把所有文件和设备的读、写和执行权限都提供给了root用户,这使得root用户无所不能。正因为如此,应当合理使用root账号。如果在root账号下使用命令不当,后果不堪设想。例如以root身份运行命令“/bin/rm-rf/”则将删除整个系统。因此,一般应以普通用户身份使用系统。1)使用su命令进入root用户身份当需要以root用户身份使用时,可以用su命令切换成root用户。在执行完系统管理后,应马上用exit命令切换到原来状态。命令su可以用来改变用户身份,如果需要切换成root用户,只要键入su并输入root。口令就可以了。例如:$supassword:#2)使用飞选项如果仅以root用户身份运行一个命令,可以使用选项-c,例如:#su-c”vi/etc/passwd”Password:3)改变shell为csh如果还需要改变所使用的shell,可以加上选项一s,例如:$su-s/bin/cshPassword:#echo $SHELL/bin/csh#2.用户和用户组管理用户管理是系统管理的一个重要部分。对Linux而言,每个用户都有一个惟一的用户名或登录名(loginname)。用户名用来标识每个用户,并避免一个用户删除另一个用户的文件这类事故的发生。每个用户还必须有一个口令。18
18 3.进程的优先级 进程是有优先级的。超级用户的优先级比普通用户的要高,用户前台进程的优先级比 后台进程的要高。在 Linux 中,优先数为-20(最高优先级)-19(最低优先级)。默认优先数为 0。所有用户都可以降低自己的优先级,而只有超级用户可以增加优先级。可以用 nice 命 令或者系统调用来改变进程的优先级,具体使用方法可用命令“man nice”查询。 1.5.5.系统管理 Linux 是一个功能强大而复杂的操作系统。为了能更好地发挥系统性能,需要一些系 统 管理方面的知识。本节介绍超级用户、账号管理、文件系统管理等内容。 1.超级用户 UID(UserID,用户Ⅲ)称做用户标识符,它是系统分配给每个用户的用户识别号。系统 通常通过 UID 而不是用户名来操作和保存用户信息。每一个 Linux 系统上都有一个 UID 为 0 的特殊用户,它通常称做超级用户或 root 用户(因为它的用户名通常为 root)。当以 root 用户身份登录时,对整个系统具有完全的访问权限。也就是说,对于 root 用户,系统将不 进行任何权限检查,并且系统把所有文件和设备的读、写和执行权限都提供给了 root 用户, 这使得 root 用户无所不能。 正因为如此,应当合理使用 root 账号。如果在 root 账号下使用命令不当,后果不堪设 想。例如以 root 身份运行命令“/bin/rm -rf/”则将删除整个系统。因此,一般应以普通用 户身份使用系统。 1)使用 su 命令进入 root 用户身份 当需要以 root 用户身份使用时,可以用 su 命令切换成 root 用户。在执行完系统管理 后,应马上用 exit 命令切换到原来状态。 命令 su 可以用来改变用户身份,如果需要切换成 root 用户,只要键入 su 并输入 root。 口令就可以了。例如: $ su password: # 2)使用飞选项 如果仅以 root 用户身份运行一个命令,可以使用选项-c,例如: #su -c”vi/etc/passwd” Password: 3)改变 shell 为 csh 如果还需要改变所使用的 shell,可以加上选项—s,例如: $ su -s /bin/csh Password: #echo $SHELL /bin/csh # 2.用户和用户组管理 用户管理是系统管理的一个重要部分。对 Linux 而言,每个用户都有一个惟一的用户 名或登录名(login name)。用户名用来标识每个用户,并避免一个用户删除另一个用户的文 件这类事故的发生。每个用户还必须有一个口令