目录
编程语言是指计算机能理解的语言,人类通过使用计算机语言可以给计算机批量下达任务,让其按照人类的思想去完成工作。最常见的语言有:汇编语言、C语言、java语言、php语言、Python语言、golang语言等等。
编程语言分类:
编译型语言
程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、java
解释型语言
程序不需要编译,程序在运行时由解释器翻译成机器语言,每执行一次都要翻译一次。因此效率比较低。比如Python/JavaScript/ Perl /ruby/Shell等都是解释型语言。
shell在计算机中起到什么作用呢?为什么要求shell呢,我们可以看看计算机操作系统的组成:

看图之后问大家个问题,两个人在电话聊天:只会说法语的法国人,只会说汉语的你。如何沟通呢?
请个翻译在你两中间
同理,系统内核只知道二进制
如果你想给计算机内核下任务,让其驱动硬件干活,那么有两种选择
1、你学会二进制
2、找个翻译
shell就是我们找来的翻译
shell是一个程序,采用C语言编写,是用户和linux内核沟通的桥梁。它既是一种命令语言,又是一种解释性的编程语言。通过一个图表来查看一下shell的作用。

知己知彼方可百战百胜,如何应用Bash shell,我们先看看他的特性,有助于我们快速应用。
Tab能补全命令和文件名称
- Ctrl + c 终止前台运行的程序
- Ctrl + z 将前台运行的程序挂起到后台
- Ctrl + d 退出 等价exit
- Ctrl + l 清屏
- Ctrl + a 光标移到命令行的最前端
- Ctrl + e 光标移到命令行的最后端
- Ctrl + u 删除光标前所有字符
- Ctrl + k 删除光标后所有字符
- Ctrl + r 搜索历史命令
shell脚本是什么?简单来说就是将需要完成某个任务所执行的命令按照执行顺序保存到文本中,并给予执行权限。
若干命令 + 脚本的基本格式 + 脚本特定语法 + 思想= shell脚本
- # 需求 # 执行的命令
- 创建一个用户:harry useradd harry
- 密码设置为:yunwei.98989 echo "yunwei.98989"|passwd --stdin harry
- 该用户创建文件夹/tmp/zutuanxue mkdir /tmp/zutuanxue
- 该用户创建文件/tmp/zutuanxue/README touch /tmp/zutuanxue/README
- 将“hello world“输入到/tmp/zutuanxue/README echo 'hello world' > /tmp/zutuanxue/README
-
- # 实现的代码 test.sh
- [root@sql-master ~]# cat test.sh
- #!/bin/bash
-
- #DESC: this is a test script
- #AUTHOR: Sky
- #RELEASE: 1.0
-
- # 创建用户harry
- useradd harry
-
- # 设置用户密码 yunwei.98989
- echo "yunwei.98989"|passwd --stdin harry
-
- # 使用harry创建文件夹,文件,输入文件中内容
- su - harry -c "mkdir /tmp/zutuanxue"
- su - harry -c "touch /tmp/zutuanxue/README"
- su - harry -c "echo 'hello world' > /tmp/zutuanxue/README"
-
-
- # 添加执行权限
- [root@sql-master ~]# chmod +x test.sh
-
- # 执行脚本
- [root@sql-master ~]# ./test.sh
- 更改用户 harry 的密码 。
- passwd:所有的身份验证令牌已经成功更新。
验证脚本是否执行成功:
重复化、复杂化的工作,通过把工作的命令写成脚本,以后仅仅需要执行脚本就能完成这些工作。
来吧,光说不练嘴把式,我们来看看如何书写一个脚本呢,写好一个脚本有哪些规范呢?

咱们编写的脚本文件名称尽量言简意赅,例如编写一个nginx的安装脚本,命名名称可以为nginx_install.sh
- 1、#!/bin/bash
- //脚本第一行, #!魔法字符,指定脚本代码执行的程序。即它告诉系统这个脚本需要什么解释器来执行,也就是使用哪一种Shell
-
- 2、"#"代表注释,第一行 #!特例
-
- 3、//以下内容是对脚本的基本信息的描述,大家可以根据实际情况尽可能的写详细一些,方便后续使用者阅读了解
- # Name: 脚本名字
- # Desc:描述describe
- # Path:存放路径
- # Usage:用法
- # Update:更新时间
- # Author:作者
- # Release: 分发版本
-
- 4、//下面就是脚本的具体内容了
- commands
- ...
- # 编写完脚本文件后,添加执行权限
- [root@sql-master ~]# cat 1.sh
- #!/bin/bash
- #xxxx
- #xxx
- #xxx
- hostname
- date
- [root@sql-master ~]# chmod +x 1.sh
-
- #1. 绝对路径执行脚本
- [root@sql-master ~]# /root/1.sh
-
- #2. 当前路径执行脚本
- [root@sql-master ~]# ./1.sh
- [root@sql-master ~]# bash 1.sh
- [root@sql-master ~]# sh 1.sh
- [root@sql-master ~]# bash -x 1.sh
-
- -x:一般用于排错,查看脚本的执行过程
- -n:用来查看脚本的语法是否有问题
-
- 注意:如果脚本没有加可执行权限,不能直接使用标准的执行方法执行脚本,可以使用 bash 1.sh
参考文档:编程语言与shell脚本-组团学