Linux必学的60个命令安装与登录
2009-06-08 20:49:34 Administrator

Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重要和使用频率最多的命令,按照其在系统中的作用分成下面六个部分一一介绍。

◆ 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;
◆ 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;
◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab;
◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup;
◆ 系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who;
◆ 其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。
本文以Mandrake Linux 9.1(Kenrel 2.4.21)为例,介绍Linux下的安装和登录命令。

一般来说Linux用户的登录方式有三种:
1)命令行登录
2)ssh登录
3)图形界面登录

对于运行级别为5的图形方式用户来说,其登录是通过一个图形化的登录界面。登录成功后可以直接进入 KDE、Gnome 等窗口管理器。文本方式登录的情况:当看到mingetty的登录界面时,就可以输入用户名和密码来登录系统了。

Linux 的账号验证程序是 login,它会接收 mingetty 传来的用户名作为用户名参数。然后 login 会对用户名进行分析:如果用户名不是 root,且存在 /etc/nologin 文件,login 将输出 nologin 文件的内容,然后退出登录界面。这通常用来系统维护时防止非root用户登录。只有/etc/securetty中登记了的终端才允许 root 用户登录,如果不存在这个文件,则 root 用户可以在任何终端上登录。/etc/usertty文件用于对用户作出附加访问限制,不存在该文件则没有其他限制。

图形与文字模式的切换方式

Linux预设提供了六个命令窗口终端机让我们来登录。默认登录的就是第一个窗口,也就是tty1,这个六个窗口分别为tty1,tty2 … tty6,可以按下Ctrl + Alt + F1 ~ F6 来切换它们。若安装了图形界面,默认情况下是进入图形界面的,此时可以按Ctrl + Alt + F1 ~ F6来进入其中一个命令窗口界面。当进入命令窗口界面后再返回图形界面只要按下Ctrl + Alt + F7 就回来了。在vmware虚拟机中,命令窗口切换的快捷键为 Alt + Space + F1~F6;如果在图形界面下请按Alt + Shift + Ctrl + F1~F6 切换至命令窗口。


login
1.作用
login的作用是登录系统,它的使用权限是所有用户。
2.格式
login [name][-p ][-h 主机名称]
3.主要参数
-p:通知login保持现在的环境参数。
-h:用来向远程登录的之间传输用户名。
如果选择用命令行模式登录Linux的话,那么看到的第一个Linux命令就是login:。
一般界面是这样的:
Manddrake Linux release 9.1(Bamboo) for i586
renrel 2.4.21-0.13mdk on i686 / tty1
localhost login:root
password:

上面代码中,第一行是Linux发行版本号,第二行是内核版本号和登录的虚拟控制台,我们在第三行输入登录名,按“Enter”键在Password后输入账户密码,即可登录系统。出于安全考虑,输入账户密码时字符不会在屏幕上回显,光标也不移动。登录后会看到下面这个界面(以超级用户为例):
[root@localhost root]#
last login:Tue ,Nov 18 10:00:55 on vc/1
上面显示的是登录星期、月、日、时间和使用的虚拟控制台。
4.应用技巧
Linux是一个真正的多用户操作系统,可以同时接受多个用户登录,还允许一个用户进行多次登录。这是因为Linux和许多版本的Unix一样,提 供了虚拟控制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统直接相连的监视器和键盘)进行多次登录。每个虚拟控制台可以看作是一个独立 的工作站,工作台之间可以切换。虚拟控制台的切换可以通过按下Alt键和一个功能键来实现,通常使用F1-F6 。

例如,用户登录后,按一下“Alt+F2”键,用户就可以看到上面出现的“login:”提示符,说明用户看到了第二个虚拟控制台。然后只需按 “Alt+ F1”键,就可以回到第一个虚拟控制台。一个新安装的Linux系统允许用户使用“Alt+F1”到“Alt+F6”键来访问前六个虚拟控制台。虚拟控制 台最有用的是,当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作,关闭这个程序。

shutdown
shutdown命令不仅可以关闭系统、也可以重启Linux系统。shutdown命令可以安全地将系统关机。有些用户会使用直接断掉电源的方式来关闭Linux系统,这是十分危险的。因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备(硬盘)。 在系统关机前使用 shutdown命令,系统管理员会通知所有登录的用户系统将要关闭,并且login指令会被冻结,即新的用户不能再登录。

