个人博客网:https://wushaopei.github.io/    (你想要这里多有)

一、 Shell 脚本概述

1、 Shell 的 含义:

Shell 是一个用C语言编写的程序,它是用户使用Linux 的桥梁。Shell既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。

Shell 在线工具

2、Shell 脚本

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。

Shell是一个命令解释器,是一个程序/bin/bash,解释linux的命令

注意:

  • shell交互式命令使用
  • 打开终端,一行行敲命令

Shell script  是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正规表示法,管道命令以及数据流重导向等功能,以达到我们所想要的处理目的。

二、Shell 解析器

1、Linux 提供的Shell解析器有:

查看Shell解析器命令:       sudo cat /etc/shells

如下图:

2、bash 和 sh  的关系:

可见两者关系为软连接,sh 最终指向的是 bash

命令: ll | grep bash

3、Centos 默认的解析器是bash

命令: echo $SHELL

三、Shell脚本入门

1、 脚本格式

脚本 以 #!/bin/bash 开头(指定解析器)

2、 第一个Shell脚本: hellWorld

(1) 需求: 创建一个Shell脚本,输出helloworld

(2)案例实操

[root@rich wenmin]# mkdir datas
[root@rich wenmin]# cd datas
[root@rich datas]# pwd
/home/wenmin/datas
[root@rich datas]# touch helloworld.sh
[root@rich datas]# vim helloworld.sh

在 helloworld.sh 中输入如下内容:

#!/bin/bash

echo "helloworld wenmin"

(3)脚本的常用执行方式:

第一种: 采用bash 或sh+脚本的相对或绝对路径(不用赋予脚本+x 权限)

sh+脚本的相对路径

[root@rich datas]# ll
总用量 4
-rw-r--r-- 1 root root 38 4月 30 20:26 helloworld.sh
[root@rich datas]# sh helloworld.sh
helloworld wenmin
[root@rich datas]#

sh+ 脚本的绝对路径

[root@rich datas]# pwd
/home/wenmin/datas
[root@rich datas]# sh /home/wenmin/datas/helloworld.sh
helloworld wenmin
[root@rich datas]#

bash + 脚本的相对路径

[root@rich datas]# bash helloworld.sh
helloworld wenmin
[root@rich datas]#

第二种: 采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)

(a)首先要赋予 helloworld.sh 脚本的 +x 权限

[root@rich datas]# ./helloworld.sh
-bash: ./helloworld.sh: 权限不够
[root@rich datas]# chmod 777 helloworld.sh
[root@rich datas]# ll

(b)执行脚本

相对路径

[root@rich datas]# ./helloworld.sh
helloworld wenmin

绝对路径

[root@rich datas]# /home/wenmin/datas/helloworld.sh
helloworld wenmin

注意:

第一种执行方法,本质是bash 解析器帮你执行脚本,所以脚本本身不需要执行权限。

第二种执行方法,本质是脚本需要自己执行,所以需要执行权限。

3、第二个Shell 脚本: 多命令处理

(1)需求:

在 /home/wenmin/ 目录下创建一个wenxing.txt,在wenxing.txt文件中增加 "I love cls".

(2)案例实操:

[root@rich datas]# touch batch.sh
[root@rich datas]# vim batch.sh

在 batch.sh 中输入如下内容:

#!/bin/bash

cd /home/wenmin/
touch wenxing.txt
echo "I love cls" >>wenxing.txt

//执行Shell脚本

[root@rich datas]# ll
总用量 8
-rw-r--r-- 1 root root 80 4月 30 20:52 batch.sh
-rwxrwxrwx 1 root root 38 4月 30 20:26 helloworld.sh
[root@rich datas]# bash batch.sh

查看目录文件及 wenxing.txt 内容

[root@rich wenmin]# ll
总用量 8
drwxr-xr-x 2 root root 4096 4月 30 20:56 datas
-rw-r--r-- 1 root root 11 4月 30 20:52 wenxing.txt
[root@rich wenmin]# cat wenxing.txt
I love cls

