嵌入式Linux(一)(Makefile,Shell脚本)

1.Shell命令

更多具体操作直接用到了再搜索。
或者用命令+”–help“man+命令查看帮助。
ls:目录信息查看。跟-a可以查看所有文件及文件夹包括隐藏的。
cd:目录切换。cd后直接跟想要进入的路径。
pwd:显示当前路径。
uname:查看系统信息,加-a显示全部信息。
clear:清屏。
cat:后面带上文件名或者路径,查看文件内容。
sudo:切换用户权限。
su:变更ubuntu用户。sudo su切换root用户。
cp:cp 源文件 复制文件。
在这里插入图片描述
touch:创建文件。
rm:删除文件。
mkdir:新建文件夹。
rmdir:删除文件夹。
mv
1.文件或文件夹重命名—mv a.c b.c。
2.移动文件,如将a移动到test文件夹下------mv a.c test/。
ifconfig:显示/修改网络信息如ip地址等。
reboot:重启系统。
power off:关机。
man:系统帮助命令。按q退出。
sync:将数据同步写入磁盘。
find:查找文件。例如find -name a.txt
grep:查找文件内容。grep -rn “string” 查找的路径范围。-rn表示子文件夹也找,n表示找到了会返回对应所在行。-i忽略大小写。
du:查询目录或文件占用空间大小,一般搭配-sh,以人类可读方式显示,不显示子目录和文件大小。
df:磁盘空间检查。
gedit:记事本打开文件。
ps:查看系统当前进程–类似任务管理器。
top:类似任务管理器。
file:查看文件类型。
sudo dpkg -i deb文件名:安装deb文件。
mount:磁盘挂载命令。
umount:取消挂载。

2.文件权限

  输入ls 文件名 -l可以查看文件权限信息,所属用户和用户组。
  文件权限信息由三部分组成:—|—|—,分别为所属用户,所属用户所在组的其他用户,组外用户,三个”-”分别对应rwx,r是读,w是写,x是可执行,也可以用二进制数表示,r=1对应八进制4,w2,x1,rwx=7。
例如rw-rw----代表所属用户和组内用户可以读写。
修改文件权限
chmod 新权限 文件名
在这里插入图片描述
修改文件所属用户
chown
下面的分别是修改用户和用户组:
在这里插入图片描述
同时修改用户和用户组:
在这里插入图片描述

3.连接文件

注:ubuntu中ls查看文件,浅蓝色的是符号连接文件,绿色的是可执行文件。
符号连接:类似win下的快捷方式。指向的源文件要使用绝对路径,因为进行一些操作比如拷贝软连接文件,其实拷贝的是源文件。
硬连接:通过文件系统的inode连接来产生新文件名,inode类似于文件的id,查找文件时要先找到inode才能读出文件的内容。
ln:创建连接的命令,加-s是符号连接,不加是硬连接。
在这里插入图片描述
ll:查看inode,可以看到硬连接创建的文件inode和源文件一样,软连接不一样。也因为如此,对硬连接的文件任何一个进行修改都会导致另一个改变
在这里插入图片描述
  硬连接可以作为文件的拷贝,防止删除。由于不能连接到目录也不能跨文件系统比如接到u盘,所以硬连接其实不常用。

4.VIM编辑器

启动:vi 文件名
编辑模式:a
退出编辑模式:ESC
退出vim
①:x保存并退出。②:q仅退出。③:w保存
其它指令用到了再查。

5.Makefile

1.规则格式
在这里插入图片描述
Makefile仅编译上次编译后修改过的文件。

2.作用演示
  当文件规模大的时候不可能一个一个手动去编译,所以需要借助Makefile。比如现在有一个五个文件的小工程需要编译:
在这里插入图片描述
编写Makefile:
在这里插入图片描述
make编译,执行演示,清零演示:
在这里插入图片描述

3.语法规则
Makefile变量:全是字符串,作用类似
  要是依赖文件多,打起来很麻烦,可以把上面的依赖文件弄成一个变量,通过$(变量名)进行调用,将刚才的Makefile结合变量修改:
