shell命令和makefile简单使用方法

2023-06-08 16:57:10 浏览数 (1)

特别是在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

0 人点赞