目录
前言
一、shell
1.1 shell简介
1.2 脚本
1.3 bash解释器
二、编写shell
2.1 系统预设变量
2.2 算数运算与逻辑表达
2.3 for与while循环式
2.4 case条件
三、gcc编译器
3.1 gcc简介
3.2 编译步骤(四步)预处理 编译 汇编 链接
3.3 error、warning及优化
四、gdb调试
4.1 gdb定义
4.2 调试流程
五、Makefile
5.1 项目管理器
5.2 执行Makefile
总结
前言
昨天学习了Linux ubantu下的操作指令,现在我们进入shell、bash解释器以及编写shell脚本;了解gcc编译器的编译步骤和代码的优化;如何调试编写的程序、Makefile项目管理的学习。
提示:以下是本篇文章正文内容,下面案例可供参考
一、shell
shell (终端上用来解释并执行linux的命令) shell脚本 (类似于windows 的批处理文件) windows 批处理文件创建执行过程,shell脚本是一本 解释型的编程语言。
1.1 shell简介
按编译类型分类:解释型与编译型 ,不同的分类有不同的标准。
解释型(有一条指令,执行一条,即使某一条有语法错误,其他指令也要继续执行)
php script basic .... 边解释边执行
编译型(所有的指令必须先编译通过,变成可执行文件,然后再执行)
c java c++ .... 提前翻译好
C语言 要想运行程序 ,必须先编译通过(a.out),然后才能运行
从执行效率角度来说:编译型更快 从学习的角度: 解释型更容易学
1.2 脚本
shell是终端上命令的集合,例如:编写一个脚本,显示系统时间,创建一个目录并在里面创建一个a.txt文本文件。
1.3 bash解释器
二、编写shell
编程是相通的,怎么学习C语言怎么学习shell (学习的逻辑)并且适应新的编程语言的语法格式
注意事项:
(1) shell中变量尽量大写(默认规则)
(2) 赋值的时候= 两边一定不要加空格
(3) 变量全是字符串string
2.1 系统预设变量
系统预设变量 ($0, $1, $2, $3 ...$9 $# $? $*) 系统提前给我们准备好的,可以直接使用
怎么实现输入
练习:先让用户输入文件夹名,创建文件夹,进入该文件夹,然后让用户输入文件名,在刚才创建的文件夹里创建文件
2.2 算数运算与逻辑表达
shell脚本支持算术运算 (+) (-) (*) (/) (%),需要用到expr 命令符
逻辑表达运算符:-eq #== -ne #!= -lt #< -gt #> -le #<= -ge #>=
练习:输入一个数,判断这个数是不是 > 60
练习:实现输入一个数字,判断此数字是不是偶数,如果是偶数判断他的一半是不是偶数
判断文件存不存在
练习:判断文件是否存在
练习:判断输入的名字是一个普通文件还是目录文件
2.3 for与while循环式
for 循环格式
练习:遍历名字
练习:1. 用for循环实现创建普通文件a.1, a.2, a.3, a.4 ...a.8 2.for循环实现将aaaa文件夹中的所有文件copy到bbbb中
while 循环结构
练习:1.求1 + 2 + 3 + 4 + 5 + 6 +... + 100的值 2. 创建一个文件夹tmpdir,然后用一个while循环,
在tmpdir里分别创建tmp.1, tmp.2, tmp.3, tmp.4, tmp.5, tmp.6, tmp.7,tmp.8文件
break 结束循环
2.4 case条件
case 语句:(多条件分支)
练习:制作一个小型计算器 (1)提示用户输入number1 (2)提示用户输入运算符 (3)提示用户输入number2 (4)打印出结果
练习:
(1)提示:请输入一个目录文件的名称
(2)对输入的目录进行判断是否存在,如果存在,打印目录已经存在不需要创建 如果目录不存 在,创建该目录
(3)条件判断输入的目录是否有写权限,如果有,进入目录,如果打印没有写权限,程序结束
(4)上面的第(3)歩后,如果有写权限,第(3)已经进入了目录
提示:请输入要创建的 普通文件名称 如果普通文件存在,打印已经存在,不创建 如果普通文件不存在,创建该普通文件
三、gcc编译器
3.1 gcc简介
gcc 是一个跨平台(跨软件平台 和 硬件平台)的编译器。windows中有很多编译器(keil eclipse ... 内部使用的是gcc),gcc 编译程序的重要选项参数。理查德·斯托曼 gcc 是一个编译器 vi 是一个编辑器
默认生成的可执行程序的名字叫做 a.out
可执行二进制文件haha的生成,依赖于源.c文件
gcc -o haha test.c //-o 改名 haha就是编译test.c后生成的产物
gcc test.c -o xixi // -o改名 xixi就是编译test.c后生成的产物
3.2 编译步骤(四步)预处理 编译 汇编 链接
3.3 error、warning及优化
错误和警告的区别: 错误,编译之后是不会生成 可执行文件的
警告,编译之后是可以生成 可执行文件的, 但是运行程序可能存在潜在的威胁
优化:gcc 可以对我们写的不好的代码进行优化
四、gdb调试
4.1 gdb定义
4.2 调试流程
五、Makefile
关于 Makefile(主要用于c文件的编译,如果文件比较多,用gcc是不现实的)Makefile
(1) 当项目中 .c文件较多时候,可以方便我们编译 ,每次编译,只需要敲make命令即可
(2) 可以提高编译的效率,哪个文件修改了,就重新编译哪个文件 即可
Makefile是一个文件,里面主要写了源代码的编译规则,然后通过make命令,来执行Makefile
1 Makefile 是一个文件,通常名称为 Makefile 2 Makefile 通过make命令来执行
5.1 项目管理器
5.2 执行Makefile
Makefile的转化过程
总结
现在我们了解了shell的编写、注意事项和bash解释器的使用、练习并慢慢熟悉gcc编译器的编译4步曲(预处理、编译、汇编、链接)和各个步骤的作用以及代码的优化及优化等级;同时学会了如何调试程序(形成调试文件,设置断点、查看堆栈),这些可在gcc编译未报错但效果与我们预期不符合时使用,帮助我们找出bug;Makefile项目管理学习的那在实际工作中,提供工作效率、有效减小我们的负担,以上知识都是非常有用的、基础的,加油!!



