在DOS中,你可能会从事一些例行的重复性命令,此时你会将这些重复性的命令写成批处理命令,只要执行这个
批处理命令就等于执行这些命令。在Linux系统中也有类似的批处理命令,他的功能比起DOS的批处理命令更为强
大,相对也较为复杂,已经和一般的高级语言不相上下。这些批处理命令在Linux中叫外壳脚本(外壳Script).
外壳脚本是以文本方式储存的,而非二进制文件。所以外壳脚本必须在Linux系统的外壳下解释执行。不同外壳的
脚本大多会有一些差异,所以我们不能将写给A外壳的脚本用B外壳执行。而在Linux系统中大家最长使用是Bourne
外壳以及C外壳。
创建外壳程序
你可以用任何的编辑器编辑外壳程序,只要将要执行的外壳或Linux命令写入外壳程序即可。例如,假设你的系
统在启动时挂接有一台CD-ROM驱动器,而你想更换驱动器中的CD,并读取其中的内容。一种方法是:首先把想要
读取的CD放入CD-ROM驱动器。然后使用unmount命令卸载CD-ROM驱动器,最后再使用mount命令挂接
CD-ROM驱动器。命令如下:
umount /dev/cdrom
mount -t iso9660 /dev/cdrom /cdrom
你可以创建一个包含这两个命令的文件名为remount的外壳程序,而不必在每次更换CD都重复执行这两个命
令。
运行外壳程序
如何运行我们已经写好的外壳脚本呢?可以有四种方法,下面分别介绍这几种方法:
1.可以把外壳脚本的权限设置为可执行,这样就可以在外壳提示符下直接执行。我们可以使用下列命令更改外
壳脚本的权限:
chmod u+x filename 只有自己可以执行,其他人不能执行。
chmod ug+x filename 只有自己及同一工作组的人可以执行,其他人不能执行。
chmod +x filename 所有人都可以执行。
而我们如何指定使用哪一个外壳来解释执行外壳脚本呢?几种基本的指定方式如下所述:
1.如果外壳脚本的第一个非空白字符不是“#”,则它会使用Bourne外壳
2.如果外壳脚本的第一个非空白字符是“#”,但不以“#!”开头时,则它会是使用C外壳。
3.如若外壳脚本以“#!”开头,则“#!”后面所跟的字符串就是所使用的外壳的绝对路径名。Bourne外壳的路径名称为/bin/sh,而C外壳则为/bin/csh.
例如:
1.如何使用Bourne外壳,可用以下方式:
echo enter filename
或者
#!/bin/sh
2.如何使用C外壳,可用以下方式:
#C外壳Script
或者
#!/bin/csh
3.如何使用/etc/perl作为外壳,可用以下方式:
#! /etc/perl
第二种方法是执行外壳想要执行的外壳,其后跟随外壳脚本的文件名作为命令行参数。例如,使用tcsh执行上面的外壳脚本:
tcsh remount
此命令启动一个新的外壳,并令其执行remount文件。
第三种方法是在pdksh和bash下使用.命令,或在tcsh下使用source命令。例如,在pdksh和bash下执行上面的外壳脚本:
. remount
或在tcsh下执行上面的外壳脚本:
source remount
第四种方法是使用命令替换
这是一个相当有用的方法。如果想要使某个命令的输出成为另一个命令的参数时,就可以使用这个方法。我们将命令列于两个`号之间,而外壳会以这个命令执行后的输出结果代替这个命令以及两个`符号。例如:
str='Current directory is' `pwd`
echo $str
结果如下:
Current directory is /users/cc/mgtsai
在上面的例子中,pwd这个命令输出/users/cc/mgtsai,而后整个字符串代替原来的 ‘pwd’设定str变量,所以str变量的内容则会包括pwd命令的输出。
批处理命令就等于执行这些命令。在Linux系统中也有类似的批处理命令,他的功能比起DOS的批处理命令更为强
大,相对也较为复杂,已经和一般的高级语言不相上下。这些批处理命令在Linux中叫外壳脚本(外壳Script).
外壳脚本是以文本方式储存的,而非二进制文件。所以外壳脚本必须在Linux系统的外壳下解释执行。不同外壳的
脚本大多会有一些差异,所以我们不能将写给A外壳的脚本用B外壳执行。而在Linux系统中大家最长使用是Bourne
外壳以及C外壳。
创建外壳程序
你可以用任何的编辑器编辑外壳程序,只要将要执行的外壳或Linux命令写入外壳程序即可。例如,假设你的系
统在启动时挂接有一台CD-ROM驱动器,而你想更换驱动器中的CD,并读取其中的内容。一种方法是:首先把想要
读取的CD放入CD-ROM驱动器。然后使用unmount命令卸载CD-ROM驱动器,最后再使用mount命令挂接
CD-ROM驱动器。命令如下:
umount /dev/cdrom
mount -t iso9660 /dev/cdrom /cdrom
你可以创建一个包含这两个命令的文件名为remount的外壳程序,而不必在每次更换CD都重复执行这两个命
令。
运行外壳程序
如何运行我们已经写好的外壳脚本呢?可以有四种方法,下面分别介绍这几种方法:
1.可以把外壳脚本的权限设置为可执行,这样就可以在外壳提示符下直接执行。我们可以使用下列命令更改外
壳脚本的权限:
chmod u+x filename 只有自己可以执行,其他人不能执行。
chmod ug+x filename 只有自己及同一工作组的人可以执行,其他人不能执行。
chmod +x filename 所有人都可以执行。
而我们如何指定使用哪一个外壳来解释执行外壳脚本呢?几种基本的指定方式如下所述:
1.如果外壳脚本的第一个非空白字符不是“#”,则它会使用Bourne外壳
2.如果外壳脚本的第一个非空白字符是“#”,但不以“#!”开头时,则它会是使用C外壳。
3.如若外壳脚本以“#!”开头,则“#!”后面所跟的字符串就是所使用的外壳的绝对路径名。Bourne外壳的路径名称为/bin/sh,而C外壳则为/bin/csh.
例如:
1.如何使用Bourne外壳,可用以下方式:
echo enter filename
或者
#!/bin/sh
2.如何使用C外壳,可用以下方式:
#C外壳Script
或者
#!/bin/csh
3.如何使用/etc/perl作为外壳,可用以下方式:
#! /etc/perl
第二种方法是执行外壳想要执行的外壳,其后跟随外壳脚本的文件名作为命令行参数。例如,使用tcsh执行上面的外壳脚本:
tcsh remount
此命令启动一个新的外壳,并令其执行remount文件。
第三种方法是在pdksh和bash下使用.命令,或在tcsh下使用source命令。例如,在pdksh和bash下执行上面的外壳脚本:
. remount
或在tcsh下执行上面的外壳脚本:
source remount
第四种方法是使用命令替换
这是一个相当有用的方法。如果想要使某个命令的输出成为另一个命令的参数时,就可以使用这个方法。我们将命令列于两个`号之间,而外壳会以这个命令执行后的输出结果代替这个命令以及两个`符号。例如:
str='Current directory is' `pwd`
echo $str
结果如下:
Current directory is /users/cc/mgtsai
在上面的例子中,pwd这个命令输出/users/cc/mgtsai,而后整个字符串代替原来的 ‘pwd’设定str变量,所以str变量的内容则会包括pwd命令的输出。