1. Shell简介
1.1 Shell出现背景
Shell 既是一种脚本编程语言,也是一个连接内核和用户的软件。
对于图形界面,用户点击某个图标就能启动某个程序;对于命令行,用户输入某个程序的名字(可以看做一个命令)就能启动某个程序。这两者的基本过程都是类似的,都需要查找程序在硬盘上的安装位置,然后将它们加载到内存运行。然而,真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁。
由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),需要另外再开发一个程序,让用户直接使用这个程序;该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核。如此一来,用户和内核之间就多了一层“代理”,这层“代理”既简化了用户的操作,也保护了内核。用户界面和命令行就是这个另外开发的程序,就是这层“代理”。在Linux下,这个命令行程序叫做 Shell。
1.2 Shell作用
Shell 除了能解释用户输入的命令,将它传递给内核,还可以:
调用其他程序,给其他程序传递数据或参数,并获取程序的处理结果;
在多个程序之间传递数据,把一个程序的输出作为另一个程序的输入;
Shell 本身也可以被其他程序调用。
由此可见,Shell 是将内核、程序和用户连接了起来。
Shell 本身支持的命令并不多,但是它可以调用其他的程序,每个程序就是一个命令,这使得 Shell 命令的数量可以无限扩展,其结果就是 Shell 的功能非常强大,完全能够胜任 Linux 的日常管理工作,如文本或字符串检索、文件的查找或创建、大规模软件的自动部署、更改系统设置、监控服务器性能、发送报警邮件、抓取网页内容、压缩文件等。
常见的 Shell 有 sh、bash、csh、tcsh、ash 等。这里使用Linux默认的bash shell (兼容sh),对其他Shell不加探究。
2. Shell语法
2.1 helloWorld及授权
编写shell脚本,输出hello world
[root@centoszang testShell]# vim myShell.sh#!/bin/bashecho "hello world!!!"
通过上面代码,可以看出:“#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。echo命令用于向窗口输出文本。
编写之后,运行该文件会提示权限不够
[root@centoszang testShell]# ./myShell.sh
-bash: ./myShell.sh: 权限不够
授给该文件x(执行)权限
[root@centoszang testShell]# chmod 744 ./myShell.sh[root@centosza