第5章 Linux shell及命令
本章主要内容
● Linux shell 概述。
● Linux 命令的应用。
Linux自问世起,其下的文本界面一直占据着重要的地位,通过文本界面中简单的指令即可快速对操作系统进行操作。命令的使用,使系统消耗的资源大量更少,特别是远程维护系统时,命令的优势非常明显。
在Linux系统下,多数系统管理员还是更喜欢使用传统的命令来操作系统,这不仅因为命令比图形操作更为稳定,而且命令可以完成一些连图形系统都不能完成的操作。命令行高效、灵活且功能强大,至今仍是专业人士的最爱。但需要注意的是,Linux的命令是区分大小写的。
Linux系统支持多种不同的shell,Linux的shell就是一种命令解释器,其可直接与内核进行交流,且支持自动执行定时任务,使得更加合理地利用系统资源,如在夜间执行一些耗资源、耗时间的任务。
5.1 Linux shell概述
UNIX/Linux的shell是系统内核与用户沟通的桥梁,它作为系统的命令解释器为用户提供解释命令的功能。同时shell也是一种程序设计语言,它为用户提供操作机器的交互接口,使用户输入的命令能够传送到内核执行并把处理结果显示给用户。
5.1.1 shell发展史及类别
在当今的UNIX/Linux操作系统上存在多种shell,而这些不同的shell都是根据不同的需求产生的。由于UNIX/Linux操作系统的shell采取独立、自由开发的政策,因为shell的种类不仅多,而且可以自由更换。
第一种广为流行使用的shell是由柏克莱大学的Bill Joy编写的,这种shell主要由于其语法与C语言像似而得名(即我们所说的C shell),其主要附在UNIX系统中,但在Red Hat Enterprises系列Linux的系统下仍然能够找到它的身影。
在众多的shell 中,Bourn shell 算是第一个有重要意义的shell,它取代了原先UNIX 系统上的Thompson shell,且沿用相同的执行文件名sh 至今。尽管今天Linux 操作系统上有多种shell,但Bourn shell 及其衍生系列在Linux 操作系统中的地位都没有发生过改变。
Red Hat Enterprises系列Linux系统所支持的shell,在/etc/shells目录下找到,所用命令如下。
[cat@rhl5 ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
目前,存在有多种版本的shell,现在流行的几种shell如表5-1所示。
表5-1 目前流行的shell
那么我们怎么知道用户当前使用的shell是哪类shell呢?一个很简单的做法就是在当前用户的终端下随便输入一个字符,如下所示。
[cat@rhl5 ~]# ok
-bash: ok: command not found
结果显示的是bash找不到“ok”命令,这说明用户当前使用的shell是bash。而若查看用户登录系统后默认使用哪个shell,则可以在/etc/passwd目录中找到,如下所示。
[cat@rhl5 ~]$ cat /etc/passwd | grep cat
cat:x:500:500:A Super Cat:/home/cat:/bin/bash
从以上的结果看到,当前用户默认使用的shell是bash。对于每个新创建的用户,在创建时指定使用的是哪种shell,这个配置在/etc/default/useradd目录下就能找到。
[root@rhl5 ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
5.1.2 shell的作用
不管是哪类用户,在登录Linux系统之后,都是无法直接与计算机进行交流的,这就需要一个中间角色来负责将用户输入的命令传达给计算机,使得计算机能够完成各种指定的操作。但只要用户登录后就可以执行操作,这是因为在用户登录操作系统后就执行了shell,而我们开启一个终端窗口,实际上是开启一个子shell。
对于计算机,它只能够识别由0和1组成的机器码,并利用这些机器码来完成各种操作。但我们输入的并非由0和 1 所组成的机器码,而是由一些字母或字母和数字等字符组成的指令。而shell就负责把用户所输入的命令翻译成这些包含0和1的机器码,然后传送到内核中去执行,并把执行结果显示在用户面前。
事实上,shell是命令语言、命令解释程序及程序设计语言的统称。更简单地说,shell其实就是Linux系统内核与用户之间的桥梁,它为用户提供使用操作系统的接口。如果把Linux内核比作一个球体的中心, shell就是这个球体的外层,如图5-1所示。
图5-1 shell与Linux内核的关系
形象地说,shell是介于操作系统内核与用户之间的一个绝缘层。而更准确地说,shell是一种强大的计算机程序设计语言,通过shell就能够轻松调用其他程序并对它们的输出进行处理,这种能力使得shell成为完成文本处理任务的一个理想工具。
Linux系统下的每个shell程序称为一个脚本,它是一种很容易使用的工具,通过它可以将系统调用、公共程序、工具以及编译过的二进制程序黏合在一起来并建立应用。而事实上,所有的Linux/UNIX命令和工具再加上公共程序,对于shell脚本来说都是可调用的。而shell的内置命令也会给脚本添加强而有力的支持并提高灵活性。shell脚本对于管理系统任务和其他重复工作的例程来说,都表现得非常好。
5.2 Linux命令的应用
在Linux操作系统下,命令行功能强大,可快速完成图形系统某些没法完成的操作。其高效性、灵活性目前得到不断提升,更重要的是,命令行的使用为机器节省了大量的资源,它比运行图形界面所消耗的资源少很多。
Linux系统下命令行的格式如下:
command [options] [arguments]
Linux 系统的命令实际上可视为一个可执行文件,因此在每条命令的执行的过程中,系统都会从所执行的命令中获取参数来创建对应的子进程,随命令的执行而产生的这个子进程,会根据命令的参数来执行,并且命令在返回结果的同时子进程也终止。命令的执行过程基本上按如下步骤。
(1)读取用户由键盘输入的命令行。
(2)分析命令,以命令名作为文件名,并将其他参数改造为系统调用execve( )完成内部处理所要求的形式。
(3)终端进程调用fork( )创建一个子进程。
(4)终端进程本身用系统调用wait4( )来等待子进程完成(如果是后台命令,则不等待)。当子进程运行时调用execve( ),子进程根据文件名(即命令名)到目录中查找有关文件(这是命令解释程序构成的文件),将它调入内存,执行这个程序(解释这条命令)。
(5)如果命令末尾有“&”号(后台命令符号),则终端进程不需要系统调用 wait4( )等待,立即显示提示符,让用户输入下一条命令,跳转到步骤⑴。如果命令末尾没有“&”号,则终端进程要一直等待,当子进程(即运行命令的进程)完成处理后终止,向父进程(终端进程)报告,此时唤醒终端进程,在做必要的判断等工作后,终端进程显示提示符,让用户输入新的命令,重复上述处理过程。
5.2.1 文件管理命令
1.cat命令:将文件内容连接后传送到标准输出或重定向到文件
补充说明:cat命令的全称为concatenate,使用权限对系统所有用户开放。
1)命令语法格式:cat [OPTION] [FILE]...
2)命令选项参数说明如下所示。
-n(number):从第一行开始对文件输出的所有行继续编号;
-b:忽略对空白行的编号;
-s(--squeeze-blank):将连续的两个空白行合并为一行;
3)范例列举:
[root@rhl5 ~]# cat /etc/hosts # 显示文件的内容
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 rhl5.super.com rhl5 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
[root@rhl5 ~]# cat-n /etc/hosts > hosts # 对文件的行编号并重定向到hosts文件
[root@rhl5 ~]# cat hosts # 显示hosts文件的内容
1 # Do not remove the following line, or various programs
2 # that require network functionality will fail.
3 127.0.0.1 rhl5.super.com rhl5 localhost.localdomain localhost
4 ::1 localhost6.localdomain6 localhost6
2.chmod命令:更改文件的访问权限
补充说明:chmod 命令的全称为 change mode,使用权限对系统所有用户开放。命令可更改的访问权限包括读(r)、写(w)和执行(x)三种,可使用“—”或“+”修改权限。
1)命令语法格式:chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]...--reference=RFILE FILE...
2)命令选项参数说明如下所示。
-c(changes):完成权限更改改后显示更改信息;
-f:忽略错误消息的输出;
-R(recursive):以递归的方式更改目录及其下的所有子目录的权限。
3)范例列举:
[root@rhl5 ~]# chmod+x hosts # 添加hosts 文件的可执行权限
[root@rhl5 ~]# ll hosts
-rwxr-xr-x 1 root root 235 Jul 21 18:47 hosts
[root@rhl5 ~]# chmod-x hosts # 取消hosts 文件的可执行权限
3.chown命令:更改文件的所有者
补充说明:chown 命令的全称为change owner,其使用权限对系统所有用户开放。
1)命令语法格式:chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]...--reference=RFILE FILE...
2)命令选项参数说明如下所示。
-c(changes):显示文件所有者更改后的信息;
-f:忽略错误消息的输出;
-R(recursive):以递归的方式更改目录及子目录的所有者;
3)范例列举:
[root@rhl5 ~]# chown-c cat:cat hosts # 把hosts 文件的所有者和组改为cat
changed ownership of `hosts' to cat:cat
[root@rhl5 ~]# ll hosts
-rw-r--r-- 1 cat cat 235 Jul 21 18:47 hosts
4.find命令:查找(符合条件)文件并将查找结果输出
补充说明:命令用于查找指定目录下的文件,使用权限对系统所有用户开放。
1)命令语法格式:find [-H] [-L] [-P] [path...] [expression]
2)命令选项参数说明如下所示。
-mount,-xdev : 只对指定目录下的文件进行检查;
-amin n : 查找在过去n 分钟内读取过的文件;
-atime n : 查找n 天前读取过的文件;
-cmin n : 查找在过去n 分钟内修改过的文件;
-ctime n : 查找在过去n 天内修改过的文件;
3)范例列举:
[root@rhl5 ~]# find /-name tty:* # 查找根目录下以tty:开头的全部文件,*是通配符
/sys/devices/pnp0/00:0b/tty:ttyS1
/sys/devices/pnp0/00:0a/tty:ttyS0
/sys/devices/platform/serial8250/tty:ttyS3
/sys/devices/platform/serial8250/tty:ttyS2
[root@rhl5 ~]# find /boot/grub/-atime-365 # 查找/boot/grub 目录下365 天前读取过的文件
/boot/grub/
/boot/grub/minix_stage1_5
/boot/grub/reiserfs_stage1_5
/boot/grub/device.map
/boot/grub/fat_stage1_5
/boot/grub/jfs_stage1_5
/boot/grub/iso9660_stage1_5
/boot/grub/e2fs_stage1_5
/boot/grub/stage2
/boot/grub/vstafs_stage1_5
/boot/grub/ufs2_stage1_5
/boot/grub/menu.lst
/boot/grub/ffs_stage1_5
/boot/grub/grub.conf
/boot/grub/xfs_stage1_5
/boot/grub/stage1
5.ln命令:在文件之间创建链接
补充说明:ln命令的全称为link,其创建的链接包括硬链接和软链接,命令的使用权限对系统所有用户开放。
1)命令语法格式:ln [OPTION]... [-T] TARGET LINK_NAME
2)命令选项参数说明如下所示。
-f(force):在链接时先将同名文件删除;
-d(directory):允许系统管理员硬链接自己的目录;
-i(interactive):在删除同名文件时先询问;
-n : 在进行软链接时,将 dist 视为一般的档案;
-s(symbolic):创建软链接(就是符号链接)。
3)范例列举:
[root@rhl5 ~]# ln-s /etc/hosts /hosts # 创建/etc/hosts 软链接到/hosts
[root@rhl5 ~]# ll /hosts
lrwxrwxrwx 1 root root 10 Jul 22 03:27 /hosts-> /etc/hosts
6.rm命令:删除文件或目录。
补充说明:rm命令的全称为remove,使用权限对系统所有用户开放。
1)命令语法格式:rm [OPTION]... FILE...
2)命令选项参数说明如下所示。
-i(interactive):删除前逐一询问确认;
-f(force):强行删除,无须逐一确认;
-r(recursive):将目录及子目录和文件逐一删除。
3)范例列举:
[root@rhl5 ~]# rm hosts # 以交互方式删除hosts 文件
rm: remove regular file `hosts'? y
[root@rhl5 ~]# rm-rf /hosts # 强行删除/hosts链接文件
7.wc命令:计算文件或标准输出设备的字节数、字数或是列数
补充说明:wc 命令的全称为word counts,使用权限对系统所有用户开放。
1)命令语法格式: wc [OPTION]... [FILE]...
2)命令选项参数说明如下所示。
-c:只显示字节数;
-l(lines):只显示行数;
-w(words):只显示字数;
3)范例列举:
[root@rhl5 ~]# wc-l /etc/hosts # 统计/etc/hosts文件的行数
4 /etc/hosts
8.split命令:将文件分割成指定大小的子文件
补充说明:分割后子文件名默认值为x和aY后缀组合(如第一个文件是aa,则第二个是ab,依次类推),使用权限对系统所有用户开放。
1)命令语法格式:split [OPTION] [INPUT [PREFIX]]
2)命令选项参数说明如下所示。
-a:指定用于构成输出名称文件后缀部分的字母数;
-b(bytes):用于指定子文件的字节数;
-l(LineCount):指定每个输出文件的行数(默认值是1000行);
3)范例列举:
[root@rhl5 ~]# split /var/log/anaconda.log # 把文件分割成1000行
[root@rhl5 ~]# ll xa*
-rw-r--r-- 1 root root 56150 Jul 22 16:08 xaa
-rw-r--r-- 1 root root 76319 Jul 22 16:08 xab
-rw-r--r-- 1 root root 84462 Jul 22 16:08 xac
-rw-r--r-- 1 root root 83293 Jul 22 16:08 xad
-rw-r--r-- 1 root root 80244 Jul 22 16:08 xae
-rw-r--r-- 1 root root 66498 Jul 22 16:08 xaf
-rw-r--r-- 1 root root 47811 Jul 22 16:08 xag
[root@rhl5 ~]# cat xaa | wc–l # 统计文件的行数
1000
[root@rhl5 ~]# split-b 100k /var/log/anaconda.log cxl # 分割为文件为100KB,以cxl为文件名前缀
[root@rhl5 ~]# ll cxl*
-rw-r--r-- 1 root root 102400 Jul 22 16:26 cxlaa
-rw-r--r-- 1 root root 102400 Jul 22 16:26 cxlab
-rw-r--r-- 1 root root 102400 Jul 22 16:26 cxlac
-rw-r--r-- 1 root root 102400 Jul 22 16:26 cxlad
-rw-r--r-- 1 root root 85177 Jul 22 16:26 cxlae
5.2.2 磁盘管理命令
1.dd命令:将指定大小的块复制到一个文件
补充说明:dd 命令的全称为disk dump,其在复制文件的同时可指定转储。命令使用权限对系统所有用户开放。
1)命令语法格式:dd [OPERAND]...
dd OPTION
2)命令选项参数说明如下所示。
if=FILE:输入文件名称,默认是标准输入;
of=FILE:输出文件名称,默认是标准输出;
bs= BYTES:同时设置输入/输出的块大小,单位是字节;
count=blocks:指定要复制的块数;
cbs=BYTES:每次转储的字节数,即指定转储缓冲区的大小;
obs= BYTES:每次输出的字节数,即指定块大小。
3)范例列举:
[root@rhl5 ~]# dd if=/dev/sda1 of=disk1.img #将/dev/sda1分区的数据复制到disk.img磁盘文件
208782+0 records in
208782+0 records out
106896384 bytes (107 MB) copied, 9.6282 seconds, 11.1 MB/s
[root@rhl5 ~]# dd if=/dev/zero bs=1024M count=1 of=disk.img # 创建1GB的img磁盘文件
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 9.03751 seconds, 119 MB/s
[root@rhl5 ~]# ll-h disk.img
-rw-r--r-- 1 root root 1.0G Jul 22 18:52 disk.img
2.mkswap命令:设置Linux系统的交换分区
补充说明:mkswap 命令的全称为make swap,用于将磁盘分区或文件设置为Linux 系统的交换分区,使用权限只对系统管理员开放。
1)命令语法格式:mkswap [OPTION] [-L label] device [size]
2)命令选项参数说明如下所示
-c(create):创建交换分区前先检查是否有损坏的区块。
-v0:创建旧式交换分区,此为预设值。
-v1:创建新式交换分区。
3)范例列举:
[root@rhl5 ~]# ll /dev/sdc*
brw-r----- 1 root disk 8, 32 Jul 22 18:43 /dev/sdc
brw-r----- 1 root disk 8, 33 Jul 22 18:45 /dev/sdc1
[root@rhl5 ~]# mkswap /dev/vgsdc1/lvsdc1 # 用/dev/sdc1磁盘分区创建交换分区
Setting up swapspace version 1, size = 5360316 kB
3.fdisk命令:设置Linux系统磁盘分区
补充说明:fdisk 命令的全称为find disk,使用权限对系统所有用户开放。
1)命令语法格式:fdisk [-u] [-b sectorsize] [options] device
fdisk-l [-u] [device ...]
fdisk-s partition ...
2)命令参数选项说明如下所示。
-b:指定的磁盘分区的大小;
-H(heads):指定磁盘头数;
-l(list):显示磁盘设备分区信息;
-v(version):显示版本信息。
3)范例列举:
[root@rhl5 ~]# fdisk-l /dev/sda # 显示磁盘设备分区信息
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 3916 31350847+ 8e Linux LVM
[root@rhl5 ~]# fdisk /dev/sda # 进入交互模式
The number of cylinders for this disk is set to 3916.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help):
4.df命令:显示系统磁盘空间使用信息
补充说明:df命令的全称为disk free,其能够显示挂载到系统的磁盘空间信息,使用权限对系统所有用户开放。
1)命令语法格式:df [opinions]... [FILE]...
2)命令参数选项说明如下所示
-a(all):包含所有具有0 块的文件系统;
-i(inodes):显示索引节点的信息而不显示已使用的块
-l(local):限制列出的档案结构;
-P(portability):使用POSIX输出格式;
-t(type):限制列出文件系统的类型。
3)范例列举:
[root@rhl5 ~]# df # 以数据块为单位显示挂载的磁盘空间信息
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol01
29329476 2477152 25338444 9% /
/dev/sda1 101086 12054 83813 13% /boot
tmpfs 302176 0 302176 0% /dev/shm
[root@rhl5 ~]# df-h # 以GB为单位显示挂载的磁盘空间信息
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol01
28G 2.4G 25G 9% /
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 296M 0 296M 0% /dev/shm
5.mount命令:挂载文件系统
补充说明:mount 命令可将某个磁盘分区的内容解读成文件系统,然后将其挂载到目录的某个位置之下,命令的使用权限只对系统管理员开放。
1)命令语法格式:mount [-lhV]
mount-a [-fFnrsvw] [-t vfstype] [-O optlist]
mount [-fnrsvw] [-o options [,...]] device | dir
2)命令参数选项说明如下所示。
-a(all):将/etc/fstab文件中定义的所有文件系统挂载;
-f:模拟整个文件系统挂载的过程;
-n:挂载未写入/etc/mtab文件的文件系统;
-L(label):将含有特定标签的硬盘分割挂载。
-U uuid(Universaly Unique Identifier):将指定标识符的分区挂载;
-o ro(read only):用只读模式挂载;
-o rw(read write):用可读写模式挂载;
3)范例列举:
[root@rhl5 ~]# mount-o ro /dev/sdb1 /mnt # 以只读方式挂载/dev/sdb1 分区到/mnt目录下
[root@rhl5 ~]# mount # 显示系统已挂载分区的信息
/dev/mapper/VolGroup00-LogVol01 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/sdb1 on /mnt type ext3 (ro)
5.2.3 系统管理命令
1.kill命令:终止执行中的程序
补充说明:kill 命令可向进程发送指定的信号(默认发送的信号是 SIGTERM),进程根据信号的类型执行对应的操作。命令的使用权限对系统所有用户开放。
1)命令语法格式:kill [-s signal |-p ] [-a ] [-- ] pid ...
kill-l [ signal ]
2)命令参数选项说明如下所示。
-l(list):显示信号的信息;
-s(signal):指定要发送的信号。
3)范例列举:
[root@rhl5 ~]# kill-l # 列出所有信号的信息
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
[root@rhl5 ~]# ps-ef | grep top # 获取top进程的信息
root 3491 3363 0 20:54 pts/1 00:00:00 top
root 3495 3223 0 20:54 pts/0 00:00:00 grep top
[root@rhl5 ~]# kill-9 3363 # 强行终止进程号为3363的进程
[root@rhl5 ~]# ps-ef | grep top
root 3497 3223 0 20:55 pts/0 00:00:00 grep top
2.last命令:显示登录系统的用户信息
补充说明:last 命令用于显示系统开机以来记录用户登录、系统重启等信息的列表清单,命令的使用权限对系统所有用户开放。
1)命令语法格式:last [options] [name...] [tty...]
2)命令参数选项说明如下所示。
-a:在最后一行显示主机名;
-R:忽略显示主机名;
-o(old):以旧格式读取wtmp文件;
-x:显示系统条目和运行级别的变化。
3)范例列举:
[root@rhl5 ~]# last # 显示登录过系统的用户信息
rootpts/1 192.168.217.1 Tue Jul 23 02:33 still logged in
root pts/0 192.168.217.1 Tue Jul 23 02:29 still logged in
reboot system boot 2.6.18-164.el5 Tue Jul 23 02:27 (00:06)
root pts/1 192.168.217.1 Mon Jul 22 20:55–down (00:00)
root pts/2 192.168.217.1 Mon Jul 22 20:45- down (00:09)
root pts/1 192.168.217.1 Mon Jul 22 20:37- 20:54 (00:17)
root pts/1 192.168.217.1 Mon Jul 22 20:34- 20:37 (00:03)
root pts/0 192.168.217.1 Mon Jul 22 20:23- down (00:32)
reboot system boot 2.6.18-164.el5 Mon Jul 22 20:19 (00:36)
root pts/1 192.168.217.1 Mon Jul 22 18:50- down (00:11)
root pts/0 192.168.217.1 Mon Jul 22 17:27- 19:01 (01:33)
reboot system boot 2.6.18-164.el5 Mon Jul 22 17:25 (01:36)
root pts/0 192.168.217.1 Mon Jul 22 15:58- down (01:25)
reboot system boot 2.6.18-164.el5 Mon Jul 22 15:57 (01:26)
root pts/0 192.168.217.1 Mon Jul 22 03:14- down (00:26)
reboot system boot 2.6.18-164.el5 Mon Jul 22 03:11 (00:29)
root pts/1 192.168.217.1 Sun Jul 21 18:40- down (00:56)
root pts/0 192.168.217.1 Sun Jul 21 18:37- 19:37 (00:59)
reboot system boot 2.6.18-164.el5 Sun Jul 21 18:37 (01:00)
root pts/1 :0.0 Sun Jul 14 07:53- down (00:00)
root :0 Sun Jul 14 07:53- down (00:00)
root :0 Sun Jul 14 07:53- 07:53 (00:00)
reboot system boot 2.6.18-164.el5 Sun Jul 14 07:52 (00:01)
reboot system boot 2.6.18-164.el5 Sun Jul 14 07:45 (00:05)
wtmp begins Sun Jul 14 07:45:20 2013
[root@rhl5 ~]# last | wc-l # 统计登录用户的数量
26
3.free命令:显示系统内存状态
补充说明:free 命令显示内存的信息,包括物理内存、虚拟的交换文件内存、共享内存区段以及系统主要使用的缓冲区等。其使用权限对系统所有用户开放。
1)命令语法格式:free [options] [-s delay ] [option]
2)命令参数选项说明如下所示。
-b(bytes):以字节为单位显示内存使用情况;
-k:以KB为单位显示内存使用情况;
-m:以MB为单位显示内存使用情况;
-o:不显示缓冲区调节列;
-s:持续观察内存使用状况。
-t:以KB为单位显示内存值,并统计每列值的总和。
3)范例列举:
[root@rhl5 ~]# free # 显示内存的使用情况
total used free shared buffers cached
Mem: 604356 214156 390200 0 15464 154924
-/+buffers/cache: 43768 560588
Swap: 1048568 0 1048568
[root@rhl5 ~]# free-ms 3 #以MB为单位每隔3秒显示一次(按Ctrl+C组合键退出,即发送一个中断信号)
total used free shared buffers cached
Mem: 590 209 381 0 15 151
-/+buffers/cache: 42 547
Swap: 1023 0 1023
total used free shared buffers cached
Mem: 590 209 381 0 15 151
-/+buffers/cache: 42 547
1023 0 1023Swap:
total used free shared buffers cached
Mem: 590 209 381 0 15 151
-/+buffers/cache: 42 547
Swap: 1023 0 1023
……
4.uname命令:显示系统信息
补充说明:uname 的全称为unix name,其可以显示计算机类型、系统时间、主机名等信息,使用权限对系统所有用户开放。
1)命令语法格式:uname [OPTION]...
2)命令参数选项说明如下所示。
-a(all):显示系统概要信息;
-m(machine):显示系统主机类型;
-n(nodename):显示系统的计算机主机名;
-r(release):显示系统发行版的内核编号。
3)范例列举:
[root@rhl5 ~]# uname-a # 显示计算机概要信息
Linux rhl5.super.com 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386GNU/Linux
5.date命令:显示或设置系统的日期和时间
补充说明:date命令可以不同的格式显示或设置当前的系统时钟值,使用权限对系统所有用户开放。
1)命令语法格式:date [OPTION]... [+FORMAT]
2)命令参数选项说明如下所示。
-d(described):以STRING的格式来显示时间;
-r(reference):显示文件最后的修改时间;
-s(set):将系统时间设为datestr中描述的格式;
-u(universal):显示或设置通用时间值。
3)范例列举:
[root@rhl5 ~]# date# 显示系统时间和日期
Tue Jul 23 18:35:30 EDT 2013
[root@rhl5 ~]# date-s "2013-07-23 22:40:30" # 修改系统时间和日期
Tue Jul 23 22:40:30 EDT 2013
6.hwclock命令:设置系统硬件时钟
补充说明:hwclock命令的全称是hardware clock,其可更改主板上的时钟值(时钟可分为硬件时钟和系统时钟,主板上的时钟为硬件时钟,内核的时钟为系统时钟),命令的使用权限只对系统管理员开放。
1)命令语法格式:hwclok [options] [--set--date=<date and time>]
2)命令参数说明如下所示。
--adjust:估算硬件时钟的偏差,并用来校正硬件时钟;
--directisa:直接以I/O指令来存取硬件时钟;
--hctosys:将系统时钟值调整为与目前的硬件时钟值一致;
--show:显示硬件时钟的时间与日期;
--systohc:将硬件时钟值调整为与目前的系统时钟值一致。
3)范例列举:
[root@rhl5 ~]# hwclock# 显示硬件时钟
Tue 23 Jul 2013 03:19:08 AM EDT-0.036489 seconds
[root@rhl5 ~]# hwclock–w # 同步系统时钟到硬件时钟
5.2.4 压缩和解压缩命令
1.tar命令:文件归档备份
补充说明:tar命令的全称是tape archive,其用来建立、还原备份文件,命令本身无压缩功能,但它支持归档式压缩,使用权限对系统所有用户开放。
1)命令语法格式:tar [options] [archive_file_name] [source_file]
2)命令参数选项说明如下所示。
-c(create):新建归档文件;
-d(diff)查找归档文件与文件系统的差异;
-t(list):显示归档文件的内容;
-x(extract):解压缩归档文件;
-u(update):仅增加归档文件中没有的文件;
-f(file):指定归档的文件;
-v(verbose):显示命令执行过程的信息;
-z(gzip):压缩或解压缩归档文件。
3)范例列举:
[root@rhl5 ~]# tar cvf boot.tar /boot/# 归档/boot/下的所有文件到当前目录下
tar: Removing leading `/' from member names
/boot/
/boot/initrd-2.6.18-164.el5.img
/boot/symvers-2.6.18-164.el5.gz
/boot/config-2.6.18-164.el5
/boot/vmlinuz-2.6.18-164.el5
/boot/grub/
/boot/grub/minix_stage1_5
/boot/grub/reiserfs_stage1_5
/boot/grub/device.map
/boot/grub/fat_stage1_5
/boot/grub/jfs_stage1_5
/boot/grub/splash.xpm.gz
/boot/grub/iso9660_stage1_5
/boot/grub/e2fs_stage1_5
/boot/grub/stage2
/boot/grub/vstafs_stage1_5
/boot/grub/ufs2_stage1_5
/boot/grub/menu.lst
/boot/grub/ffs_stage1_5
/boot/grub/grub.conf
/boot/grub/xfs_stage1_5
/boot/grub/stage1
/boot/System.map-2.6.18-164.el5
/boot/lost+found/
/boot/.vmlinuz-2.6.18-164.el5.hmac
[root@rhl5 ~]# tar czvf boot.tar.gz /boot/# 归档并压缩/boot/目录下的文件到当前目录下
tar: Removing leading `/' from member names
/boot/
/boot/initrd-2.6.18-164.el5.img
/boot/symvers-2.6.18-164.el5.gz
/boot/config-2.6.18-164.el5
/boot/vmlinuz-2.6.18-164.el5
/boot/grub/
/boot/grub/minix_stage1_5
/boot/grub/reiserfs_stage1_5
/boot/grub/device.map
/boot/grub/fat_stage1_5
/boot/grub/jfs_stage1_5
/boot/grub/splash.xpm.gz
/boot/grub/iso9660_stage1_5
/boot/grub/e2fs_stage1_5
/boot/grub/stage2
/boot/grub/vstafs_stage1_5
/boot/grub/ufs2_stage1_5
/boot/grub/menu.lst
/boot/grub/ffs_stage1_5
/boot/grub/grub.conf
/boot/grub/xfs_stage1_5
/boot/grub/stage1
/boot/System.map-2.6.18-164.el5
/boot/lost+found/
/boot/.vmlinuz-2.6.18-164.el5.hmac
[root@rhl5 ~]# tar vzxf boot.tar.gz# 解压缩归档文件到当前目录下
boot/
boot/initrd-2.6.18-164.el5.img
boot/symvers-2.6.18-164.el5.gz
boot/config-2.6.18-164.el5
boot/vmlinuz-2.6.18-164.el5
boot/grub/
boot/grub/minix_stage1_5
boot/grub/reiserfs_stage1_5
boot/grub/device.map
boot/grub/fat_stage1_5
boot/grub/jfs_stage1_5
boot/grub/splash.xpm.gz
boot/grub/iso9660_stage1_5
boot/grub/e2fs_stage1_5
boot/grub/stage2
boot/grub/vstafs_stage1_5
boot/grub/ufs2_stage1_5
boot/grub/menu.lst
boot/grub/ffs_stage1_5
boot/grub/grub.conf
boot/grub/xfs_stage1_5
boot/grub/stage1
boot/System.map-2.6.18-164.el5
boot/lost+found/
boot/.vmlinuz-2.6.18-164.el5.hmac
2.zip命令:压缩文件程序
补充说明:zip命令属于压缩程序,压缩后的文件以“.zip”为后缀名,命令的使用权限对系统所有用户开放。
1)命令语法格式:zip [options] [ file1 file2 ...]
2)命令参数选项说明如下所示。
-c:给压缩文件加上注释;
-d:删除压缩文件内指定的文件;
-g:将文件压缩后附加已有压缩文件;
-j:只保存文件名称及其内容;
-m:删除被压缩文件的原文件;
-o:将压缩文件的时间设置为与最新文件的时间相同;
-q:不显示命令执行的过程;
-r:以递归方式处理指定目录下的文件(即子文件)。
3)范例列举:
[root@rhl5 ~]# zip-r boot.zip boot# 以递归方式压缩boot 及子目录和文件
adding: boot/ (stored 0%)
adding: boot/vmlinuz-2.6.18-164.el5 (deflated 2%)
adding: boot/initrd-2.6.18-164.el5.img (deflated 0%)
adding: boot/config-2.6.18-164.el5 (deflated 74%)
adding: boot/grub/ (stored 0%)
adding: boot/grub/e2fs_stage1_5 (deflated 36%)
adding: boot/grub/iso9660_stage1_5 (deflated 32%)
adding: boot/grub/grub.conf (deflated 44%)
adding: boot/grub/ufs2_stage1_5 (deflated 34%)
adding: boot/grub/minix_stage1_5 (deflated 34%)
adding: boot/grub/stage2 (deflated 44%)
adding: boot/grub/menu.lst (deflated 44%)
adding: boot/grub/fat_stage1_5 (deflated 34%)
adding: boot/grub/xfs_stage1_5 (deflated 35%)
adding: boot/grub/stage1 (deflated 16%)
adding: boot/grub/vstafs_stage1_5 (deflated 34%)
adding: boot/grub/ffs_stage1_5 (deflated 34%)
adding: boot/grub/jfs_stage1_5 (deflated 36%)
adding: boot/grub/device.map (deflated 5%)
adding: boot/grub/reiserfs_stage1_5 (deflated 35%)
adding: boot/grub/splash.xpm.gz (deflated 0%)
adding: boot/System.map-2.6.18-164.el5 (deflated 73%)
adding: boot/lost+found/ (stored 0%)
adding: boot/.vmlinuz-2.6.18-164.el5.hmac (deflated 24%)
adding: boot/symvers-2.6.18-164.el5.gz (deflated 0%)
[root@rhl5 ~]# zip-mg boot.zip disk1.img # 把disk1.img 文件加到压缩文件中并删除原文件
adding: disk1.img (deflated 95%)
3.bzip2命令:文件压缩程序
补充说明:bzip2 采用新的压缩演算法,压缩效果比传统的 LZ77/LZ78 更好,但不能压缩目录,命令的使用权限对系统所有用户开放。
1)命令语法格式:bzip2 [options] [filenames ...]
2)命令参数选项说明如下所示。
-c(compress):将压缩与解压缩的结果发送到标准输出;
-d(decompress):执行解压缩;
-f(force):在压缩或解压缩过程中强行覆盖同名文件;
-k(keep)在压缩或解压缩过程中保留原文件;
-t(test):测试压缩文件的完整性
-z:强制执行压缩。
3)范例列举:
[root@rhl5 ~]# bzip2-vz boot.tar boot.tar.gz # 压缩文件,被压缩的文件之间用空格隔开
boot.tar: 1.162:1, 6.887 bits/byte, 13.91% saved, 6522880 in, 5615477 out.
boot.tar.gz: 0.995:1, 8.038 bits/byte,-0.47% saved, 5608469 in, 5634792 out.
[root@rhl5 ~]# ll boot.zip
-rw-r--r-- 1 root root 11401741 Jul 24 06:48 boot.zip
4.unzip命令:解压缩zip压缩文件
补充说明:unzip命令用于解压缩zip命令的压缩文件,其使用权限对系统所有用户开放。
1)命令语法格式:
2)命令参数选项说明如下所示。
-c:将解压缩的结果显示到屏幕上,并对字符做适当的转换;
-f:更新现有的文件;
-l:显示压缩文件内包含的文件;
-a:对文本文件进行必要的字符转换;
-C:当压缩文件时忽略文件名的大小写;
-n:当解压缩时不覆盖原有的文件,与-o选项作用相反。
3)范例列举:
[root@rhl5 ~]# unzip boot.zip # 解压缩文件
Archive: boot.zip
creating: boot/
inflating: boot/vmlinuz-2.6.18-164.el5
inflating: boot/initrd-2.6.18-164.el5.img
inflating: boot/config-2.6.18-164.el5
creating: boot/grub/
inflating: boot/grub/e2fs_stage1_5
inflating: boot/grub/iso9660_stage1_5
inflating: boot/grub/grub.conf
inflating: boot/grub/ufs2_stage1_5
inflating: boot/grub/minix_stage1_5
inflating: boot/grub/stage2
inflating: boot/grub/menu.lst
inflating: boot/grub/fat_stage1_5
inflating: boot/grub/xfs_stage1_5
inflating: boot/grub/stage1
inflating: boot/grub/vstafs_stage1_5
inflating: boot/grub/ffs_stage1_5
inflating: boot/grub/jfs_stage1_5
inflating: boot/grub/device.map
inflating: boot/grub/reiserfs_stage1_5
inflating: boot/grub/splash.xpm.gz
inflating: boot/System.map-2.6.18-164.el5
creating: boot/lost+found/
inflating: boot/.vmlinuz-2.6.18-164.el5.hmac
inflating: boot/symvers-2.6.18-164.el5.g
5.bunzip2命令:解压缩.bz2格式的压缩包
补充说明:实际上bunzip2命令是bzip2命令的符号连接,执行它们的效果相同,命令的使用权限对系统所有用户开放。
1)命令语法格式:bunzip2 [-fkvsVL] [filenames ...]
2)命令参数选项说明如下所示。
-f(force):当解压缩时强行覆盖同名文件;
-k(keep):当解压缩时保留原文件;
-s(small):在执行命令时减少内存的使用;
-v(verbose):显示解压缩过程的详细信息。
3)范例列举:
[root@rhl5 ~]# bunzip2-v boot.tar.gz.bz2 # 对指定的文件解压缩,同时删除原文件
boot.tar..gz.bz2: done
6.gzip命令:压缩文件。
补充说明:gzip命令使用非常广泛,压缩后的文件以“.gz”为文件后缀名,命令的使用权限对系统所有用户开放。
1)命令语法格式:gzip [options] [name ...]
2)命令参数选项说明如下所示。
-a(ascii):使用ASCII格式模式;
-f(force):强行压缩文件;
-l(list):列出压缩文件的相关信息;
-n(no-name):当压缩文件时不保存原来的文件名及时间戳,与-N选项功能相反;
-q(quiet):忽略警告信息。
3)范例列举:
[root@rhl5 ~]# gzip-v disk1.img # 显示文件压缩的过程,默认删除原文件
disk1.img: 94.6%-- replaced with disk1.img.gz
[root@rhl5 ~]# ll disk1.img.gz
-rw-r--r-- 1 root root 5770950 Jul 22 18:57 disk1.img.gz
7.gunzip命令:文件解压缩
补充说明:gunzip命令的全称是gun unzip,其用于解压缩“.gz”格式的压缩文件,命令的使用权限对系统所有用户开放。
1)命令语法格式:gunzip [options] [-S suffix] [name ...]
2)命令参数选项说明:
-l(list):显示压缩文件的相关信息;
-L(license):显示版本及相关信息;
-N(name):当解压缩时将含有原文件名称及时间戳的文件保存到解压缩文件中;
-r(recursive):以递归方式将指定目录的所有文件及子目录一并处理;
-S(suffix):更改压缩后缀字符串。
3)范例列举:
[root@rhl5 ~]# gunzip-v disk1.img.gz # 对指定的文件解压缩并显示相关信息
disk1.img.gz:94.6%-- replaced with disk1.img
5.2.5 软件包管理命令
在Linux下安装软件,可以选择的方式有三种,分别是RPM(Red Hat Package Management)安装包、源码安装包和bin安装包,安装方法各有不同。
本节主要是针对rpm安装包的安装及在安装中的问题进行简介,而对于使用源码安装包和 bin 安装包也做些必要的讲解,但主要是留给读者动手操作。
Package Management 是Red Hat公司开发的一个Linux软件包管理程序(如图5-2所示)。对于系统中的软件,可通过 RPM 安装包方便地安装、升级和卸删软件。rpm 格式的安装包的命名格式如下:
图5-2 Package Management界面
软件包名称-版本号-修正版.硬件平台.rpm
Package Manager 主要有3 个特征和3 个组件。
3个特征如下:
● 无交换界面;
● RPM 的软件包适合用于所有软件;
● 可直接安装新版本而不需要旧版本的支持。
3个组件如下:
● RPM 本地数据库,位于/var/lib/rpm目录下;
● RPM 命令本身及一些相关的可执行文件;
● RPM 的软件包文件。
RPM软件包管理程序有许多的安装和删除选项,在实际中常用到的RPM选项主要有如下几个。
●-i(install):安装软件。
●-v(version):显示当前使用的RPM版本。
●-h:用“#”来显示软件安装的进度。
●-u(upgrade):对旧版本进行升级。
●-e(erase):删除软件。
下面演示如何使用RPM工具对软件进行安装、升级和删除的操作。使用RPM进行软件的安装,可通过图形界面安装(如图5-2所示),也可通过命令行安装。
当使用图形界面安装软件时,先在图形界面中打开一个终端端口,并在终端提示符上输入system-config-packages 命令,按Enter 键后即可看到如图5-2所示的Package Management界面。此时可以选择需要的软件,并在选择完成之后单击Update按钮即可安装软件。
1.RPM安装包
以下操作只是一个演示,简要介绍如何使用 RPM 进行软件的安装、升级以及删除的操作,要想更加熟练地操作还是要多动手实践。
1)软件安装
若需要安装名为ttfonts-ko-1.0.11-32.2.noarch.rpm的软件,可以使用带有选项ivh的rpm命令进行安装。
[root@cat ]# rpm-ivh ttfonts-ko-1.0.11-32.2.noarch.rpm
warning: ttfonts-ko-1.0.11-32.2.noarch.rpm: V3 DSA signature: NOKEY, key ID b38a8516
Preparing...########################################### [100%]
1:ttfonts-ko########################################### [100%]
若对某个软件包感兴趣,而此软件包已经安装,则在执行rpm命令进行安装时,将看到如下提示。
[root@cat RPMS]# rpm-ivh vsftpd-2.0.1-5.EL4.5.i386.rpm
warning: vsftpd-2.0.1-5.EL4.5.i386.rpm: V3 DSA signature: NOKEY, key ID b38a8516
Preparing...########################################### [100%]
package vsftpd-2.0.1-5.EL4.5 is already installed
若所需要安装的软件包存在有依赖性,在执行rpm命令进行软件的安装时,将看到如下所示的错误提示信息。
[root@cat RPMS]# rpm-ivh x3270-x11-3.3.2.p1-7.i386.rpm
warning: x3270-x11-3.3.2.p1-7.i386.rpm: V3 DSA signature: NOKEY, key ID b38a8516
error: Failed dependencies:
x3270 = 3.3.2.p1 is needed by x3270-x11-3.3.2.p1-7.i386
此时需要根据提示并先对依赖的软件(见提示信息)进行安装。
2)软件的删除
若需要删除名为ttfonts-ko-1.0.11-32.2.noarch.rpm的软件,可以使用带有选项-e的rpm命令来完成,操作如下。
[root@cat]# rpm–e ttfonts-ko
若所需卸载的软件没有存在依赖性,则执行rpm命令之后没有任何提示。若所需卸载的软件存在有依赖性,将出现错误提示信息,此时则需要先卸载依赖性软件之后才可以对真正要卸载的软件进行卸载操作。
若需要对某个软件进行升级,可以使用带有选项-U的rpm命令来进行软件的升级操作。如要对名为ttfonts-ko软件进行升级,可执行如下命令。
[root@cat]# rpm–Uvh ttfonts-ko # 其他两个选项显示升级过程中的进度
若查看已安装的某个软件产生的文件所在的位置时,可使用带有选项-ql的rpm命令来查看,其格式如下:
[root@cat]#rpm-ql [软件名]
若要查看某个软件是否安装,或所安装软件的版本信息,可使用带有选项-q的rpm命令来操作,其格式如下:
[root@cat]#rpm-q [软件名]
2.源码安装包
下面使用源代码进行软件的安装,这里以名为bash-3.2.tar.gz的源码软件包为例(顺便升级一下bash,当然,还有更高的版本),讲解如何在Linux系统中使用源代码程序安装软件包,其过程比较简单,步骤如下。
首先使用解压缩命令对源代码包进行解压缩,对于不同格式的压缩包,所使用的解压缩命令不同。下面使用tar命令对安装包进行解压缩。
[root@cat ~]$ tar-zvxf bash-3.2.tar.gz
bash-3.2/
bash-3.2/CWRU/
bash-3.2/CWRU/misc/
bash-3.2/CWRU/misc/open-files.c
bash-3.2/CWRU/misc/sigs.c
bash-3.2/CWRU/misc/sigstat.c
bash-3.2/CWRU/misc/bison
bash-3.2/CWRU/misc/errlist.c
bash-3.2/CWRU/misc/hpux10-dlfcn.h
bash-3.2/CWRU/PLATFORMS
bash-3.2/CWRU/README
bash-3.2/CWRU/changelog
bash-3.2/CWRU/sh-redir-hack
……
解压缩完成之后,将看到多了一个名为bash-3.2的目录,接着使用cd进入bash-3.2目录。
[root@cat ~]$ cd bash-3.2
进入bash-3.2目录之后,接着就使用“./”来执行configure命令进行安装前的配置。在执行“./”之前,先介绍configure命令的常用选项。(关于configure命令的更多选项和参数说明可通过执行./configure--help 来获取。)
●--prefix 参数:该参数用于自定义安装目录,如,要安装到/var/local/bash 目录下,使用./configure--prefix = /var/ local/bash 即可安装到定义的目录下。
●--enable-modules 参数:用于指定除默认安装的模块外,还要额外安装的模块,格式为:./configure--prefix = "模块名1 模块名2 ……"。其指定额外的模块可自动运行。
● enable-mode-shared 参数:用法与--enable-modules 参数一样,但其非自动加载额外模块,而是使用LoadModule指令进行载入。
在对bash源代码软件包进行安装的过程中,使用默认的安装方式,因此直接执行不带任何选项的./configure 即可。不过,在执行./configure 之前,建议先检查是否有 configure 文件存在,否则安装时可能出现错误而导致安装失败。
[root@cat bash-3.2]$ ./configure# 执行./configure 命令
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for emacs... emacs
checking where .elc files should go... Loadin
/usr/share/emacs/site-lisp/site-start.d/lang-coding-systems-init.el (source)...
Loading /usr/share/emacs/site-lisp/site-start.d/php-mode-init.el (source)...
Loading /usr/share/emacs/site-lisp/site-start.d/po-mode-init.el (source)...
……
在执行./configure并在该命令执行完成之后,接着使用make命令进行编译。
[root@cat bash-3.2]$ make# 执行make 命令
rm-f mksyntax
gcc-DPROGRAM = '"bash"'-DCONF_HOSTTYPE = '"i686"'-DCONF_OSTYPE = '"linux-gnu"
-DCONF_MACHTYPE = '"i686-pc-linux-gnu"'-DCONF_VENDOR = '"pc"
-DLOCALEDIR = '"/usr/local/share/locale"'-DPACKAGE = '"bash"'–DSHEL
-DHAVE_CONFIG_H-I.-I.-I./include-I./lib-g-o mksyntax ./mksyntax.crm-fsyntax.c
./mksyntax-o syntax.c
/bin/sh ./support/mkversion.sh-b-S .-s release-d 3.2-o newversion.h \
&& mv newversion.h version.h
gcc-DPROGRAM = '"bash"'-DCONF_HOSTTYPE = '"i686"'-DCONF_OSTYPE = '"linux-gnu"
-DCONF_MACHTYPE = '"i686-pc-linux-gnu"'-DCONF_VENDOR = '"pc"
-DLOCALEDIR = '"/usr/local/share/locale"'-DPACKAGE = '"bash"'
……
执行make 命令并在运行完成之后,最后使用make install命令对软件进行安装。当然,在执行命令进行安装前,也可先使用make tests 进行测试,然后再执行make install命令进行安装。
[root@cat bash-3.2]# make install # 执行make install命令进行软件的安装
***********************************************************
* *
* GNU bash, version 3.2.0(1)-release (i686-pc-linux-gnu)
* *
***********************************************************
mkdir-p-- /usr/local/man/man1
mkdir-p-- /usr/local/info
( cd ./po/ ; make DESTDIR= installdirs )
make[1]: Entering directory `/root/bash-3.2/po'
/bin/sh /root/bash-3.2/./support/mkinstalldirs /usr/local/share
mkdir-p-- /usr/local/share/locale/en@quot/LC_MESSAGES
mkdir-p-- /usr/local/share/locale/en@boldquot/LC_MESSAGES
mkdir-p-- /usr/local/share/locale/ru/LC_MESSAGES
if test "bash" = "gettext-tools"; then \
/bin/sh /root/bash-3.2/./support/mkinstalldirs /usr/local/share/gettext/po; \
else \
: ; \
fi
……
在make install 命令执行完之后,bash 已经成功安装bash 软件。可以使用带有选项-q 的rpm命令来查看刚安装的bash的版本等信息。
若使用普通用户的身份来安装此软件包,在执行make install命令进行安装时,可能要求使用root用户的权限,若出现这样的情况,则可执行su-c "make install" 命令切换到root,并输入正确的root密码,系统就自动执行安装了!
接下来,是该您大显身手的时候。您是否看到犹如“Xdialog-2.3.1.tar.bz2”这样以“.tar.bz2”为后缀名的压缩包呢?
对于这类后缀的软件包,之前曾讲过对于此类压缩包的解压缩方法,现在您是不是要试试看呢?要安装类似“Xdialog-2.3.1.tar.bz2”这样的源码软件包,需两步完成。
首先,当对源码软件包进行解压缩时,它将变成形如“Xdialog-2.3.1.tar”的tar格式。
接着,使用“tar-vxf Xdialog-2.3.1.tar”命令对tar 格式的压缩包进行解压缩就可以开始安装。
3.二进制安装包
下面介绍.bin格式的软件包安装,后缀名为.bin的文件也是Linux中常见的软件安装包格式,它也是一种二进制文件,是由源程序经编译后得到的机器语言。也有部分商业软件是以.bin作为后缀名发布的。
对于.bin 格式的软件安装包,其安装过程也相对简单。在这里不做具体的讲解,感兴趣的读者可自己去操作,在这只给出安装的基本步骤,参考步骤如下。
(1)使用chmod u+x [软件名]的格式为要安装的.bin 安装包添加可执行权限。
(2)接着以./[软件名] 命令来执行所要安装的二进制文件。
(3)之后出现的是协议,使用空格键往下阅读协议,之后在末尾处输入yes进行安装,或输入no退出安装。
需要注意的是,在安装后缀名为.bin 的软件时,有时会出现图形界面,具体的安装要求可根据安装提示进行安装操作。
5.2.6 其他常用命令
1.在线手册帮助命令
对于Linux的命令,如果在使用过程中忘记命令的使用方式,就可以使用Linux的用户命令在线手册来帮助获取命令的信息。(可按空格键或键盘的方向键读阅,按Q键退出)。
[scat@cat ~]$ man who #获取who命令的帮助信息(man的全称是manual pages)
WHO(1) User Commands WHO(1)
NAME
who- show who is logged on
SYNOPSIS
who [OPTION]... [ FILE | ARG1 ARG2 ]
DESCRIPTION
-a,--all
same as-b-d--login-p-r-t-T-u
-b,--boot
time of last system boot
-d,--dead
print dead processes
-H,--heading
print line of column headings
-l,--login
print system login processes
--lookup
attempt to canonicalize hostnames via DNS
:
执行命令help与info的结果也差不多,不过,执行info之后所得的信息更为详细,如下是执行info的结果。
[scat@cat ~]$ info who# 获取who 命令的帮助信息
File: coreutils.info, Node: who invocation, Prev: users invocation, Up: Use\
r information
20.6`who': Print who is currently logged in
= == = == = == = == = == = == = == = == = == = == = == = == = == = == = =
`who' prints information about users who are currently logged on.
Synopsis:
`who' [OPTION] [FILE] [am i]
If given no non-option arguments, `who' prints the following
information for each user currently logged on: login name, terminal
line, login time, and remote hostname or X display.
If given one non-option argument, `who' uses that instead of
`/var/run/utmp' as the name of the file containing the record of users
logged on. `/var/run/wtmp' is commonly given as an argument to `who'
to look at who has previously logged on.
If given two non-option arguments, `who' prints only the entry for
--zz-Info: (coreutils.info.gz)who invocation, 98 lines--Top-------------------
Welcome to Info version 4.7. Type ? for help, m for menu item.
2.Tab命令补全键
当只记得某个命令的前一个或几个字母时,Tab 键是相当有用的。输入记得的前一个或几个字母,然后连续两次按下Tab键,系统输出的都是以这几个字母开头的命令。如果忘了chkconfig命令怎么拼写,但记得是以ch开头,此时可在终端提示符下输入ch,然后连续两次按下Tab键即可。
[root@rhl5 ~]# ch
chacl chcat chgrp chroot
chage chcon chkconfig chrt
change_console check-binary-files chkfontpath chsh
charmap checkmodule chmod chvt
chat checkpolicy chown
chattr chfn chpasswd
3.查看登录系统的用户及相关信息
[root@rhl5 ~]# whoami # 显示当前用户
root
[root@rhl5 ~]# who
root pts/0 2013-07-24 20:40 (192.168.217.1)
[root@rhl5 ~]# w
21:17:29 up 41 min, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.217.1 20:40 0.00s 0.09s 0.00s w
4.用户之间切换:su(全称substitute user,当退回切换前用户时执行exit)
[cat@cat ~]$ su–root # 切换到root用户
Password: # 输入root登录密码
[root@cat ~]# whoami # 查看当前的用户
root
若是使用root用户切换到普通用户,则不需要输入登录密码。