大家,周末晚上好,今天来分享linux里面的shell编程(一种脚本编程),哦不,正确的说,你或许应该早就了解过脚本编程,比如说很火的python。嗯,不扯别了,趁着周末多给大家更文,之前有过半个月没更文,真对不住各位了,还有以前的文章排版也是一塌糊涂,不过庆幸的是,现在比较稍微好多了,也离不开各位网友给的意见。下面就开始详细介绍shell了:
一、shell介绍:
1、shell 它英文翻译的话就是“壳”的意思,但是在我们linux环境下,它确实是发挥了很大的作用,因为在linux环境下,shell 可以理解为软件系统提供给用户操作的命令行界面,可以说它是人机交互的一种方式(也可以说是计算机硬件与用户的翻译官),我们玩嵌入式的,装ubuntu比较多(其它linux发行版本也是一样的操作),你打开要输入命令来实现自己的需求,第一时间肯定就是打开“终端”,这个终端就是shell 了啦!它是作为用户与Linux系统内部的通信媒介,除了能够支持各种变量与参数外,还提供了诸如循环、分支等高级编程语言才有的控制结构特性,这个后面会慢慢分享。
2、但是我们在这个终端下输入命令来创建单个工程的话,是没用啥问题,但是一旦工程数量多了,再去一个一个输入的话,就拉低效率了,比如说:譬如我们要在linux下创建一个文件a.c,可以touch a.c 但是如果我现在是用在linux下创建100个文件,分别为a1.c a2.c.....a100.c 如果这时候还是手工去命令行下执行命令创建也可以,但是很累。最好的做法就是把创建过程写成一个shell脚本程序,然后去执行这个shell脚本程序,执行这个程序的效果和手工在命令行输入那些命令效果一样的。从这里我们可以总结出来,shell有两种工作方式:
二、shell脚本的运行机制:解释运行
1、我们做嵌入式的,对C语言和C++比较熟悉,而这两种语言编写过程是这样的:编写出源代码(源代码是不能直接运行的)然后编译链接形成可执行二进制程序,然后才能运行;而脚本程序不同,脚本程序编写好后源代码即可直接运行(没有编译链接过程)
2、shell程序是解释运行的,所谓解释运行就是说当我们执行一个shell程序时,shell解析器会逐行的解释shell程序代码,然后一行一行的去运行。(顺序结构)
3、CPU实际只认识二进制代码,根本不认识源代码。脚本程序源代码其实也不是二进制代码,CPU也不认识,也不能直接执行。只不过脚本程序的编译链接过程不是以脚本程序源代码为单位进行的,而是在脚本运行过程中逐行的解释执行时才去完成脚本程序源代码转成二进制的过程(不一定是编译链接,因为这行脚本程序可能早就编译连接好了,这里我们只是调用它)的。
三、实战一个简单shell脚本程序:
1、编辑器、编译器、运行方法(脚本的3种执行方法):
2、let's go 体验第一个shell程序:
在创建shell脚本程序的时候,注意一下它文件后缀是以".sh"结尾的哈,不要搞错了哈。
我们现在来创建一个test.sh的一个脚本程序,具体内容如下:
vim test.sh
#!/bin/bash
echo "hello world"
解释一下内容的意思:
第一行的脚本声明(#!)用来告诉系统使用哪种Shell解释器来执行该脚本(这是我书写shell脚本的格式);第二行是我执行的命令,这个echo的作用:echo命令用于在终端输出字符串或变量提取后的值,格式为“echo [字符串 | $变量]”。这里我执行这个脚本文件的话,就会输出"hello world" 了。
root@txp-virtual-machine:/home/txp# ./test.sh
bash: ./test.sh: Permission denied
root@txp-virtual-machine:/home/txp# chmod 777 test.sh
root@txp-virtual-machine:/home/txp# ./test.sh
hello world
root@txp-virtual-machine:/home/txp# source test.sh
hello world
root@txp-virtual-machine:/home/txp# bash test.sh
hello world
这里可能执行的时候,没有权限,可以使用chmod这个命令来修改权限问题。
四、总结:
今天的分享只让大家简单的认识一下linux-shell编程。这里有linux命令不熟的小伙伴,可以去学习一下刘遄老师的linux就该这么学这本书,非常适合入门,通俗易通,网站地址:
https://www.linuxprobe.com/ 。
好了,今天的分享就到这里了,有错误可以指出来哦,大家相互学习,取长补短。