命令语法:
/sbin/shutdown [-t sec] [-arkhncfFHP] time [warning-message]

shutdown [选项] [时间] [通知消息](消息可以为空,但必须有参数和时间)


命令参数:
参数    描述
-a:Use /etc/shutdown.allow.
-c:中断关机:当执行"shutdown -h 12:00"指令时,只要按+c键就可以中断关机的指令,取消目前正在执行的关机程序
-f:重新启动时不进行磁盘检测(fsck)
-F:重新启动时进行磁盘检测(fsck)
-h:关机后关闭电源
-k:模拟关机(不是真的关机),只是向登录者发送警告信息
-n:不调用init进程进行关机,而是强行关机
-r:关闭系统然后重新启动,类似于Windows平台restart
-t:<秒数> 延迟关机的时间
-w:仅做测试,并不真的将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件
-m: 将系统改为单用户模式。
-i:关机时显示系统信息。
-time:设定关机前的时间
--help:显示命令在线帮助

相关使用示例

[时间]:设置多久时间后执行shutdown指令;
[警告信息]:要传送给所有登入用户的信息。

立即关闭Linux系统,其中 now 相当于时间为 0 的状态
# shutdown -h now

系统2分钟后重新启动,其中+m表示几分钟后关机或开机。
# shutdown -r +2 "2分钟后关机重启"

设置系统在那个时间点关机
# shutdown -h 12:30

# shutdown -h 12:30 &
[1] 4578

最好是使用命令&将关机命令至于后台处理,不影响当前其它操作。

设置多久时间后执行shutdown命令。时间参数有hh:mm或+m两种模式。hh:mm格式表示在几点几分执行shutdown命令。例如 “shutdown 10:45”表示将在10:45执行,shutdown +m表示m分钟后执行shutdown。比较特别的用法是以now表示立即执行shutdown,值得注意的是这部分参数不能省略。另外需要注意如果现在已经22:30,你执行了shutdown -h 22:00 & 那么第二天才会关机。

取消前一个shutdown命令
如下所示,执行了下面命令让Linux在12:30关机,但是如果发现这个时间点不合适,那么可以使用CTRL+C取消
# shutdown -h 12:30
Shutdown cancelled.

也可以在另外一个命令窗口执行下面命令
# shutdown -c

向所有登录的用户发出信息
# shutdown -k "now"

另外登录的会话窗口会收到信息

重新启动时不进行磁盘检测
# shutdown -fr now

在多少秒后关闭系统并给用户发送提示信息
# shutdown -t 10 -h now "System will shutdown 10 sencond later"


halt
1.作用
halt命令的作用是关闭系统,它的使用权限是超级用户。
2.格式
halt [-n] [-w] [-d] [-f] [-i] [-p]
3.主要参数说明
-n:防止sync系统调用,它用在用fsck修补根分区之后,以阻止内核用老版本的超级块覆盖修补过的超级块。
-w:并不是真正的重启或关机,只是写wtmp(/var/log/wtmp)纪录。
-f:没有调用shutdown,而强制关机或重启。
-i:关机(或重启)前,关掉所有的网络接口。
-f:强迫关机,不呼叫shutdown这个指令。
-p: 当关机的时候顺便做关闭电源的动作。
-d:关闭系统,但不留下纪录。 
4.命令说明
halt就是调用shutdown -h。halt执行时,杀死应用进程,执行sync(将存于buffer中的资料强制写入硬盘中)系统调用,文件系统写操作完成后就会停止内核。若系统的 运行级别为0或6,则关闭系统;否则以shutdown指令(加上-h参数)来取代。

reboot
1.作用
reboot命令的作用是重新启动计算机,它的使用权限是系统管理者。
2.格式
reboot [-n] [-w] [-d] [-f] [-i]
3.主要参数
-n: 在重开机前不做将记忆体资料写回硬盘的动作。
-w: 并不会真的重开机,只是把记录写到/var/log/wtmp文件里。
-d: 不把记录写到/var/log/wtmp文件里(-n这个参数包含了-d)。
-i: 在重开机之前先把所有与网络相关的装置停止。


