第一章 Shell 概述
总的来说,shell其实就是一个命令行解释器,它用来接收应用程序或者用户的命令,然后调用操作系统内核来完成相应的任务。
这里所说的命令行解释器需要好好地理解下,说成大白话,解析器的实质就是将用户输入的指令转化为机器可以运行的程序,从而可以达到满足用户需求的目的。
我们为什么要用shell:shell是一个强大的编程语言,易编写、易调试、灵活性强。在linux中,我们常常编写shell脚本来满足我们的部分需求。例如,集群启动脚本,文件复制分发脚本。
1)linux中提供的shell解析器有(需要在etc目录下的shells中查看)
需要重点关注的是前两个/bin/sh和/bin/bash
2)bash和sh的关系
来到/home/atguigu(用户)/bin目录下,输入以下命令
[root@hadoop101 bin]$ ll | grep bash
-rwxr-xr-x. 1 root root 941880 5月 11 2016 bash //这一行表示我们当前linux默认用的是
bash解析器
lrwxrwxrwx. 1 root root 4 5月 27 2017 sh -> bash //这一行表示linux中sh是bash的软连接
从代码中可以看出,**sh是bash的软连接,也就是sh是bash的快捷方式**
,所以这样看来sh和bash在功能上,并没有什么实质上的区别。
3)Centos默认的解析器是bash
linux中我们用的解析器都是bash解析器
第二章 Shell脚本入门
1)脚本格式
脚本以**#!/bin/bash**开头(制定解析器为bash)
2)shell脚本简单示例:helloworld
(1)示例:创建一个shell脚本,输出helloworld
(2)案例实操:
首先打开一台已经创建完成的linux虚拟机,这里笔者的为hadoop101虚拟机,在/home目录下输入mkdir datas创建datas文件夹
然后再datas文件夹下进行以下操作:
[atguigu@hadoop101 datas]$ touch helloworld.sh //创建helloworld.sh脚本文件
[root@hadoop101 datas]$ vi helloworld.sh //编辑helloworld文件
在helloworld.sh中输入如下内容
#!/bin/bash
echo "helloworld"
(3)脚本的常用执行方式
第一种:采用bash或sh加上脚本的相对路径或者绝对路径(这种方式不用赋予+x权限)
sh+脚本的相对路径:
[atguigu@hadoop101 datas]$ sh helloworld.sh
helloworld
sh+脚本的绝对路径:
[atguigu@hadoop101 datas]$ sh /home/atguigu/datas/helloworld.sh
helloworld
bash+脚本的相对路径:
[atguigu@hadoop101 datas]$ bash helloworld.sh
helloworld
bash+脚本的绝对路径:
[atguigu@hadoop101 datas]$ bash /home/atguigu/datas/helloworld.sh
helloworld
第二种:采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)
(a)首先要赋予helloworld.sh 脚本的+x权限
[atguigu@hadoop101 datas]$ chmod +x helloworld.sh
(b)执行脚本