Shell脚本 (一) 概述、解析器、脚本入门
个人博客网:https://wushaopei.github.io/ (你想要这里多有)
一、 Shell 脚本概述
1、 Shell 的 含义:
Shell 是一个用C语言编写的程序,它是用户使用Linux 的桥梁。Shell既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 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脚本 (一) 概述、解析器、脚本入门的更多相关文章
- PHP Simple HTML DOM解析器使用入门
http://www.cnphp.info/php-simple-html-dom-parser-intro.html 一直以来使用php解析html文档树都是一个难题.Simple HTML DOM ...
- Boost学习之语法解析器--Spirit
Boost.Spirit能使我们轻松地编写出一个简单脚本的语法解析器,它巧妙利用了元编程并重载了大量的C++操作符使得我们能够在C++里直接使用类似EBNF的语法构造出一个完整的语法解析器(同时也把C ...
- 邵国际: C 语言对象化设计实例 —— 命令解析器
本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 邵国际 来源: 微信公众号linux阅码场(id: linuxdev) 内容简介 单片机工程师常常疑惑为什么 ...
- XML解析——Jsoup解析器
一.Jsoup解析器快速入门案例 Docement对象,文本对象,包含着各个Dom树结构 1.引入Jsoup解析器的jar包放在lib文件夹下后,写java代码 其中, 二.Jsoup对象 1.Jso ...
- IBM Rational AppScan:跨站点脚本攻击深入解析
IBM Rational AppScan:跨站点脚本攻击深入解析 了解黑客如何启动跨站点脚本攻击(cross-site scripting,XSS),该攻击危害(及不危害)什么,如何检测它们,以 ...
- shell、cmd、dos和脚本语言杂谈(转)
问题一:DOS与windows中cmd区别 在windows系统中,“开始-运行-cmd”可以打开“cmd.exe”,进行命令行操作. 操作系统可以分成核心(kernel)和Shell(外壳)两部 ...
- shell、cmd、dos和脚本语言区别和联系
问题一:DOS与windows中cmd区别 在windows系统中,“开始-运行-cmd”可以打开“cmd.exe”,进行命令行操作. 操作系统可以分成核心(kernel)和Shell(外壳)两部 ...
- 使用Python脚本强化LLDB调试器
LLDB是Xcode自带的调试器,作为一个iOS应用开发程序员,平时我在开发应用时会使用LLDB来调试代码.在逆向应用时,也会用到LLDB来跟踪应用的执行过程. LLDB还内置了一个Python解析器 ...
- 【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705 参考博客 : [嵌入式开发]嵌入式 开发环境 (远 ...
随机推荐
- 折腾了好久的vscode配置c/c++语言环境(Windows环境下)
最近有c语言相关的作业,但是突然再次拿起大一的时候那些c语言编辑器的时候,总觉得不智能,于是下了一个vscode,准备配一个c语言的环境 步骤如下: 1.vs官网下载好vscode,安装好以后再下载一 ...
- Django 设置admin后台表和App(应用)为中文名
设置表名为中文 1.设置Models.py文件 class Post(models.Model): name = models.CharField() --省略其他字段信息 class Meta: v ...
- LeetCode--LinkedList--83.Remove Duplicates from Sorted List(Easy)
题目地址https://leetcode.com/problems/remove-duplicates-from-sorted-list/ 83. Remove Duplicates from Sor ...
- 【Spark】帮你搞明白怎么通过SparkSQL整合Hive
文章目录 一.创建maven工程,导包 二.开发代码 一.创建maven工程,导包 <properties> <scala.version>2.11.8</scala.v ...
- HMM-维特比算法理解与实现(python)
HMM-前向后向算法理解与实现(python) HMM-维特比算法理解与实现(python) 解码问题 给定观测序列 \(O=O_1O_2...O_T\),模型 \(\lambda (A,B,\pi) ...
- 错误提示 Table '.***_ecms_news_data_' doesn't exist select keyid,dokey,newstempid,closepl,info
错误提示:Table '**.***_ecms_news_data_' doesn't exist select keyid,dokey,newstempid,closepl,infotags,wri ...
- 移动端APP自动化测试超全基础汇总
目录 一.面试过程 1.自动化岗位要求 2.面试流程,面试类型 3.沟通技巧,不同级别要求 二.真实面试案例 1.一个输入框的面试题(有人拿到高级岗位,有人连初级都没拿到,为什么) 三.自我分析 1. ...
- webpack打包时修改package.json的版本号,并输出相关版本
可直接修改的方式 { plugins: [ function() { // 修改package.json中的版本号 this.plugin('done', function() { const pkg ...
- Proteus仿真时出现Cannot open‘C:\Users\...\LISA7605.SDF’的错误
目录 打开环境变量 更改环境变量 打开环境变量 更改环境变量 "用户变量"和"系统变量"栏里,找到TEMP与TMP,都改成%SystemRoot%\TEMP 改 ...
- 五、数据类型(1):整数&&带小数点的数
1.整数 int printf("%d",...); scanf("%d",&...); 2.带小数点的数 double printf("%f ...