一,shell脚本的作用 举例
一种c语言编写的应用程序。
是用户在没有图形界面下的访问系统内核服务的唯一途径,
是记录指令合集的脚本文件,
提高了编程效率,
可以不依靠集成开发环境实现功能编码,
可以将计算机的资源拼接在一起使用。
二,makefile文件
目标:依赖文件合集
命令1.....
命令2.....
main : a.o b.o c.o
gcc - o main a.o b.o c.o
a.o : a.c
gcc -c a.c //编译为.o文件 可以理解为gcc 减c 就是把.c文件的c减掉
b.o :b.c
gcc -c b.c
c.o : c.c
gcc -c c.c
.PHONY:clean //伪目标 作用是防止此目录有clean文件时干扰下面的删除命令
clean :
rm *.o //删除所有.o文件
rm main //删除main
在终端中用make clean 即为clean中命令
命令列表中的每条命令必须以 TAB 键开始,不能使用空格!
name = abc
curname = $(name) //此时curname为abc
name = AAA //此时curname 为AAA
printf:
@echo curname : $(curname) //不加@ 输出结果会显示为echo curname : .....
name = abc
curname := $(name) //此时curname为abc
name = AAA //此时curname 为abc :=不会引用后面赋值
name ?=BBB //此时name 为AAA ?=表示前面有赋值就用前面 没有就用BBB
print:
@echo curname : $(curname) //不加@ 输出结果会显示为echo curname : ....
name = a.c
name += b.c
//此时name里有a.c b.c
1 objects = main.o input.o calcu.o
2 main: $(objects)
3 gcc -o main $(objects)
4
5 %.o : %.c //表示目标为所有.o 依赖文件为所有.c
6 gcc -c $< //表示编译所有 .c文件($< 和%.c 配合 $<作用是取依赖文件中第一个文件,
而 %.c 为所有.c文件 所以第一个依赖文件表示为所有.c文件
ifeq (<参数 1>, <参数 2>)
参数1,2相同时执行此处命令
.else
不同时执行此处
endif
ifneq(<参数 1>, <参数 2>) //与上面相反
ifdef<参数>
参数非空执行
ifndef<参数> //与上面相反
三,linux常见命令
tar -cvf -xvf -tvf 创建 解压 查看 压缩文件
cd 切换目录 cd .. cd ./ cd ../xx 上一个目录 本目录 上一个目录的xx目录
grep 在文件中查找 grep -i "the" xxxx
grep -a 3 -i "the" xxx 查找the 并输出后面三行
find 找文件 find -iname "xxx"
vim 用vim编辑器进入
cp 复制粘贴文件 cp a.c ../ 把a.c 复制到上个目录
rm 删除文件 rm a.c 删除a.c rm -r a 删除目录a
mv 移动文件 给文件改名 mv a.c b.c 把a.c改名为b.c mv a.c ../ 把a.c移动到上个目录
ps 查看进程 ps -aux 查看系统所有进程
kill 向某个进程传送某个信息 kill -SIGHUP PID 重新启动进程 SIGINT 中断 SIGKILL强制中断
file 查看文件基本数据
cat 查看文本内容
chmod 给文件授权 chmod 777 file
gcc 编译
time 加在命令前面 查看预测此命令执行需要多久
四,ls -l
文件类型 文件权限 文件硬链接数文件子目录数 文件拥有者及所在组 文件日期 文件大小 文件名
d目录 2-4所有者权限
-普通 5-7 用户组权限
c字符设备 8-10 其他用户组权限
五,static const
static 局部变量 延长生命周期 函数结束它不结束
全局变量 不让本目录其他文件用extern调用
const
const int len = 100; 让len 从变量变为常量 并且后面不能用len =100修改
修饰变量
const int a = 1 和int const a = 1 为一样的 初始化需要先赋值 否则后面不能赋值
修饰指针
const int *n = &a 指针符号*在后 为常量指针 指向“常量”的指针
指向的方向可以改变 但是不能通过改指针改变值的大小(有其他方式
int *const n =&a 指针常量 本身是一个常量 指针类型的常量
指向的方向不可改变 但是不能通过改指针改变值的大小(有其他方式
const int *const n 指向常量的常指针
指向的值不可改变 但是不能通过改指针改变方向(有其他方式
修饰函数
void func (const char * p) 防止修改指针指向的内容
指向的内容p不可改变(此函数中不能改变p的内容
void func(int *const a) 防止修改指针指向的地址
指向的方向不能改变
修饰全局变量 和局部变量一样