特别是在linux中,终端命令行进行操作文件。其中shell和makefile是linux进阶版,对于后期学习uboot和linux内核打下基础。
shell
简单理解为:多个命令行任务放在一个文件中一起执行(xxx.sh)
运行方式为:source xxx.sh
读写方式为:vim xxx.sh(目前也支持notepad软件)
基本执行语句:
1.操作文件
常用命令
代码语言:javascript复制rm a.c //删除文件
mkdir a //创建文件夹
touch a.c //创建文件
vim a.c //打开文件
2.变量赋值
常用命令
代码语言:javascript复制// 在shell和makefile中变量可以认为是字符串类型
string=123 //赋值没有空格!!!
echo "string" // 结果为string
echo "$string" // 结果为123
echo "$stringabc" // 结果为空
echo "$[string]abc" // 结果为123abc
// $string 代表引用变量,没有加则认为字符串
3.判断语句
常用命令
代码语言:javascript复制if [表达式];then
xxx
else
xxx
fi
//表达式中: [ -f a.c ] 判断a.c是否存在(注意空格必须要)
// [ -d ]目录是否存在 [ "aaa" = "bbb" ]字符串是否相等(只有一个等号)
//数字比较(-eq)相等,(-le)小于等于,(-ge)大于等于,(-lt)小于less than,(-gt)大于great than
//判断字符串是否为空(-z $str)或( $srt = "" )---没定义不是空
//(-o)逻辑或;
4.循环语句
代码语言:javascript复制for i in 1 2 3 4
do
echo $i
done
// while循环
while [ xxx ];do
xxxx
done
5.case语句
代码语言:javascript复制// case语句(case语句在shell中没有break,是自动跳出的)
i=2
case $i in
1) echo "1" ;;
2) echo "2" ;;
esac
//打印结果为2
makefile
1.文件创建 touch makefile
2.运行 make
makefile在执行时,会先打印命令再运行命令(不需要时,在命令前加@echo pwd---静默执行)
赋值
var="xxx" //用=号时,在使用该变量时是最后一次赋值的结果(如)
:= // 与等号相同,使用该变量时看前面
代码语言:javascript复制A=ab
B=$(A)cd
C:=$(A)cd
A=ef
echo B //efcd
echo C //abcd
?= //变量没有赋值,则执行该条赋值语句
= //在变量后面再蓄接(在shell和makefile中变量大多是字符串)
设置环境变量
设置环境变量(用于工程中别的makefile文件使用)
export A //一般大写表示,可以使用make A=gcc进行传参(可以覆盖文件中的参数,最高优先级)
通配符
代码语言:javascript复制1.*.c(所有.c文件)
2.?.c(只有一个字符的.c文件)
3.[1234].c(分别将1,2,3,4.c进行匹配)
自动变量
自动变量
$@ 规则的目标文件名
$< 规则的依赖文件名
$^ 依赖的文件集合
如:
代码语言:javascript复制all : 1.c 2.c 1.h
echo $@ //输出all
echo $< //输出1.c
echo $^ //输出1.c 2.c 1.h