halt [选项]
poweroff [选项]
reboot [选项]

这三个命令模式一样,目的是引导内核启动或停止系统的运行;当没有-f参数或系统运行级别不是0和6,将执行/sbin/shutdown。

(1).参数
-n 重启或停止之前不要同步,用在fsck命令修复根分区后,防止内核用老版本的超级块覆盖修复过的超级块
-f 强制重启或停止,不调用shutdown关机命令
-p 当停止时关闭电源
-w 实际上不启动或停止,只写wtmp记录
-q 仅减少输出错误
-v 增加输出包含信息消息

(2).区别
shutdown实际上调用init 0,init 0会清理一些工作然后调用halt或poweroff
halt通知硬件停止所有CPU功能,但仍保持通电,需要手动关闭
poweroff发送一个acpi(高级配置和管理电源接口)信号来通知系统关机
reboot重启

主要区别在于halt和poweroff,并且halt、poweroff、reboot都是立即执行,为了安全或有多用户最好使用shutdown。shutdown 会给系统计划一个时间关机。它可以被用于停止、关机、重启机器。shutdown 会给系统计划一个时间关机。其可以被用于停止、关机、重启机器。

# shutdown -p now  ### 关闭机器
# shutdown -H now  ### 停止机器      
# shutdown -r 09:35 ### 在 09:35am 重启机器

要取消即将进行的关机,只要输入下面的命令:
# shutdown -c

halt 命令通知硬件来停止所有的 CPU 功能,但是仍然保持通电。你可以用它使系统处于低层维护状态。注意在有些情况会它会完全关闭系统。
# halt ### 停止机器
# halt -p ### 关闭机器、关闭电源
# halt --reboot ### 重启机器

poweroff 会发送一个 ACPI 信号来通知系统关机。
# poweroff ### 关闭机器、关闭电源
# poweroff --halt ### 停止机器
# poweroff --reboot ### 重启机器

reboot 命令 reboot 通知系统重启。
# reboot ### 重启机器
# reboot --halt ### 停止机器
# reboot -p ### 关闭机器


install
1.作用
install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户。
2.格式
(1)install [选项]... 来源 目的地
(2)install [选项]... 来源... 目录
(3)install -d [选项]... 目录...
在前两种格式中,会将复制至或将多个文件复制至已存在的,同 时设定权限模式及所有者/所属组。在第三种格式中,会创建所有指定的目录及它们的主目录。长选项必须用的参数在使用短选项时也是必须的。
3.主要参数
--backup[=CONTROL]:为每个已存在的目的地文件进行备份。
-b:类似 --backup,但不接受任何参数。
-c:(此选项不作处理)。
-d,--directory:所有参数都作为目录处理,而且会创建指定目录的所有主目录。
-D:创建前的所有主目录,然后将复制至 ;在第一种使用格式中有用。
-g,--group=组:自行设定所属组,而不是进程目前的所属组。
-m,--mode=模式:自行设定权限模式 (像chmod),而不是rwxr-xr-x。
-o,--owner=所有者:自行设定所有者 (只适用于超级用户)。
-p,--preserve-timestamps:以文件的访问/修改时间作为相应的目的地文件的时间属性。
-s,--strip:用strip命令删除symbol table,只适用于第一及第二种使用格式。
-S,--suffix=后缀:自行指定备份文件的。
-v,--verbose:处理每个文件/目录时印出名称。
--help:显示此帮助信息并离开。
--version:显示版本信息并离开。