Shell脚本 (一) 概述、解析器、脚本入门的更多相关文章

  1. PHP Simple HTML DOM解析器使用入门

    http://www.cnphp.info/php-simple-html-dom-parser-intro.html 一直以来使用php解析html文档树都是一个难题.Simple HTML DOM ...

  2. Boost学习之语法解析器--Spirit

    Boost.Spirit能使我们轻松地编写出一个简单脚本的语法解析器,它巧妙利用了元编程并重载了大量的C++操作符使得我们能够在C++里直接使用类似EBNF的语法构造出一个完整的语法解析器(同时也把C ...

  3. 邵国际: C 语言对象化设计实例 —— 命令解析器

    本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 邵国际 来源: 微信公众号linux阅码场(id: linuxdev) 内容简介 单片机工程师常常疑惑为什么 ...

  4. XML解析——Jsoup解析器

    一.Jsoup解析器快速入门案例 Docement对象,文本对象,包含着各个Dom树结构 1.引入Jsoup解析器的jar包放在lib文件夹下后,写java代码 其中, 二.Jsoup对象 1.Jso ...

  5. IBM Rational AppScan:跨站点脚本攻击深入解析

    IBM Rational AppScan:跨站点脚本攻击深入解析    了解黑客如何启动跨站点脚本攻击(cross-site scripting,XSS),该攻击危害(及不危害)什么,如何检测它们,以 ...

  6. shell、cmd、dos和脚本语言杂谈(转)

    问题一:DOS与windows中cmd区别   在windows系统中,“开始-运行-cmd”可以打开“cmd.exe”,进行命令行操作. 操作系统可以分成核心(kernel)和Shell(外壳)两部 ...

  7. shell、cmd、dos和脚本语言区别和联系

    问题一:DOS与windows中cmd区别   在windows系统中,“开始-运行-cmd”可以打开“cmd.exe”,进行命令行操作. 操作系统可以分成核心(kernel)和Shell(外壳)两部 ...

  8. 使用Python脚本强化LLDB调试器

    LLDB是Xcode自带的调试器,作为一个iOS应用开发程序员,平时我在开发应用时会使用LLDB来调试代码.在逆向应用时,也会用到LLDB来跟踪应用的执行过程. LLDB还内置了一个Python解析器 ...

  9. 【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705  参考博客 : [嵌入式开发]嵌入式 开发环境 (远 ...

随机推荐

  1. search(12)- elastic4s-聚合=桶+度量

    这篇我们介绍一下ES的聚合功能(aggregation).聚合是把索引数据可视化处理成可读有用数据的主要工具.聚合由bucket桶和metrics度量两部分组成. 所谓bucket就是SQL的GROU ...

  2. python学习(11)文件的读写操作

    1.读文件的7种操作模式 操作模式 具体含义 'r' 读取 (默认) 'w' 写入(会先截断之前的内容) 'x' 写入,如果文件已经存在会产生异常 'a' 追加,将内容写入到已有文件的末尾 'b' 二 ...

  3. [codeforces 200 A Cinema]暴力,优化

    题意大致是这样的:有一个有n行.每行m个格子的矩形,每次往指定格子里填石子,如果指定格子里已经填过了,则找到与其曼哈顿距离最小的格子,然后填进去,有多个的时候依次按x.y从小到大排序然后取最小的.输出 ...

  4. hdoj 1874 dijkstra

    在做PAT的甲1003,思考DFS和图什么的,时间紧张直接去看柳神(日后上传柳神的C++版本)的订阅,得知是dijkstra,转去用hdoj 1874练手,写了两天,终于调出来了 题目链接:http: ...

  5. web2

    0x01 <?php $miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws"; funct ...

  6. strut2 自定义文件上传错误信息

    在文件上传过程中我们可以指定拦截器对文件类型.后缀名.大小进行设定,action中的配置: <interceptor-ref name="fileUpload"> &l ...

  7. python常识系列08-->logging模块基础入门

    前言 努力从今天开始,成功从"零"开始. 一.logging模块是什么? 是Python内置的标准模块,主要用于输出运行日志 二.日志是什么? 日志是代码的必要组成部分 记录日志能 ...

  8. 学习Echarts:(二)异步加载更新

    这部分比较简单,对图表的异步加载和更新,其实只是异步获取数据然后通过setOption传入数据和配置而已. $.get('data.json').done(function (data) { myCh ...

  9. 【Python代码】混合整数规划MIP/线性规划LP+python(ortool库)实现

    目录 相关知识点 LP线性规划问题 MIP混合整数规划 MIP的Python实现(Ortool库) assert MIP的Python实现(docplex库) 相关知识点 LP线性规划问题 Linea ...

  10. select 下拉模糊查询

    http://ivaynberg.github.io/select2/ https://github.com/ https://github.com/ivaynberg.github.io/selec ...