写下你的第一个脚本并执行它
要成功的写一个shell脚本,你得做三件事:
1.       写一个脚本
2.       赋予这个shell 权限来执行它
3.       把它放到某个shell能找到的地方
写一个脚本
一个shell 脚本是一个包含了ASCII 文本的文件。要创建一个shell 脚本, 你可以使用文本编辑器。文本编辑器是个程序,就像文字处理软件,能读和写ASCII文本文件。有太多太多的可用的文本编辑器可供你的Linux系统使用,同时针对命令行环境和图形界面环境。这是一些命令的列表。
名称
描述
界面
Unix 文本编辑器的祖宗,vi, 以它的难度著称,非本能的命令结构。好的方面,vi 是强大,简洁和快速的。学习vi是通往Unix的必经之路,自从它在Unix/Linux系统中如此普遍和可用。在大多数的Linux版本中,一个增强的传统vi编辑器叫做vim被使用。
命令行界面
世界上真正卓越的文本编辑器是Richard Stallman所开发的emacsEmacs包含(或能被制成为包含)每一个曾经为文本编辑器所构想特性。它出名于viemacs爱好者之间类似于宗教战争似的争论谁更优秀。
命令行界面
Nano是一个免费克隆的由pine电子邮件程序支持的文本编辑器。Nano非常的易用但功能上不够完善。我推荐nano作为初学者的工具来编辑命令行。
命令行界面
gedit
gedit是由Gnome桌面环境支持的一个编辑器。
图形界面
kwrite
Kwrite是由KDE支持的高级编辑器。它拥有语法高亮显示,针对程序员和脚本编辑者的有益特性。
图形界面
 
现在,启动你的文本编辑器然后输入以下你的第一个脚本
#!/bin/bash
# My first script
 
echo "Hello World!"
 
聪明的你会明白如何复制粘贴这段文本到你的文本编辑器中。
如果你曾经翻看过编程方面的书,你将会立即回想起这个经典的”Hello World”程序。将这个文件保存为一些描述性的名字。”my_script”怎么样?
脚本的第一行很重要。这是一个给shell的特别的线索来指示什么程序用来解释脚本。既然这样,它是/bin/bash。其他的脚本语言诸如perlawktclTkpython能够使用这个结构。
第二行是一个注释。每一个出现在”#”符号后面的将被bash忽略掉。当你的脚本变得更大和更复杂时,注释将会非常重要。程序员用它来解释发生什么让其他人也能弄清楚。最后一行是echo命令。这个命令简单的打印出所给定要显示的内容。
设置权限
接下来我们要做的是赋予shell权限来执行你的脚本。使用chmod命令来完成:
[me@linuxbox me]$ chmod 755 my_script
“755”将赋予你读、写和执行的权限。其他的人将得到仅读和执行的权限。如果你想使脚本变为私有(也就是只有你拥有读和执行的权限),使用”700”替代。
把它放到你的路径里
这一点,你的脚本将运行。试试这个:
[me@linuxbox me]$ ./my_script
你应该看到”Hello World!”显示出来。如果没有看到,查看你存放脚本的真正路径,去那儿再试试看。
在我们进一步说之前,我需要停一下并讲讲路径。当你输入一个命令的名称,系统并不搜寻整个电脑来找到程序所在的位置。那需要很长的时间。你已经注意到你不用经常为你所要运行的程序指定一个完整的路径名称,shell刚好知道。
那么,你是对的。Shell不知道。这是原因:shell维护了一列存放可执行文件(程序)的目录,刚好搜寻这个列表里的目录。如果在搜寻了列表中每个目录后没有发现这个程序,它将会提示有名的”command not found”(未找到命令)的错误信息。
这个目录的列表被称作你的路径。你可以查看包含以下命令的目录列表:
me@linuxbox me]$ echo $PATH   (区分大小写)
这将会返回一个冒号隔开的目录列表,该列表会被搜寻如果特定的路径名称没有赋予当命令尝试。在我们第一次试图执行你的新脚本,我们给文件指定一个路径名(“./”)
你可以使用下列命令为你的路径添加目录,当然”directory”就是你想要添加的目录名称。
[me@linuxbox me]$ export PATH=$PATH:directory
一个更好的方式可以用来编辑你的 .bash_profile 文件包含以上命令。那方法,在你每次登录时会自动完成。
大部分现代Linux 版本鼓励每个用户拥有一个为个人使用的程序指定目录的实践。这个目录是在你home目录下的子目录叫做bin。如果你没有这目录,使用以下命令来创建:
[me@linuxbox me]$ mkdir bin
移动你的脚本到你的新目录bin并且你准备就绪。现在你仅需要输入:
[me@linuxbox me]$ my_script
然后你的脚本开始运行。