mount
1.作用
mount命令的作用是加载文件系统,它的用权限是超级用户或/etc/fstab中允许的使用者。
2.格式
mount -a [-fv] [-t vfstype] [-n] [-rw] [-F] device dir
3.主要参数
-h:显示辅助信息。
-v:显示信息,通常和-f用来除错。
-a:将/etc/fstab中定义的所有文件系统挂上。
-F:这个命令通常和-a一起使用,它会为每一个mount的动作产生一个行程负责执行。在系统需要挂上大量NFS文件系统时可以加快加载的速度。
-f:通常用于除错。它会使mount不执行实际挂上的动作,而是模拟整个挂上的过程,通常会和-v一起使用。
-t vfstype:显示被加载文件系统的类型。
-n:一般而言,mount挂上后会在/etc/mtab中写入一笔资料,在系统中没有可写入文件系统的情况下,可以用这个选项取消这个动作。
4.应用技巧
在Linux和Unix系统上,所有文件都是作为一个大型树(以/为根)的一部分访问的。要访问CD-ROM上的文件,需要将CD-ROM设备挂装 在文件树中的某个挂装点。如果发行版安装了自动挂装包,那么这个步骤可自动进行。在Linux中,如果要使用硬盘、光驱等储存设备,就得先将它加载,当储 存设备挂上了之后,就可以把它当成一个目录来访问。挂上一个设备使用mount命令。在使用mount这个指令时,至少要先知道下列三种信息:要加载对象 的文件系统类型、要加载对象的设备名称及要将设备加载到哪个目录下。
(1)Linux可以识别的文件系统
◆ Windows 95/98常用的FAT 32文件系统:vfat ;
◆ Win NT/2000 的文件系统:ntfs ;
◆ OS/2用的文件系统:hpfs;
◆ Linux用的文件系统:ext2、ext3;
◆ CD-ROM光盘用的文件系统:iso9660。
虽然vfat是指FAT 32系统,但事实上它也兼容FAT 16的文件系统类型。

(2)确定设备的名称

在Linux中,设备名称通常都存在/dev里。这些设备名称的命名都是有规则的,可以用“推理”的方式把设备名称找出来。例如,/dev /hda1这个 IDE设备,hd是Hard Disk(硬盘)的,sd是SCSI Device,fd是Floppy Device(或是Floppy Disk?)。a代表第一个设备,通常IDE接口可以接上4个IDE设备(比如4块硬盘)。所以要识别IDE硬盘的方法分别就是hda、hdb、hdc、 hdd。hda1中的“1”代表hda的第一个硬盘分区 (partition),hda2代表hda的第二主分区,第一个逻辑分区从hda5开始,依此类推。此外,可以直接检查/var/log /messages文件,在该文件中可以找到计算机开机后系统已辨认出来的设备代号。

(3)查找挂接点
在决定将设备挂接之前,先要查看一下计算机是不是有个/mnt的空目录,该目录就是专门用来当作挂载点(Mount Point)的目录。建议在/mnt里建几个/mnt/cdrom、/mnt/floppy、/mnt/mo等目录,当作目录的专用挂载点。举例而言,如 要挂载下列5个设备,其执行指令可能如下 (假设都是Linux的ext2系统,如果是Windows XX请将ext2改成vfat):
软盘 ===>mount -t ext2 /dev/fd0 /mnt/floppy
cdrom ===>mount -t iso9660 /dev/hdc /mnt/cdrom
SCSI cdrom ===>mount -t iso9660 /dev/sdb /mnt/scdrom
SCSI cdr ===>mount -t iso9660 /dev/sdc /mnt/scdr
不过目前大多数较新的Linux发行版本(包括红旗 Linux、中软Linux、Mandrake Linux等)都可以自动挂装文件系统,但Red Hat Linux除外。

umount
1.作用
umount命令的作用是卸载一个文件系统,它的使用权限是超级用户或/etc/fstab中允许的使用者。
2.格式
unmount -a [-fFnrsvw] [-t vfstype] [-n] [-rw] [-F] device dir
3.使用说明
umount命令是mount命令的逆操作,它的参数和使用方法和mount命令是一样的。Linux挂装CD-ROM后,会锁定CD—ROM,这 样就不能用CD-ROM面板上的Eject按钮弹出它。但是,当不再需要光盘时,如果已将/cdrom作为符号链接,请使用umount/cdrom来卸 装它。仅当无用户正在使用光盘时,该命令才会成功。该命令包括了将带有当前工作目录当作该光盘中的目录的终端窗口。

