编写你的第一个脚本并执行它(Writing your first script and getting it to work )
编写你的第一个脚本并执行它
若想成功编写一个shell脚本,你必须做三件事情:
- 编写脚本代码
- 赋予shell执行脚本的权限
- 将程序置于shell能找到的地方
编写脚本代码
shell脚本是一个包含ASCII文本的文件。要创建一个shell脚本,可以使用文本编辑器。文本编辑器是一个程序,类似于字处理程序,用来读写ASCII文本文件。 在Linux的命令行环境和GUI图形环境中,有许许多多可供使用的文本处理程序。以下是部分常用程序的列表:
程序名 介绍
- vi:命令行界面
经典的Unix文本处理器。因其非直观难用的命令行结构备受诽议。另一方面,它功能强大,体积小,运行速度快。学习使用vi是学习Unix的必修课,因为它可通用于Unix/Linux系统中。绝大多数现代Linux版本中,采用一个传统vi的增强版本--vim.
- emacs:命令行界面
文本处理器世界中的真正巨人是由Richard Stallman编写的emacs程序。emacs包含了(或者说你可以使它包含)你所期望文本处理器所应包含的所有特征。需要指出的是,虔诚的的vi爱好者和emacs迷们就“哪一个程序更好用"争论的热火朝天。
- pico :命令行界面
pico是一种带有pico电子邮件程序的文本编辑器。pico容易上手,但功能欠缺。对于仅需一个命令行编辑器的新手,我推荐使用pico。
- gedit : 图形界面
gedit是Gnome桌面环境自带的编辑器。
- kedit : 图形界面
kedit是KDE桌面环境自带的编辑器。
- kwrite : 图形界面
kwrite是KDE自带的高级编辑器。它拥有语法加亮功能,这对程序员和脚本写手很有用。
- nedit : 图形界面
nedit是我的最爱,它拥有语法加亮,宏命令,拼写检查,多窗口模式和多种配置选项功能。如果你想了解更多的nedit知识,可以访问http://www.nedit.org/网站。
现在,开启你的文本编辑器,输入你的第一个脚本代码,内容如下:
#!/bin/bash # My first script echo "Hello World!"
聪明的读者想必已经想出了如何复制粘贴上述内容到你的编辑器的办法了 ;-)
如果你以前看过有关编程的书,你会马上认出这是一个经典的"Hello World"程序。保存文件并为其命名。 my_script这个名字怎么样?
脚本的第一行内容很重要。它通过这一特定提示告知shell:解释脚本使用的是哪种程序。这里使用的是/bin/bash。其它的脚本语言还有perl, awk,tcl, Tk和python也可以使用这一语法。
第二行是注释。 "#"符号后面的内容都将被bash忽略。随着你的脚本体积越来越大,越来越复杂,注释便变得至关重要。程序员可以用它来说明下一步要做什么,方便其它人理解。最后一行是echo命令,用于在显示器上简便输出需显示的内容。
设置权限
接下来我们要做的是赋予shell执行你的脚本的权限。通过以下的chmod命令实现:
"755”将赋予你读写执行的权限。其它人只有读取和执行的权限。如果你想让你的脚本归你个人私有(如只有你才能读取和执行脚本),可以用”700“代替”755“。
将脚本放在你的路径中
到这里,你的脚本可以执行了。尝试一下:
你可以看到 "Hello World!" 显示出来。如果没有看到,查看一下你的脚本的存放位置,进入那一目录再执行一次。
在我们继续之前,我有必要停下来谈一下路径。当你键入命令名时,系统并非寻遍整个电脑来查找程序的位置。这将浪费大量的时间。注意一下,通常在运行你想执行的程序时,你没必要指出程序的绝对路径,但shell却看起来恰好知道这一点。
是的,你是对的。shell的确知道。原理如下:shell有一个执行文件(程序)存储目录列表,且只搜寻列表中所含目录的范围。如果搜寻列表所含目录的范围后仍没找到程 序,它将给出人所共知的错误信息 :command not found。
这一目录列表称为你的路径. 你可以通过下面的命令来查看目录列表:
当没有给出路径名时,命令将首先搜寻这一用冒号分隔的目录列表。在我们第一次尝试执行你的新脚本程序时,我们在文件中规定了路径名("./")。
你可以用下面的命令向你的路径中添加目录,directory是你想添加的目录名:
更好的解决办法是让上面的命令添加到的你.bash_profile文件中。这样,每次登录后它都将被自动执行。
大部分现代Linux版本,都提倡每一个用户都拥有一个专用目录来存储他/她的私人程序。这一目录被称为bin,它是你的home目录的子目录。如果你还没有一个专用目录,可用以下命令创建:
将你的脚本移动至你的新bin目录中,一切就绪。现在你可以键入以下命令了:
你的脚本就可以成功执行了。
© 2000-2006, William Shotts, Jr. Verbatim copying and distribution of this entire article is permitted in any medium, provided this copyright notice is preserved.
Linux® is a registered trademark of Linus Torvalds.