首页 > 电脑教程 > Linux教程 > Linux管理员shell自动化操作|bash Shell解释器的高效应用教程

Linux管理员shell自动化操作|bash Shell解释器的高效应用教程

小编:动力软件园 时间:2012-04-30 00:23:34

如何让您的Linux管理更加轻松,如何高效使用红帽企业版Linux的关键是自动化。
当要做乏味的、重复性的劳动时,好的Linux管理员实际上应该是懒得去做这些事的。
就像前面说到的,他们用一些方法把命令连接在一起同时运行,而不是等着一个命令运行
完再键入另一个命令。他们还利用了bash历史记录的特征,并且说明了如何引用以前键入的
命令以便高效地完成任务。然而,你的系统管理员工具箱里仍然少了一件重要的东西:脚本。脚本最简单的形式只
是一个含有命令列表的文本文件。命令通过指定的程序发送,这个程序被称为解释器,它依
次运行每个命令。通常,这个解释器就是bash Shell(被称做/bin/bash或/bin/sh ),每个命
令都是一个普通的Linux命令。其他解释器允许你使用更强大的编程语言,如Perl , Python
和Ruby.
    在你开始编写脚本时,要记住几个重要的事项:
    .脚本的第一行必须指定向哪个解释器发送指令,可以用一个名叫“shebang"(读作
      "shuh-bang")的特殊字符串来完成,这个字符串是#:。shebang之后是该脚本解释器
      的名称。例如,要把bash作为你的解释器,你可以用#!/bin/sh或者#!/bin/bash,大多
      数脚本只用##!/bin/sh。把解释器称为##!/bin/bash可以有一些额外的特性,但却限制了
      脚本与旧版UNIX系统的兼容性,因而很少有必要这么做。
    .在运行脚本前,你必须赋予它“可执行的”权限(否则,它不过是个文本文件)。用
      来赋予权限的命令是chmod u+x <scriptname>,它允许你(只有你)运行该脚本,就
像运行其他任何命令一样。chmod命令将在以尼剪套章节中详细讨论。
如果你在主目录里创建了一个名叫foo.sh的脚本,接着只要键入foo.sh命令,’就会得
到一个“no such file or directory(无此文件或目录)”的错误提示。这是因为当你键
入命令时,Linux系统从一组固定的目录中寻找这个命令。这些目录也被看做是你的
PATH,而且为了安全起见,你的PATH绝不会包括当前目录。为了解决这个问题,
你有两种选择:
(1)你可以键入-/foo.sh或Jfoo.sh(“.”指的是当甜臀〕录)来明确指定脚本的位置。
      (2)你可以把脚本放在你的PATH定义目录里。只有根用户才有权限把文件放在大多
          数这样的目录里,但是所有用户的主目录里都有个人的bin,可以向其中写入信
          息。因此,如果foo.sh被移动到一/bin,只要在命令行中键入foo.sh就可以运行
          它了,这是首选的技巧。
    你将在后面的章节中学到更多关于PATH设置的技巧。
    让我们看一个简单的例子。假如你是一个管理员,经常需要查看哪些用户在登录系统,
你可以通过运行w命令来得到这个信息(这样就可以了)。虽然这样做能够提供一份很好的
登录系统的用户清单,但却无法显示执行w命令的时间。另外一个date命令能够显示当前
日期和时间,却不能显示用户信息。如果能把这两个命令结合起来该有多好……
    假定你在个人的bin目录下创建了一个名叫wdate.sh的脚本。
    注意,在它可以像普通命令那样运行之前,要把这个肚孙淤浪在,/bin里,并使它可以执
行。执行时,它先运行date命令,接着运行w命令,执行一个命令就可以取得执行两个命
令的效果!显然,可以修改这个脚本来运行其他任意的命令。实际上,脚本比单纯的命令列
表强大得多,而且本身就是复杂的程序。我们将在第11章的补充材料中讨论这些高级的脚本
技巧,现在先集中掌握基本脚本,这是一个非常有用的省力技巧。管理员的经验法则是:用
脚本完成要重复执行两次以上的任务!
    返回值
    Linux系统中的每个进程都有寿命。所有进程应另一个进程(通常是Shell)的请求而启
动,发出请求的进程被称做父进程,新启动的进程被称做子进程。通常,子进程完成自身的
任务后退出。(子进程可能再产生子进程)子进程退出后会返回一点信息给父进程,叫做返
回值或退出状态。父进程负责收集子进程的返回值。
    返回值以整数的形式出现,范围在0到255之间。程序可以在退出时随意选择要返回的
值。不同返回值所表示的含义常常是定义完好的程序接口的组成部分,在该程序的man page
中记载。(如果你熟悉diff命令,在它的man page的“DIAGNOSTICS”部分里有范例。)
整个Linux界(和整个UNIX界)的约定是,程序返回0意味着无论它要完成什么都是“成
功”的,而返回值是0以外的数值则意味着某种形式的失败。
 

 

 

排行榜
易学车老版本

易学车老版本

实用工具 下载
天行健安卓版 v2.35770

天行健安卓版 v2.35770

手游软件 下载
三星PC套件 samsung kies 官方正式版 3.2.15041.2

三星PC套件 samsung kies 官方正式版 3.2.15041.2

手机工具 下载