The Linux Command Line-WILLIAM-简单的shell脚本helloworld

247 阅读3分钟

现在我们受到只能手动的使用命令行的限制。通过将这些工具加入自己设计的程序中,shell可以执行复杂的任务流。可以通过写shell脚本来完成这个目的。

What Are Shell Scripts?

简单来讲,shell脚本是一个包含了一系列命令的文件。Shell会读取该文件并执行命令,就像直接在命令行上输入命令一样。

shell是独特的,因为它既是系统的强大命令行界面,又是脚本语言解释器。 大多数命令行中可以做的事情也可以在脚本中完成,并且在大多数脚本中可以完成的事情也可以在命令行中完成。

How to Write a Shell Script

创建脚本文件并运行主要有下面几个步骤:

  1. 写脚本。

  2. 使脚本能够执行。系统禁止将任何旧文本文件视为程序,因此需要授予执行权限。

  3. 将脚本放在 shell 能够发现的地方。在没有指定路径时候,shell 自动搜索某些目录中的可执行文件。方便起见,将脚本放入那些文件夹中。

Script File Format

首先,创建一个 “hello world” 的程序:

#!/bin/bash

# This is our first script.

echo 'Hello World!'

第三行使用 echo 输出,第二行为注释,注释也可以在语句之后:

echo 'Hello World!' # This is a comment too

在 # 号后行被无视,也可以在命令行执行:

[me@linuxbox ~]$ echo 'Hello World!' # This is a comment too
Hello World!

第一行看起来是个注释,但是看起来很有目的性而不仅仅是注释。#! 字符序列是 名为 shebang 的结构。 shebang用于告诉系统应该用于执行后续脚本的解释器的名称。每个shell脚本文件都应该包括这一行。保存脚本文件为 hello_world 。

Executable Permissions

接着 授予权限:

[me@linuxbox ~]$ ls -l hello_world
-rw-r--r-- 1 me me 63 2012-03-07 10:10 hello_world
[me@linuxbox ~]$ chmod 755 hello_world
[me@linuxbox ~]$ ls -l hello_world
-rwxr-xr-x 1 me me 63 2012-03-07 10:10 hello_world

对脚本有两个常用的权限设置:任何人都可以执行的 755 以及 只有拥有者能够执行的 700。

Script File Location

接下来执行脚本:

[me@linuxbox ~]$ ./hello_world
Hello World!

如果不指定路径名:

[me@linuxbox ~]$ hello_world
bash: hello_world: command not found

我们的脚本和其他的程序有何不同?答案是没有不同。脚本没有问题,出问题的是脚本的位置。PATH环境变量影响系统查找可执行程序。若未指定路径,每次需要查找可执行文件时,系统都会搜索目录列表。例如,在命令中键入ls命令时候,系统就通过此方式来找 /bin/ls 程序。PATH变量中的冒号分割的目录,查看PATH:

[me@linuxbox ~]$ echo $PATH
/home/me/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

若程序位于上面一个目录中,程序就可以执行。注意上面的第一个目录 /home/me/bin 。大多数Linux发行版本配置PATH变量包含用户home中bin目录用来允许用户执行自己的程序。放在此目录中就可以直接执行命令:

[me@linuxbox ~]$ mkdir bin
[me@linuxbox ~]$ mv hello_world bin
[me@linuxbox ~]$ hello_world
Hello World!

若PATH变量不包含此目录,可以添加:

export PATH=~/bin:"$PATH"

增加后,他将影响每个新的 终端 会话。为了应用到现在的终端会话,必须 使shell重新读取 .bashrc。可以 “sourcing” 它来做到:

[me@linuxbox ~]$ . .bashrc

. 命令与 source 命令具有相同作用,一个shell的内置 读取指定shell命令文件并且作为键盘输入。

Good Locations for Scripts

  • ~/bin : 个人使用
  • /usr/local/bin:每个用户使用
  • /usr/local/sbin:用户管理员使用
  • /usr/local/xxx:本地提供的软件
  • /bin 或者 /usr/bin:由Linux文件系统层次结构标准指定,以仅包含Linux发行商提供和维护的文件。

More Formatting Tricks

认真编写脚本的主要目标之一是易于维护。

Long Option Names

许多命令具有长或者短的选项名称。例如,ls 拥有许多选项可以分别用长短选项来表示:

[me@linuxbox ~]$ ls -ad

或者:

[me@linuxbox ~]$ ls --all --directory

两个命令是相等的。短选项可以使得键入容易,长选项使得更好理解。

Indentation and Line Continuation

缩进可以使得程序更有可读性

CONFIGURING VIM FOR SCRIPT WRITING

  • :syntax ——符号高亮

  • :set hlsearch ——搜索结果高亮

  • :set tabstop=4 ——设置制表符占用的列数。默认为八列。 将该值设置为4(这是一种常见做法),可以使长行更容易在屏幕上显示。

  • :set autoindent——自动缩进