欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

linux之shell——shell基础知识

程序员文章站 2022-07-12 12:10:21
...

1、什么是 shell

  • 在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它接收用户命令,然后调用相应的应用程序。
  • 解释性语言。同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
  • 文字操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。
  • 用户的需求以及指令先经过shell的甄别处理之后,将需求告知内核,由内核调动向相应的硬件以及程序对需求进行响应。

2、shell 脚本

  • 当命令或者程序不在命令行执行,而是通过一个可执行文件来实现命令的执行。那么这个可执行文件就被称为shell脚本。
  • shell读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了,在这种模式下,shell不与你进行交互,这种通过文件执行命令的方式称为非交互模式。

优点:
用 shell 脚本保存执行动作
用脚本判定命令的执行条件
用脚本来实现动作的批量执行

3、系统默认的shell

bash = GNU Bourne-Again Shell
echo $SHELL $ 显示系统正在使用的shell
如果在直接在命令行中 echo $0,则打印的是当前运行的shell名
linux之shell——shell基础知识

4、shell脚本编编写规范

一个完整的shell脚本需要有以下几个部分:

  • 脚本文件名称:一般以.sh 结尾的名称进行命名,表明文件类型。
  • 第一行:#!/bin/bash 指定解释器—由哪个程序来执行脚本内容。
  • 有用户判断,否则任何用户都可以执行这个脚本
  • 有流程控制,否则只是把简单的命令进行顺序操作,没有成功与否的判断
  • 注释:可以命令后,也可以自成一行
  • 编写脚本的作者以及联系方式
  • 脚本编写时间

5、shell脚本的执行

sh date.sh   
bash date.sh

这两种执行shell脚本的方式时完全等效的,规定的脚本执行的环境。系统调用的资源以及产生的进程全部一致。
linux之shell——shell基础知识

bash date.sh
source date.sh 

这两种执行shell脚本的方式时完全等效的,规定的脚本执行的环境。系统调用的资源以及产生的进程全部一致。
linux之shell——shell基础知识

需要文件存在执行权限,可以使用下面两种方式执行脚本

chmod +x date.sh 
./date.sh 
/mnt/date.sh 

使用文件名称的方式指定调用脚本进行执行,一种时相对路径,一种时绝对路径,这两种执行shell脚本的方式时完全等效的,规定的脚本执行的环境。系统调用的资源以及产生的进程全部一致。
linux之shell——shell基础知识

6、快速生成脚本固定注释内容

一般shell脚本要注上以下信息,作者、版本、邮箱、日期、描述。
并且脚本使用vim 进行编辑,可以经过设置vim的配置文件进行快速的生成脚本固定格式的注释。

1 快捷键的方式。
vim /etc/vimrc # 编辑vim的配置文件
将汉书的调用以及定义写在文件最后

 map <F5>  ms:call TOTO ()<cr>'s         #设置快捷键F5 调用函数TOTO
 67 func TOTO ()      #自己定义的函数 TOTO
 68         call append(0,"##########################################")
 69         call append(1,"## Author                shang           ##")
 70         call append(2,"## Version               7.3             ##")
 71         call append(3,"## Mail          aaa@qq.com          ##")
 72         call append(4,"## Date          ".strftime("%Y-%m-%d")."              ##")     #输出当前日期
 73         call append(5,"## Description           print date      ##")
 74         call append(6,"##########################################")
 75         call append(7,"")
 76         call append(8,"#!/bin/bash")
 77 endfunc

linux之shell——shell基础知识
测试:使用vim 编辑文件 按下 F5 自定生成以上设置部分内容:
linux之shell——shell基础知识

2 设置自动根据所编写的新文件的类型对脚本文件自动生成以上固定格式。
vim /etc/vimrc # 编辑vim的配置文件

autocmd BufNewFile *.sh,*.script exec "call TOTO ()"    #当新建一个以,sh ,script 结尾的文件时 自动调用函数 TOTO 
 69 func TOTO () 
 70         call append(0,"##########################################")
 71         call append(1,"## Author                shang           ##")
 72         call append(2,"## Version               7.3             ##")
 73         call append(3,"## Mail          aaa@qq.com          ##")
 74         call append(4,"## Date          ".strftime("%Y-%m-%d")."              ##")
 75         call append(5,"## Description           print date      ##")
 76         call append(6,"##########################################")
 77         call append(7,"")
 78         call append(8,"#!/bin/bash")
 79 endfunc

linux之shell——shell基础知识

测试:新建一个文件 lala.sh,自动生成固定格式的注释:
vim lala.sh
linux之shell——shell基础知识