chsh
1.作用
chsh命令的作用是更改使用者shell设定,它的使用权限是所有使用者。
2.格式
chsh [ -s ] [ -list] [ --help ] [ -v ] [ username ]
3.主要参数
-l:显示系统所有Shell类型。
-v:显示Shell版本号。
4.应用技巧
前面介绍了Linux下有多种Shell,一般缺省的是Bash,如果想更换Shell类型可以使用chsh命令。先输入账户密码,然后输入新Shell类型,如果操作正确系统会显示“Shell change”。其界面一般如下:
Changing fihanging shell for cao
Password:
New shell [/bin/bash]: /bin/tcsh
上面代码中,[ ]内是目前使用的Shell。普通用户只能修改自己的Shell,超级用户可以修改全体用户的Shell。要想查询系统提供哪些Shell,可以使用chsh -l 命令。

exit
1.作用
exit命令的作用是退出系统,它的使用权限是所有用户。
2.格式
exit
3.参数
exit命令没有参数,运行后退出系统进入登录界面。


last
1.作用
last作用是显示近期用户或终端的登录情况,通过last命令查看该程序的log,管理员可以获知谁曾经或者企图连接系统。执行last命令时,它会读取/var/log目录下名称为wtmp的文件,并把该文件记录的登录系统或终端的用户名单全部显示出来。默认显示wtmp的记录,btmp能显示的更详细,可以显示远程登录,例如ssh登录。

2.格式
last[-n][-f file][-t tty] [-h 节点][-I -IP][-1][-y][UID]
last [-num | -n num] [-f file] [-t YYYYMMDDHHMMSS] [-R] [-adioxFw] [username..] [tty..]

3.选项及输出格式
-n:指定输出记录的条数
-R:不显示登录系统或终端的主机名称或IP
-a:将登录系统或终端的主机名过IP地址显示在最后一行
-d:将IP地址转成主机名称
-I:显示特定IP登录情况
-o:读取有linux-libc5应用编写的旧类型wtmp文件
-x:显示系统关闭、用户登录和退出的历史
-F:显示登录的完整时间
-w:在输出中显示完整的用户名或域名
-f file:指定用文件file作为查询用的log文件
-t tty:只显示指定的虚拟控制台上登录情况
-h 节点:只显示指定的节点上的登录情况
-i IP:只显示指定的IP上登录的情况
-y:显示记录的年、月、日
-UID:知道查询的用户名
-x:显示系统关闭、用户登录和退出的历史

-num |-n num指定输出记录的条数
-f file 指定记录文件作为查询的log文件
-t YYYYMMDDHHMMSS 显示指定时间之前的登录情况
username 账户名称
tty 终端机编号

输出实例
第一列:用户名
第二列:终端位置(pts/0伪终端,意味着从SSH或telnet等工具远程连接的用户,图形界面终端归于此类。tty0直接连接到计算机或本地连接的用户。后面的数字代表连接编号)
第三列:登录IP或内核(如果是:0.0或者什么都没有,意味着用户通过本地终端连接。除了重启活动,内核版本会显示在状态中)
第四列:开始时间
第五列:结束时间(still login in尚未退出,down直到正常关机,crash直到强制关机)
第六列:持续时间

4.示例
指定显示记录的数量(显示记录中最后登录的数量)
# last -n 10
# last -10

指定查询的文件,原本默认的是wtmp这个二进制文件
# last -10 -f /var/log/btmp

将IP地址转换为主机地址
# last -10 -d
hto      pts/4        172.18.0.2       Mon Aug 23 08:35    gone - no logout
hto      pts/3        172.18.0.2       Mon Aug 23 07:53    gone - no logout
reboot   system boot  0.0.0.0          Mon Aug 23 07:51   still running
hto      pts/1        172.18.0.2       Sun Aug 22 07:52 - 22:33  (14:40)
root     pts/0        172.18.0.2       Sun Aug 22 07:52 - down   (14:40)
reboot   system boot  0.0.0.0          Sun Aug 22 06:49 - 22:33  (15:43)

