【嵌入式系统开发】001嵌入式Linux基础技术

本文详细介绍了Linux入门概念,包括与Windows的区别、shell的作用、PATH环境变量的使用,以及Ubuntu的文件系统组织。此外,还涵盖了Linux常用指令,如目录与文件操作、权限与属性、查找与搜索、压缩与解压缩,以及网络命令的基本用法。
摘要由CSDN通过智能技术生成


0. 学习路线

  1. 嵌入式Linux系统就是一套完整的PC系统。
图1. Windows与Linux的启动流程对比
  1. 对于新手入门来说,需要动u-boot的可能性不大,投入过多精力得不偿失。
  2. 对内核本身的操作,如裁剪、移植,一般是芯片厂商做的事情,也不应该过多牵扯精力。
  3. 因此总的原则是:先粗浅入门,再专题学习

具体而言:

  • 入门:应用程序开发–>驱动程序基础–>项目
  • 进阶:u-boot or 内核 or 驱动进阶

1. Linux入门概念

1.1 Linux 与 Windows 的区别

  • 两者最大区别在于目录,Linux视万物皆为目录(文件)
  • Windows 是盘符对应磁盘分区。
  • Linux 是目录挂载在磁盘的不同分区上。
  • Windows的路径分隔符是 \ ; Linux的路径分隔符是 /
  • /dev/sda1 : dev指设备,sd表示磁盘,a表示第一个磁盘,1表示该磁盘上的第一个分区。

1.2 shell是什么

  • shell是一个应用程序,它可以从键盘、串口接受指令,回车后执行指令。
  • 接受键盘传入的字符并回显,回车是通知shell输入结束了;
  • 解析输入的字符串,寻找程序,通常 shell 是去PATH环境变量所指的位置寻找程序/指令。也可以直接给 shell 指定路径。
  • 找到程序,启动程序,传入参数。
  • 举个例子:
  • 先创建一个 hello.c 文件
# include <stdio.h>

int main(int argc, char **argv)
{
	if (argc >= 2)
		printf("Hello, %s!\n", argv[1]);
	else 
		printf("Hello, world!\n");
	return 0;
}
  • 然后,在其所在路径下执行以下指令对其进行编译。
gcc -o hello hello.c # 第一个hello是给可执行文件指定的名称
  • 显然,编译后直接对 hello 进行运行是行不通的。
  • 因为 shell 会去 PATH 所指路径下去寻找 hello 程序,这肯定找不到。
  • 因此应该为 hello 指定存储路径,绝对路径或相对路径都可以。
  • 也可以把可执行文件 hello 直接移动到 PATH 下的某个路径内。
hello # 行不通
./hello # Hello, world!
./hello Shili_Chen # Hello, Shili_Chen! 
				   # 在执行这条指令时,argc = 2, argv[0] = ./hello, argv[1] = Shili_Chen
				   # 这就是 shell 的传参方式
				   
sudo cp hello /usr/local/bin/hello2 # 把可执行文件转移到 PATH 所指定的路径 /usr/local/bin 下,命名为hello2
hello # 这时候就好使了
  • shell 甚至可以写循环,它是有自己的编程的。

1.3 PATH环境变量

1.3.1 什么是环境变量

  • evn 指令可以看到各种环境变量,等号前的是变量名,等号后的是它的值。
  • echo $PATH 可以显示PATH环境变量的具体值。

1.3.2 添加PATH环境变量的三种方法

  1. 临时添加的方法,只对当前终端有效。
export PATH=$PATH:/home/chen # 此时用户 chen 的路径就被临时存放在PATH中了
  1. 永久添加的方法,只对当前用户有效。
gedit ~/.bashrc # 编辑 .bashrc文件
# 在打开的文件最后加上
export PATH=$PATH:/home/chen # 重启后就生效了
  1. 永久添加的方法,对所有用户都有效。
sudo gedit /etc/environment # 修改/etc/environment
# 在打开的页面里找到 PATH ,在它后面添加:/home/chen 
# 当然其实不一定非把用户路径添加上,只添加可执行文件所在路径也OK

1.4 Ubuntu 的文件系统组织方式简介

  1. 系统存放可执行程序/命令的路径
  • /bin 所用用户皆可用
  • /sbin 系统命令,仅管理员可用
  1. 无关系统启动的程序/命令的存放路径
  • /usr/bin
  • /usr/sbin
  • 注:usr 全称unix software resource 存放非系统启动的必要资源,可分享与不可变动的数据。
  1. 存放库文件的路径
  • /lib
  • /usr/lib
  1. 一般启动文件、内核的保存路径
  • /boot
  1. 设备文件,表示硬件
  • /dev
  • /dev/sda1 : dev指设备,sd表示磁盘,a表示第一个磁盘,1表示该磁盘上的第一个分区。
  1. 配置文件
  • /etc
  1. 家目录与用户目录
  • /home 家目录,它的下级目录对应不同的用户
  • /home/chen 用户chen的专属目录
  1. 虚拟文件系统的挂载目录
  • /proc
  • /sys
  • 注1:所谓的虚拟文件系统是指不对应真实的存储设备。
  • 注2:对它们进行访问可以看到内核信息,如 /proc 里保存的是进程信息。
  1. 缓存文件保存路径
  • /var 保存的是缓存文件,临时可变动的文件。

