Shell脚本学习(一) - 创建脚本

时间:2022-08-23 15:37:01

1. 脚本语言和编译型语言

什么是编译型语言?

编译型语言指一些从源代码(Source Code)转换成目标代码(Object Code)后便能直接通过计算机(Java通过虚拟机)来执行的语言,一些比较常见的语言包括C, C++, Java, Fortran, Pascal等都是编译型语言。
编译型语言的优点高效,他们多半运作与底层,擅长处理字节、整型、浮点型或其他机器层级的对象。缺点是编译型语言依赖于平台,例如在windows下编译成的.exe文件在Linux系统下无法使用。

什么是脚本语言?

脚本语言是为了缩短传统的源码->编译->链接->运行(edit->compile->link->run)过程而创建的计算机编程语言。早期的脚本语言常被称为批处理语言或工作控制语言,一些常见的脚本语言有Shell, JavaScript, Python, Perl, R等。
脚本语言是一种解释型语言,通常被保存在一个文本文件中,执行时不需要编译(文件本身既是源码又是可执行程序),直接由解释器现场解释执行,不产生目标程序(.exe等)。
脚本语言的优点可移植性强,开发速度快。脚本语言的解释执行不依赖于平台,例如JS语言无论在windows平台还是在unix平台都可以使用。缺点是相对于编译型语言效率较低,它不生成目标程序而是一句一句的执行的方式会造成计算机资源的浪费。另外,由于解释语言不产生目标程序,所以源码必须公开给用户,所以一般都是开源的。

2. Shell脚本

①一个简单的Shell语句

$ who  // 输出当前系统用户
ritaliu console Aug 12 15:20 // 输出
ritaliu ttys000 Aug 12 16:17

上面给出了一个简单的命令行语句,功能是输出当前系统用户,我们可以简单地看出当前有两个用户,但当我们使用一个大型系统登陆的用户很多的时候,想知道有几个用户就需要认真的数一数了,这时,我们使用一个简单的Shell语句就可以避免这个过程,看下面这个语句

$ who | wc -l  // 加入wc -l统计who输出的行数
2 // 输出

上面这行语句比之前的语句多出了两部分,一部分是‘|’一个竖杠,这个竖杠的学名叫做管道,如下图所示,它代表的是将竖杠左边的命令的输出作为右边命令的输入。
Shell脚本学习(一) - 创建脚本
第二部分是‘wc -l’这条语句代表统计输入文件的行数,除了统计行数它还可以统计字符的数量和单词的数量等

选项 对应操作
-c 统计输入的字符(characters)数并输出(英文?)
-m 统计输入的多字节字符(muti-byte characters)数并输出(中文?)
-l 统计输入的行数(line)并输出
-w 统计输入的单词(word)数并输出

②创建一个Shell脚本

上面给出了一个简单的Shell脚本语句,之前我们说过,一般的脚本都是写在一个文件里,Shell也不例外,一般,Shell脚本会写入一个后缀为.sh的文件,我们可以根据如下操作进行,创建文件方法并不唯一,你完全可以直接新建一个文件编辑好脚本内容后保存再将其修改为可执行文件。

/*制作一个Shell脚本文件*/
$ cat > example.sh
#! /bin/sh - // 标明当前文件的解释器路径
who | wc -l // 输入语句后使用组合键ctrl+d保存并退出文件
$ chmod +x example.sh // 将当前文件修改为可执行文件
$ ./example.sh // 执行脚本
2 // 输出

以上的代码执行了创建一个文件->输入文件内容并保存->将文件修改为可执行文件->执行文件的过程,左边带有$的行代表在终端输入的内容。第3、4行代表Shell脚本文件中写入的内容。

cat > example.sh

cat命令主要用于三个方面
(1)创建并写入文件
- cat > [filename] 新建文件并写入(覆盖原有文件)
- cat >> [filename] 新建文件并写入(若存在将内容追加到原有文件尾)
文件写入完成后使用ctrl+d保存并退回终端
(2)合并文件
- cat [file1] [file2] > [obj file] 将file1和file2的内容合并到obj file中
(3)浏览文件内容
- cat [filename] 在终端显式输出文件的内容

#! /bin/sh -

Shell脚本通常一开始都是这样一行语句,这行语句告知Linux内核应该以那个Shell来解释执行当前的脚本,从这条命令可以看到,我们使用的解释器位于是bin下的sh。之后接的’-‘表示没有Shell选项,据说是基于安全上的考虑,可以避免某种程度的欺骗式攻击。

chmod +x example.sh

chmod命令可以改变输入文件的类型,当前的+x选项是指将example.sh文件修改为可执行文件,若要修改回来可以使用-x选项。

./example.sh

表示执行当前目录下的example.sh文件

以上简单的介绍了Shell脚本语言的创建方法,之后将更深入的介绍脚本语言中的常用命令、语句等。