在这里插入图片描述
3.1 赋值操作
①“=”:输出为FINCHES。变量的真实值等于所引用的变量的最后一次修改的值。
在这里插入图片描述
②“:=”:输出为finches。只会使用:=前面定义好的,之后的值不作效。
在这里插入图片描述
③“?=”:输出为FINCHES。如果变量前面没有赋值过就用现在的赋值,如果赋值过就用之前的值。
在这里插入图片描述
④“+=”:给变量追加内容,其实是字符串追加。比如:
在这里插入图片描述
3.2 模式规则
  前面的Makefile文件中每一个.o文件都用一条规则去编译,如果文件很多的话还是很麻烦,所以可以用模式规则对所有.o文件进行编译。
  模式规则需要进行目标定义,用“%”表示对文件名的匹配,表示任意长度的非空字符串,比如“%.c“就是所有以.c结尾的文件,a.%.c表示所有以a.开头,.c结束的文件。
自动化变量
  最常用的是$+@/</^三种。作用分别为:①规则中的目标集合;②依赖文件集合中的第一个文件,如果依赖文件是用“%”进行模式定义的,就代表符合模式的一系列文件的集合,如下面的修改;③所有依赖文件的集合,会自动去除重复的依赖。
结合自动化变量,将上面每一个.o文件的编译替换为如下两行:
在这里插入图片描述

3.3 伪目标
  一般目标都是要生成的文件名,伪目标不代表真的文件名,其作用是通过指定该伪目标去执行其所在规则定义的命令,又不生成真的文件。
  比如前面的make clean。就是一个只执行命令用的目标,但是一旦创建一个名为clean的文件之后,这个命令就无法执行了,因此可以定义为伪目标的形式:.PHONY:伪目标名
在这里插入图片描述

3.4 条件判断
语法
<条件关键字>
  <条件为真执行>
else
  <条件为假执行>
endif

条件关键字包括:ifeq,ifneq,ifdef,ifndef。
①ifeq判断两个参数是否都相等,ifneq判断是否不相等。如ifeq(<参数1>, <参数2>)
②ifndef用于判断变量名对应的是否非空,是为真,否则假。使用方式如ifndef<变量名>

3.5 Makefile函数
Makefile提供了很多函数,但是不支持自定义函数。

6.Shell脚本

  命令行中一条一条敲命令非常麻烦,可以用Shell脚本取代很多重复的命令。Shell脚本是纯文本文件,后缀为.sh,命令执行顺序为从上到下。
1.基本使用方式:
编写了一个如下的脚本(第一行必须这样写):
在这里插入图片描述
提升权限使得脚本变为可执行文件:
在这里插入图片描述
2.交互式Shell脚本
在这里插入图片描述
name是根据用户输入赋值的变量,注意这里调用变量的方式不需要加小括号。
3.数值计算:
需要用$(())括起来。read -p是打印提示信息的作用。
在这里插入图片描述
4.test命令:
用于查看文件是否存在,权限等。
cmd1 && cmd2:如果cmd1执行完毕且正确,执行cmd2,否则不执行。
cmd1 || cmd2:如果cmd1执行完毕且正确,那么不执行cmd2,否则执行。
例如下面查询当前目录下文件是否存在,文件存在执行&&后的,否则执行||后的。
在这里插入图片描述

5.中括号判断符:
注意:[]中只能输入==或!=。
比如这个字符串相似判断:
在这里插入图片描述
视频课程说要给[]里的变量什么的加“”,但是我没加也没出错,不知道捏。

6.条件判断:
①.if then:
else可以没有,fi代表命令结束。
在这里插入图片描述
②case语句:
*代表其他任意输入。在这里插入图片描述

7.函数:
通过case语句调用函数:
在这里插入图片描述
在这里插入图片描述
传参:function可以省略
在这里插入图片描述
在这里插入图片描述

8.循环:
①while/until循环:
while是条件成立进行循环,until是不成立进行循环。
在这里插入图片描述

②for循环:
for循环实现遍历输出和累加。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值