2. Linux的常见指令

2.1 Linux指令基本形制

  • Linux的命令分为三部分:
  • 命令 [选项] [参数]
  • command [options] [parameters]
  • ls -l /
  • [] 表示选填,<>表示必填。

2.2 目录与文件操作命令

  1. clear 清除终端历史痕迹
  2. pwd指令——打印当前路径
  • 家目录,即/home/chen。可以用 ~ 表示。
  • 上一次的路径,可以用 - 表示。
  1. cd指令——路径跳转
cd - # 返回上一次的路径。
  1. 创建或删除目录
mkdir 目录名 # 创建目录
rmdir 目录名 # 删除目录,实际上它只能删除空目录
rm 路径名/文件名 -r # 删除文件/目录,因为用递归的方式删除,所以可以删除非空目录
  • 注:rm -rf 指令是递归强制删除,这是个危险的指令,要当心。
  1. ls指令——列出内容
  • 列出目录内容以及文件信息
  • 有多种选项可供使用:-a 列出隐藏文件;-l 列出详细信息,能看到文件权限。
ls -l tes*  # tes*用于缩小展示范围,也可以指定路径
  1. cp指令——复制文件
cp 1.txt '2 .txt' # 如果文件中有空格,可以用单引号把它引起来。
cp 1.txt ./test # 往test里复制1.txt文件。
  1. mv指令——移动/改名
mv 1.txt 2.txt # 改名
mv 1.txt ../2.txt # 移动 + 改名
mv 1.txt ../ # 只移动,不改名
  1. cat指令——显示/拼接显示
cat 1.txt # 显示
cat 1.txt 2.txt # 显示拼接
  1. touch指令——触摸/创建
touch 1.txt # 有就只是触摸,改变文件的时间信息;无则创建新的文件

2.3 权限与属性

  1. 权限查看
  • 查看文件的详细信息,在最开始可以看到如下形式的信息:
    在这里插入图片描述
图2. 文件详细信息示意图
  • 最前面的十个字符代表了目录/文件的权限信息。
  • 第一个字符常见两种取值:d- 。d 表示目录;- 表示常规文件。
  • 第二到第十这九个,三个一组,分别表示拥有者、同组者、其他者的权限。
  • 权限字符有四种:rwx- 。分别表示,读,写,执行,无权限。
  • 以图2所展示的信息为例:
  • -rw-rw-r–
  • 第一位的 - 表示常规文件;
  • 第二到第七位的 rw-rw- 表示拥有者、同组者都有读写权限,但没有执行权限;
  • 第八到第十位的 r-- 表示其他用户对该文件只有读取的权限。
  1. chmod指令——权限修改
  • 用421编码 :rwx 就是二进制的111,即十进制的7。
chmod 675 1.txt # 即把1.txt的权限设置为 rw-rwxr-x
  • 用加减符
chmod -x 1.txt # 给所有用户都减去执行权限
chmod a+x 1.txt # 给所有用户都加上执行权限
chmod u-r 1.txt # 给拥有者减去读权限
chmod g+w 1.txt # 给同组者加上写权限
chmod go-x 1.txt # 给同组者和其他人减去执行权限
  • 对目录递归修改权限
chmod -R 776 目录名
  1. chown指令——修改文件拥有者
chown root:root 1.txt # 把拥有者调整成了root组的root用户了,用户:组

2.4 查找与搜索

  1. find命令——根据名字查找文件地址
  • find 路径 选项 查找条件
find /home/chen/桌面/ -name 1.txt # 查找名为1.txt的文件
find /home/chen/桌面/ -name *2.txt # 查找名字以2.txt结尾的文件,*是通配符
  • 注:路径用于缩小搜索范围,不指定路径就在当前路径下递归寻找。
  1. grep命令——根据内容搜索文件
  • grep [选项] [查找模式] [文件名]
grep "abc" * -nwr # 在当前路径下找所有带"abc"的文件,n列出所在行,w整词查找,r递归查找

2.5 压缩与解压缩

  • tar——压缩与解压缩
  • tar的常用选项:
  • c :创建压缩;
  • x :提取压缩;
  • t :查看压缩;
  • z :用于对gzip方式的处理,与c配合即压缩,与x配合即解压;
  • j :用于对bzip2方式的处理;
  • v :报告tar处理的信息;
  • f : 表示文件,后接文件名;
  • C<指定目录> :解压到指定目录。
tar czf test.tar.gz test # 把文件(夹)test压缩成test.tar.gz文件
tar xjf test.bar.bz2 # 把test.tar.gz解压到当前路径下
tar xzf test.tar.gz -C 路径 # 把test.tar.gz解压到指定路径下

2.6 网络命令

  1. ifconfig命令——网络命令
ifconfig
  1. ping命令——可以观察能否上网
ping 网址 
  • 注:一般虚拟机,有NAT网卡,Windows能上网,Ubuntu也能上网。
  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值