百度怎么进入官方网站,桂林漓江20元背面图,青岛网站推广哪家效果好,太原铁路建设有限公司网站基本都是摘抄正点原子的文章#xff1a;领航者 ZYNQ 之嵌入式Linux 开发指南 V3.2.pdf#xff0c;因初次学习#xff0c;仅作学习摘录之用#xff0c;有不懂之处后续会继续更新~
一、Linux 文件系统
1.1 Linux 文件系统简介以及类型 操作系统的基本功能之一就是文件管…基本都是摘抄正点原子的文章领航者 ZYNQ 之嵌入式Linux 开发指南 V3.2.pdf因初次学习仅作学习摘录之用有不懂之处后续会继续更新~
一、Linux 文件系统
1.1 Linux 文件系统简介以及类型 操作系统的基本功能之一就是文件管理而文件的管理是由文件系统来完成的。Linux支持多种文件系统。 1.1.1、Linux 文件系统简介
文件系统的目的就是实现数据的查询和存储由于使用场合、使用环境的不同Linux 有多种文件系统不同的文件系统支持不同的体系。文件系统是管理数据的而可以存储数据的物理设备有硬盘、U 盘、SD 卡、NAND FLASH、NOR FLASH、网络存储设备等。
不同的存储设备其物理结构不同不同的物理结构就需要不同的文件系统去管理比如管理 NAND FLASH 的话使用 YAFFS 文件系统管理硬盘、SD 卡的话就是 ext 文件系统等等。
磁盘的分割
Linux 下常用的磁盘分割工具为fdiskfdisk 这个工具后面会详细讲解怎么用因为我们移植 Linux 的时候需要将SD卡分为两个分区来存储不同的东西
格式化与文件系统
创建一个新的盘符以后都要做格式化处理格式化其实就是给这个盘符创建文件系统的过程。
Windows 下一般有 FAT、NTFS 和 exFAT这些文件系统。同样的在 Linux 下、使用 fdisk 创建好分区以后也是要先在创建好的分区上面创建文件系统也就是格式化。
挂载点 在 Windows 下有磁盘分区的概念比如 CDE 盘等在 Linux 下没有这个概念因此Linux 下找不到像 C、D、E 盘这样的东西。 Linux 下可以给磁盘分割但是没有 C、D、E 盘那怎么访问这些分区呢 在 Linux 下创建一个分区并且格式化好以后需要将其“挂载”到一个目录下才能访问这个分区。Windows 的文件系统挂载过程是其内部完成的用户是看不到的Linux 使用 mount 命令来挂载磁盘。
挂载磁盘的时候是需要确定挂载点的也就是这个磁盘要挂载到哪个目录下。 1.1.2、Linux 文件系统类型
ext2 文件系统
ext2 是 Linux 早期的文件系统但是随着技术的发展 ext2 文件系统已经不推荐使用了ext2 是一个非日志文件系统大多数的 Linux 发行版都不支持 ext2 文件系统了。
ext3 文件系统
ext3 是在 ext2 的基础上发展起来的文件系统完全兼容 ext2 文件系统ext3 是一个日志文件系统ext3 支持大文件ext3 文件系统的特点有如下
高可靠性 使用 ext3 文件系统的话即使系统非正常关机、发生死机等情况恢复 ext3文件系统也只需要数十秒。 数据完整性 ext3 提高了文件系统的完整性避免意外死机或者关机对文件系统的伤害。 文件系统速度 ext3 的日志功能对磁盘驱动器读写头进行了优化文件系统速度相对与ext2 来说没有降低。 数据转换 从 ext2 转换到 ext3 非常容易只需要两条指令就可以完成转换。用户不需要花时间去备份、恢复、格式化分区等用 ext3 文件系统提供的工具 tune2fs 即可轻松的将 ext2文件系统转换为 ext3 日志文件系统。ext3 文件系统不需要经过任何修改可以直接挂载成ext2 文件系统。 ext4 文件系统
ext4 相比与 ext3 提供了更佳的性能和可靠性并且功能更丰富ext4 向下兼容 ext3 和 ext2因此可以将 ext2 和 ext3 挂载为 ext4。
那么我们安装的 Ubuntu 使用的哪个版本的文件系统呢
在终端中输入如下命令来查询当前磁盘挂载的是什么文件系统 df -T –h 上图中圈起来的就是安装 Ubuntu 的磁盘在 Linux 下一切皆为文件 “/dev/sda1”就是磁盘的分区可以看出这个磁盘分区类型是 ext4它的挂载点是根目录“/”。
1.2 Linux 文件系统结构
Ubuntu 是支持多用户的Ubuntu 为每个用户创建了一个根目录比如电脑现在登陆的是“gbxluo”这个用户因此默认进入的是“gbxluo”这个用户的根目录 点击“计算机”进入系统根目录如下图 参数描述cd ~进入到用户根目录“~”cd /进入到系统根目录“/”
根目录“/”中的一些重要的文件夹 参数描述/bin存储一些二进制可执行命令文件/usr/bin 也存放了一些基于用户的命令文件/sbin存储了很多系统命令/usr/sbin 也存储了许多系统命令/root超级用户 root 的根目录文件/home普通用户默认目录在该目录下每个用户都有一个以本用户名命名的文件夹/boot存放 Ubuntu 系统内核和系统启动文件/mnt通常包括系统引导后被挂载的文件系统的挂载点/dev存放设备文件学习 Linux 驱动主要是跟这个文件夹打交道/etc保存系统管理所需的配置文件和目录/lib保存系统程序运行所需的库文件/usr/lib 下存放了一些用于普通用户的库文件/lostfound一般为空当系统非正常关机以后此文件夹会保存一些零散文件/var存储一些不断变化的文件比如日志文件/usr包括与系统用户直接有关的文件和目录比如应用程序和所需的库文件/media存放 Ubuntu 系统自动挂载的设备文件/proc虚拟目录不实际存储在磁盘上通常用来保存系统信息和进程信息/tmp存储系统和用户的临时文件该文件夹对所有的用户都提供读写权限/opt可选文件和程序的存放目录/sys系统设备和文件层次结构并向用户程序提供详细的内核数据信息
1.3 文件操作命令
1.3.1 创建新文件命令—touch vi/vim 指令用来创建一个文本文档touch 不仅可以用来创建文本文档其它类型的文档也可以创建。 命令格式如下 touch [参数] [文件名] 使用 touch 创建文件的时候如果[文件名]的文件不存在那就直接创建一个以[文件名] 命名的文件如果[文件名]文件存在的话就仅仅修改一下此文件的最后修改日期常用的命 令参数如下
参数描述-a只更改存取时间-c不建立任何文件-d日期使用指定的日期而并非现在日期-t时间使用指定的时间而并非现在时间
进入到用户根目录下直接使用命令“cd ~”即可快速进入用户根目录进入用户根目 录以后使用 touch 命令创建一个名为 test 的文件创建过程如下图所示 1.3.2 文件夹创建命令—mkdir
既然可以创建文件那么肯定也可以创建文件夹创建文件夹使用命令“mkdir”命令 格式如下 mkdir [参数] [文件夹名目录名] 主要参数如下
参数描述-p 如所要创建的目录其上层目录目前还未创建那么会一起创建上层目录
在用户根目录下创建名为“archive_test”的文件夹如下图所示 1.3.3 文件及目录删除命令—rm
既然有创建文件的命令那肯定有删除文件的命令要删除一个文件或者文件夹可以使用命令“rm”此命令可以完成删除一个文件或者多个文件及文件夹它可以实现递归删除。 对于链接文件只删除链接原文件保持不变所谓的链接文件其实就是 Windows 下的快 捷方式文件。 此命令格式如下 rm [参数] [目的文件或文件夹目录名] 命令主要参数如下
参数描述-d直接把要删除的目录的硬连接数据删成 0删除该目录-f强制删除文件和文件夹(目录)-i删除文件或者文件夹(目录)之前先询问用户-r递归删除指定文件夹(目录)下的所有文件和子文件夹全部删除掉-v显示删除过程
使用 rm 命令来删除前面使用命令“touch”创建的 test 文件操作过程如下图所示 直接使用命令“rm”是无法删除文件夹(目录)的需要加上参数“-rf”也就是强制递归删除文件夹(目录)如下图所示 1.3.4 文件夹(目录)删除命令—rmdir
Linux 提供了直接删除文件夹(目录)的命令—rmdir它可以不加任何参数的删除掉指定的文件夹(目录)命令格式如下 rmdir [参数] [文件夹(目录)] 命令主要参数如下
参数描述-p删除指定的文件夹(目录)以后若上层文件夹(目录)为空文件夹(目录)的话就将其一起删除
使用命令“rmdir”删除掉“archive_test”文件夹如下图所示 1.3.5 文件复制命令—cp
在 Windows 下可以通过在文件上点击鼠标右键来进行文件的复制和粘贴在 Ubuntu界面下也可以通过点击文件右键进行文件的复制和粘贴。
但是本节讲解如何在终端下使用命令来进行文件的复制Linux 下的复制命令为“cp”命令描述如下 cp [参数] [源地址] [目的地址] 主要参数描述如下
参数描述-a此参数和同时指定“-dpR”参数相同-d在复制有符号连接的文件时保留原始的连接-f强行复制文件不管要复制的文件是否已经存在于目标目录-I覆盖现有文件之前询问用户-p保留源文件或者目录的属性-r或-R递归处理将指定目录下的文件及子目录一并处理
在用户根目录下使用命令“mkdir”创建两个文件夹test_dir1 和 test_dir2过程如下图所示 在test_dir1文件夹中创建a.c文件并备份为b.c文件接着将test_dir1文件中的内容均复制到test_dir2文件夹中操作过程如下图所示 这里使用了通配符“*”“*.c”就表示 test1 下的所有以“.c”结尾的文件。 文件夹复制
将 test2 文件夹复制到同目录下新拷贝的文件夹命名为 test3操作如下图所示 注意这里cp拷贝文件夹也使用了参数-rf即强制递归复制。 1.3.6 文件移动命令—mv
有时需要将一个文件或者文件夹移动到另外一个地方去或者给一个文件或者文件夹进行重命名这个时候我们就可以使用命令“mv”了此命令格式如下 mv [参数] [源地址] [目的地址] 主要参数描述如下
参数描述-d如果要覆盖文件的话覆盖前先进行备份-f若目标文件或目录与现在的文件重复直接覆盖目标文件或目录-I在覆盖之前询问用户
在上面创建的 test_dir1 文件夹里面创建一个 c.c 文件然后将 c.c 这个文件重命名为 d.c。操作如下图所示 最后将test_dir1文件夹中的 d.c 文件移动到 test2 文件夹里面如下图所示 1.4 文件压缩和解压缩
Ubuntu 下有图形化以及命令行这两种压缩和解压缩操作。
1.4.1 图形化压缩和解压缩 图形化压缩和解压缩和 Windows 下基本一样在要压缩或者解压的文件上点击鼠标右键然后选择要进行的操作。 1.4.1.1 图形化压缩
选中文件或文件夹》右键压缩》 弹出创建归档窗口选择类型与归档名称》创建如下图所示 可以选择的压缩格式只有三个.zip、.tar.xz、.7z是因为这三个压缩格式与所有系统兼容。 压缩结果如下图 1.4.1.2 图形化解压缩
选中test.zip文件右键》提取到此处如下图 从上图可知如果已经有解压后的文件再解压时会创建新的文件夹。 1.4.2命令行进行文件的压缩和解压缩 命令行下进行压缩和解压缩常用的命令有三个zip、unzip 和 tar 1.4.2.1 命令 zip
zip 命令看名字就知道是针对.zip 文件的用于将一个或者多个文件压缩成一个.zip 结尾的文件命令格式如下 zip [参数] [压缩文件名.zip] [被压缩的文件] 主要参数函数如下
参数描述-b工作目录指定暂时存放文件的目录-d从 zip 文件中删除一个文件-F尝试修复已经损毁的压缩文件-g将文件压缩入现有的压缩文件中不需要新建压缩文件-h帮助-j只保存文件的名不保存目录-m压缩完成以后删除源文件-n字尾符号不压缩特定扩展名的文件-q不显示压缩命令执行过程-r递归压缩将指定目录下的所有文件和子目录一起压缩-v显示指令执行过程-num压缩率为 1~9 的数值
使用命令“zip”对 test文件夹进行压缩为test.zip文件操作如下图所示 1.4.2.2 命令 unzip
unzip 命令用于对.zip 格式的压缩包进行解压命令格式如下 unzip [参数] [压缩文件名.zip] 主要参数如下
参数描述-l显示压缩文件内所包含的文件-t检查压缩文件是否损坏但不解压-v显示命令显示的执行过程-Z只显示压缩文件的注解-C压缩文件中的文件名称区分大小写-j不处理压缩文件中的原有目录路径-L将压缩文件中的全部文件名改为小写-n解压缩时不要覆盖原有文件-P密码解压密码-q静默执行不显示任何信息-x文件列表指定不要处理.zip 中的哪些文件-d目录 把压缩文件解到指定目录下
对上面压缩的 test.zip 文件使用 unzip 命令进行解压缩操作如下图所示 1.4.2.3 命令 tar
我们前面讲的 zip 和 unzip 这两个是命令只适用于.zip 格式的压缩和解压其它压缩格式 就用不了了比如 Linux 下最常用的.bz2 和.gz 这两种压缩格式。其它格式的压缩和解压使用 命令 tartar 将压缩和解压缩集合在一起使用不同的参数即可命令格式如下 tar [参数] [压缩文件名] [被压缩文件名] 常用参数如下
参数描述-c创建新的压缩文件-C目的目录切换到指定的目录-f备份文件指定压缩文件-j用 tar 生成压缩文件然后用 bzip2 进行压缩-k解开备份文件时不覆盖已有的文件-m还原文件时不变更文件的更改时间-r新增文件到已存在的备份文件的结尾部分-t列出备份文件内容-v显示指令执行过程-w遭遇问题时先询问用户-x从备份文件中释放文件也就是解压缩文件-z用 tar 生成压缩文件用 gzip 压缩-Z用 tar 生成压缩文件用 compress 压缩
tar命令压缩
使用如下tar命令将 test文件夹压缩为.bz2 和.gz 这两个格式 tar -vcjf test.tar.bz2 test1 tar -vczf test.tar.gz test1 在上面两行命令中-vcjf 表示创建 bz2 格式的压缩文件-vczf 表示创建.gz 格式的压缩文件。 tar命令解压缩
使用如下所示两行命令完成.bz2 和.gz 格式文件的解压缩 tar -vxjf test1.tar.bz2 tar -vxzf test2.tar.gz 上述两行命令中-vxjf 用来完成.bz2 格式压缩文件的解压-vxzf 用来完成.gz 格式压缩文件的解压。 要求要熟练掌握使用 tar 命令来完成.bz2 和.gz 格式的文件压缩和解压缩。 1.5 文件查询和搜索 find 命令用于在目录中搜索文件grep 命令用于查找包含指定关键字的文件。 1.5.1 命令 find
find 命令用于在目录结构中查找文件其命令格式如下 find [路径] [参数] [关键字] 路径是要查找的目录路径如果不写的话表示在当前目录下查找关键字是文件名的一 部分主要参数如下
参数描述-namefilename按照文件名称查找查找与 filename 匹配的文件可使用通配符-depth从指定目录下的最深层的子目录开始查找-gid群组识别码查找符合指定的群组识别码的文件或目录-group群组名称查找符合指定的群组名称的文件或目录-size文件大小查找符合指定文件大小的文件-type文件类型查找符合指定文件类型的文件-user拥有者名称查找符合指定的拥有者名称的文件或目录
find 命令的参数有很多常用的就这些关于其它的参数可以自行上网查找。
来看一下如何使用 find 命令进行文件搜索搜索目录/etc 中以“vim”开头的文件为例操作如下图所示 从上图可知在目录/etc 下包含以“vim*”开头的文件有 /etc/alternatives/vimdiff /etc/alternatives/vim /etc/vim /etc/vim/vimrc /etc/vim/vimrc.tiny 1.5.2 命令 grep
grep 命令用于查找包含指定关键字的文件如果发现某个文件的内容包含所指定的关键字grep 命令就会把包含指定关键字的这一行标记出来。
grep 命令格式如下 grep [参数] 关键字 文件列表 grep 命令一次只能查一个关键字主要参数如下
参数描述-b在显示符合关键字的那一列前标记处该列第 1 个字符的位编号-c计算符合关键字的列数-d进行动作当指定要查找的是目录而非文件时必须使用此参数否则 grep 指令将回报信息并停止搜索-i忽略字符大小写-v反转查找只显示不匹配的行-r在指定目录中递归查找
比如在用户根目录/桌面文件夹下递归查找包含字符“60分万岁”的文件操作如下图所示 1.6 文件类型
在用户根目录下使用命令“ls -l”来查看用户根目录下所有文件的详细信息如下图所示 在上图中每个文件的详细信息占一行每行最前面都是一个符号就标记了当前文件类型比如 C_program的第一个字符是“d”examples.desktop文件第一个字符是“-”。
这些字符表示的文件类型如下
参数描述-普通文件一些应用程序创建的比如文档、图片、音乐等等d目录文件c字符设备文件Linux 驱动里面的字符设备驱动比如串口设备音频设备等b块设备文件存储设备驱动比如硬盘U 盘等l符号连接文件相当于 Windwos 下的快捷方式s套接字文件p管道文件主要指 FIFO 文件 注意学习 Linux 驱动开发的时候基本是在和字符设备文件和块设备文件打交道。 二、Linux 用户权限管理 2.1 Ubuntu 用户系统 Ubuntu 是一个多用户系统可以给不同的使用者创建不同的用户账号每个用户使用各自的账号登陆使用用户账号的目的一是方便系统管理员管理控制不同用户对系统的访问权限另一方面是为用户提供安全性保护。 在安装 Ubuntu 系统的时候被要求创建一个账户当创建好账号以后系统会在目录/home下以该用户名创建一个文件夹所有与该用户有关的文件都会被存储在这个文件文件夹中。同样的创建其它用户账号的时候也会在目录/home下生成一个文件夹来存储该用户的文件下图就是我的电脑上“gbxluo”这个账户的文件夹。 Ubuntu 下用户类型分为以下 3 类 root 用户系统管理员拥有最高权限初次创建的用户此用户可以完成比普通用户更多的功能普通用户安装完操作系统以后被创建的用户 root 用户权限大于装系统时创建的用户的权限 装系统时创建的用户的权限大于普通用户的权限。 以上三种用户每个用户都有一个 ID 号称为 UID操作系统通过 UID 来识别是哪个用户用户相关信息可以在文件/etc/passwd 中查看到 cat /etc/passwd 如下图所示 从配置文件 passwd 中可以看到每个用户名后面都有两个数字比如用户“gbxluo”后面“1000:1000”第一个数字是用户的 ID另一个是用户的 GID也就是用户组 ID。 Ubuntu 里面每个用户都属于一个用户组里面用户组就是一组有相同属性的用户集合。 2.2 权限管理
Ubuntu 下的权限就是用户对于系统资源的使用限制情况root 用户拥有最大的权限可以为所欲为装系统的时候创建的用户拥有 root 用户的部分权限其它普通用户的权限最低。对于做嵌入式开发的人一般不关注用户的权限问题因为嵌入式基本是单用户做嵌入式开发重点关注的是文件的权限问题。 用户的权限与文件的权限两个概念。 对于一个文件通常有三种权限读(r)、写(w)和执行(x)使用命令“ls -l”可以查看某个目录下所有文件的权限信息如下图所示 以上图中文件 test.txt 为例讲解文件 test.txt 文件信息如下 -rw-rw-r-- 1 gbxluo gbxluo 376 3 月 23 14:16 test.txt 其中“-rw-rw-r--”表示文件权限与用户和用户组之间的关系第一位表示文件类型-表示普通文件(一些应用程序创建的比如文档、图片、音乐等等)。
剩下的 9 位以 3 位为一组分别表示文件拥有者的权限文件拥有者所在用户组的权限以及其它用户权限。
后面的“gbxluo gbxluo ”分别代表文件拥有者(用户)和该用户所在的用户组。
因此文件 test.txt 的权限情况如下 ①、文件 test.txt 的拥有者是用户 zuozhongkai其对文件 tesst.txt 的权限是“rw-”也就是对该文件拥有读和写两种权限。 ②、用户 gbxluo 所在的用户组也叫做 gbxluo 系统默认的其组内用户对于文件 test.txt 的权限是“rw-”也是拥有读和写这两种权限。 ③、其它用户对于文件 test.txt 的权限是“r--”也就是只读权限。 对于文件可读权限表示可以打开查看文件内容可写权限表示可以对文件进行修改 可执行权限就是可以运行此文件(如果是软件的话)。
对于文件夹拥有可读权限才可以使用命令 ls 查看文件夹中的内容拥有可执行权限才能进入到文件夹内部。
文件的权限有三种读(r)、写(w)和执行(x)除了用r、w和x表示以外可以使用二进制数表示三种权限就可以使用 3 位二进制数来表示一种权限对应一个二进制位如果该位为 1 就表示具备此权限如果该位为 0 就表示没不具备此权限如下表所示
字母二进制八进制r1004w0102x0011
将三种权限 r、w 和x 进行不同的组合即可得到不同的二进制数和八进制数3 位权限可以组出 8 种不同的权限组合如下表所示
权限二进制数字八进制数字---0000--x0011-w-0102-wx0113r--1004r-x1015rw-1106rwx1117
表中权限所对应的八进制数字就是每个权限对应的位相加比如权限 rwx 就是 4217。前面的文件 test.txt 其权限为“rw-rw-r--”因此其十进制表示就是664。 另外也开始使用 a、u、g 和 o 表示文件的归属关系用、和-表示文件权限的变化如下表所示
字母意义r可读权限w可写权限x可执行权限a所有用户u归属用户g归属组o其他用户具备权限添加某权限-去除某权限
对于文件 test.txt我们想要修改其归属用户(gbxluo)对其拥有可执行权限那么就可以使用ux。如果希望设置归属用户及其所在的用户组都对其拥有可执行权限就可以使用gux。 2.3 权限管理命令 也可以使用 Shell 来操作文件的权限管理主要用到“chmod”和“chown”这两个命令。 2.3.1 权限修改命令 chmod
命令“chmod”用于修改文件或者文件夹的权限权限可以使用前面讲的数字表示也可 以使用字母表示命令格式如下 chmod [参数] [文件名/目录名] 主要参数如下
参数描述-c效果类似“-v”参数但仅回显更改的部分-f不显示错误信息-R递归处理指定目录下的所有文件及其子文件目录一起处理-v显示指令的执行过程
修改文件的权限
先学习如何使用命令“chmod”修改一个文件的权限在用户根目录下创建一个文件 test然后查看其默认权限操作如下图所示 在上图中我们创建了一个文件test这个文件的默认权限为“rw-rw-r--”我们将其权限改为“rwxrw-rw”对应数字就是 766操作如下 在上图中我们修改文件 test 的权限为 766修改完成以后的 test 文件权限为“rwxrwxr-w”设置的一样说明权限修改成功。
上面是通过数字来修改权限的接下来使用字母来修改权限操作如下图所示 修改文件夹的权限
新建一个 test 文件夹在文件夹 test 里面创建 a.c、b.c 和 c.c 三个文件如下图所示 在上图中 test 文件夹下的文件 a.c、b.c 和 c.c 的权限均为“rw-rw-r--”将 test 文件夹下的所有文件权限都改为“rwxrwxrwx”也就是数字 777操作如下图所示 2.3.2 文件归属者修改命令 chown
命令 chown 用来修改某个文件或者目录的归属者用户或者用户组命令格式如下 chown [参数] [用户名.组名] [文件名/目录] 其中[用户名.组名]表示要将文件或者目录改为哪一个用户或者用户组用户名和组名用“.”隔开其中用户名和组名中的任何一个都可以省略命令主要参数如下
参数描述-c效果同-v 类似但仅回显更改的部分-f不显示错误信息-h只对符号连接的文件做修改不改动其它任何相关的文件-R递归处理将指定的目录下的所有文件和子目录一起处理-v显示处理过程
在用户根目录下创建一个 test 文件查看其文件夹所属用户和用户组如下图所示 从上图中可以看出文件 test 的归属用户为 gbxluo所属的用户组为 gbxluo将文件 test 归属用户改为 root 用户所属的用户组也改为 root操作如下图所示 命令 chown 同样也可以递归处理来修改文件夹的归属用户和用户组用法和命令 chown一样: 参考链接
ZYNQ领航者V2开发板 — 正点原子资料下载中心 1.0.0 文档