显示指定时间之前的记录
# last -10 -t 20200817000000    //注意-t后面的时间写法
root     pts/2        172.18.0.2       Sun Aug 16 14:06 - down   (08:37)
hto      pts/1        172.18.0.2       Sun Aug 16 14:06 - 22:42  (08:36)
hto      pts/0        172.18.0.2       Sun Aug 16 09:06 - down   (13:37)
reboot   system boot  4.1.52           Sun Aug 16 07:14 - 22:43  (15:29)
root     pts/0        172.18.0.2       Sat Aug 15 22:19 - down   (00:00)
hto      pts/1        172.18.0.2       Sat Aug 15 12:28 - 22:19  (09:50)
hto      pts/0        172.18.0.2       Sat Aug 15 12:28 - 22:19  (09:50)
reboot   system boot  4.1.52           Sat Aug 15 12:27 - 22:19  (09:52)
root     pts/4        172.18.0.2       Fri Aug 14 18:08 - down   (01:28)
hto      pts/0        172.18.0.2       Fri Aug 14 08:55 - 19:28  (10:32)

wtmp begins Wed Mar 30 02:19:04 2016


动手练习
上面介绍了Linux安装和登录命令,下面介绍几个实例,动手练习一下刚才讲过的命令。

1.一次运行多个命令
在一个命令行中可以执行多个命令,用分号将各个命令隔开即可,例如:
# last -x; halt

上面代码表示在显示系统关闭、用户登录和退出的历史后关闭计算机。

2.利用mount挂装文件系统访问Windows系统
许多Linux发行版本现在都可以自动加载Vfat分区来访问Windows系统,而Red Hat各个版本都没有自动加载Vfat分区,因此还需要进行手工操作。

mount可以将Windows分区作为Linux的一个“文件”挂接到Linux的一个空文件夹下,从而将Windows的分区和/mnt这个目 录联系起来。因此,只要访问这个文件夹就相当于访问该分区了。首先要在/mnt下建立winc文件夹,在命令提示符下输入下面命令:
# mount -t vfat /dev/hda1 /mnt/winc

即表示将Windows的C分区挂到Liunx的/mnt/winc目录下。这时,在/mnt/winc目录下就可以看到Windows中C盘的内容了。使用类似的方法可以访问Windows系统的D、E盘。在Linux系统显示Windows的分区一般顺序这样的:hda1为C盘、hda5为D 盘、hda6为E盘……以此类推。上述方法可以查看Windows系统有一个很大的问题,就是Windows中的所有中文文件名或文件夹名全部显示为问号 “?”,而英文却可以正常显示。我们可以通过加入一些参数让它显示中文。还以上面的操作为例,此时输入命令:
# mount -t vfat -o iocharset=cp936 /dev/hda1 /mnt/winc

现在它就可以正常显示中文了。

3.使用mount加挂闪盘上的文件系统
在Linux下使用闪盘非常简单。Linux对USB设备有很好的支持,当插入闪盘后,闪盘被识别为一个SCSI盘,通常输入以下命令:
# mount /dev/sda1 /usb

就能够加挂闪盘上的文件系统。

小知识

Linux命令与Shell

所谓Shell,就是命令解释程序,它提供了程序设计接口,可以使用程序来编程。学习Shell对于Linux初学者理解Linux系统是非常重要的。 Linux系统的Shell作为操作系统的外壳,为用户提供了使用操作系统的接口。Shell是命令语言、命令解释程序及程序设计语言的统称,是用户和 Linux内核之间的接口程序。如果把Linux内核想象成一个球体的中心,Shell就是围绕内核的外层。当从Shell或其它程序向Linux传递命令时,内核会做出相应的反应。Shell在Linux系统的作用和MS DOS下的COMMAND.COM和Windows 9x 的 explorer.exe相似。Shell虽然不是系统核心的一部分,只是系统核心的一个外延,但它能够调用系统内核的大部分功能。因此,可以说 Shell是Unux/Linux最重要的实用程序。

Linux中的Shell有多种类型,其中最常用的是Bourne Shell(sh)、C Shell(csh)和Korn Shell(ksh)。大多数Linux发行版本缺省的Shell是Bourne Again Shell,它是Bourne Shell的扩展,简称bash,与Bourne Shell完全向后兼容,并且在Bourne Shell的基础上增加了很多特性。bash放在/bin/bash中,可以提供如命令补全、命令编辑和命令历史表等功能。它还包含了很多C Shell和Korn Shell中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。Linux系统中200多个命令中有40个是bash的内部命令,主要包括 exit、less、lp、kill、cd、pwd、fc、fg等。



该文章最后由 阿炯 于 2023-10-07 11:16:10 更新,目前是第 2 版。