Linux系统下常用指令学习 之 二
文件查询和搜索
文件的查询和搜索也是最常用的操作,在嵌入式 Linux 开发中常常需要在 Linux 源码文件中查询某个文件是否存在,或者搜索哪些文件都调用了某个函数等等。
1、命令 find
find 命令用于在目录结构中查找文件,其命令格式如下:
find [路径] [参数] [关键字]
路径是要查找的目录路径,如果不写的话表示在当前目录下查找,关键字是文件名的一
部分,主要参数如下:
-name 按照文件名称查找,查找与 filename 匹配的文件,可使用通配符。
-depth 从指定目录下的最深层的子目录开始查找。
-gid<群组识别码> 查找符合指定的群组识别码的文件或目录。
-group<群组名称> 查找符合指定的群组名称的文件或目录。
-size<文件大小> 查找符合指定文件大小的文件。
-type<文件类型> 查找符合指定文件类型的文件。
-user<拥有者名称>查找符合指定的拥有者名称的文件或目录。
我们使用的命令 find / etc / -name vim*
意思是我们现在查找 在 etc文件夹下的 带有 vim开头的 文件
2 . 命令 grep
find 命令 用于 在目录中搜索文件 , 我们有时候需要在文件中搜索一串关键字 , grep 就是完成这个功能的,grep 命令用于查找包含指定关键字的文件,如果发现某个文件的内容包含所指定的关键字,grep 命令就会把包含指定关键字的这一行标记出来
grep [参数] 关键字 文件列表
grep 一次只能查找一个关键字 :
-b 在显示符合关键字的那一列前,标记处该列第 1 个字符的位编号。
-c 计算符合关键字的列数。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用此参数!否则 grep 指令将
回报信息并停止搜索。
-i 忽略字符大小写。
-v 反转查找,只显示不匹配的行。
-r 在指定目录中递归查找。
例如: 我们在此处使用 grep -ir “ubuntu” /usr
我们分类之后 可以观察到
文件类型
比如 test1 的第一个字符是“d”,test1.tar.bz2 文件第一个字符是“-”。这些字符表示的
文件类型如下:
- 普通文件,一些应用程序创建的,比如文档、图片、音乐等等。
d 目录文件。
c 字符设备文件,Linux 驱动里面的字符设备驱动,比如串口设备,音频设备等。
b 块设备文件,存储设备驱动,比如硬盘,U 盘等。
l 符号连接文件,相当于 Windwos 下的快捷方式。
s 套接字文件。
p 管道文件,主要指 FIFO 文件。
权限管理 :
Ubuntu 是一个多用户系统,我们可以给不同的使用者创建不同的用户账号,每个用户使
用各自的账号登陆,使用用户账号的目的一是方便系统管理员管理,控制不同用户对系统的
访问权限,另一方面是为用户提供安全性保护。
装系统的时候创建的用户其权限比后面创建的用户大一点,但是没有 root 用户权限大,
Ubuntu 下用户类型分为以下 3 类:
● 初次创建的用户,此用户可以完成比普通用户更多的功能。
● root 用户,系统管理员,系统中的玉皇大帝,拥有至高无上的权利。
● 普通用户,安装完操作系统以后被创建的用户。
。Ubuntu 下我们会常跟用户权限打交道,权限就是用户对于系
统资源的使用限制情况,root 用户拥有最大的权限,可以为所欲为,装系统的时候创建的用
户拥有 root 用户的部分权限,其它普通用户的权限最低。对于我们做嵌入式开发的人一般不
关注用户的权限问题,因为嵌入式基本是单用户,做嵌入式开发重点关注的是文件的权限问
题。
对于一个文件通常有三种权限:读®、写(w)和执行(x),
我们 举个 例子
-rw-rw-r-- 1 zuozhongkai zuozhongkai 0 12 月 25 20:44 test.c
这句话 来自于 正点原子 借用一下
我们会发现 其中 -rw-rw-r-- 标示着 文件权限与 用户 用户组之间的关系
第一位的“-” 小短横 - 表示文件类型 剩下的9位 以3位 为1组
即 我们可以分割 - rw- rw- r–
分别表示文件拥有者的权限,文件拥有者所在用
户组的权限 以及其它用户权限
后面 还有两个 数据 例如 这里的 zuozhongkai zuozhongkai
表示着 代表文件拥有者(用
户) 和 该用户所在的用户组
第一个小短横 “-” 表示 文件类型是 普通文件
接下来是 我们 看出文件的拥有者是 zuozhongkai,其对文件 tesst.c 的权限是“rw-”,也就是对该文件拥有读和写两种权限。
下面的是用户 zuozhongkai 所在的用户组也叫做 zuozhongkai,其组内用户对于文件 test.c 的权限是“rw-”,也是拥有读和写这两种权限。
最后一个 r-- 表示 其它用户对于文件 test.c 的权限是“r–”,也就是只读权限。
对于文件,可读权限表示可以打开查看文件内容,可写权限表示可以对文件进行修改,可执行权限就是可以运行此文件(如果是软件的话)。对于文件夹,拥有可读权限才可以使用命令 ls 查看文件夹中的内容,拥有可执行权限才能进入到文件夹内部。如果某个用户对某个文件不具有相应的权限的话就不能进行相应的操作,比如根目录“/”下的文件只有 root 用户才有权限进行修改,如果以普通用户去修改的话就会提示没有权限。
文件的权限有三种 : 读(r) 写(w) 执行(x)
我们也可以使用二进制数表示,三种权限就可以使用 3 位二进制数来表示,一种权限对应一个二进制位,如果该位为 1 就表示具备此权限,如果该位为 0 就表示没不具备此权限,如下表所示:
另外我们也开始使用 a、u、g 和 o 表示文件的归属关系,用=、+和-表示文件权限的变化,如下表所示:
对于文件 test.c,我们想要修改其归属用户(zuozhongkai)对其拥有可执行权限,那么就可以使用:u+x。如果希望设置归属用户及其所在的用户组都对其拥有可执行权限就可以使用:gu+x。
u 是归属用户 + 添加某权限 x 可执行权限 u+x
g归属组 u 归属用户 + 添加某种属性 x 可执行权限 gu+x
我们可以使用另外的 权限管理命令
chmod chown
我们可以通过数字的方法 修改权限
我们可以通过递归修改整个文件夹中文件的权限
我们使用的指令是 chmod -R 777 test11
-R 表示递归 处理 test11 下所有文件夹的 权限
文件归属者修改命令 chown
命令 chown 用来修改某个文件或者目录的归属者用户或者用户组,命令格式如下:
chown [参数] [用户名.<组名>] [文件名/目录]
其中[用户名.<组名>]表示要将文件或者目录改为哪一个用户或者用户组,用户名和组名
用“.”隔开,其中用户名和组名中的任何一个都可以省略,命令主要参数如下:
-c 效果同-v 类似,但仅回显更改的部分。
-f 不显示错误信息。
-h 只对符号连接的文件做修改,不改动其它任何相关的文件。
-R 递归处理,将指定的目录下的所有文件和子目录一起处理。
-v 显示处理过程。
chown
Linux 磁盘管理
Linux 的磁盘管理体系和 Windows 有很大的区别,在 Windows 下经常会遇到“分区”这个概念,在 Linux 中一般不叫“分区”而叫“挂载点”。 “挂载点”就是将一个硬盘的一部分做成文件夹的形式,这个文件夹的名字就是“挂载点”,不管在哪个发行版的 Linux 中,用户是绝对看到不到 C 盘、D 盘这样的概念的,只能看到以文件夹形式存在的“挂载点”.
有四个磁盘设备文件,其中 sd 表示是 SATA硬盘或者其它外部设备,最后面的数字表示该硬盘上的第 n 个分区,比如/dev/sda1 就表示磁盘 sda 上的第一个分区。图 2.8.2中都是以/dev/sda 开头的,说明当前只有一个硬盘。如果再插上 U 盘、SD 卡啥的就可能会出现/dev/sdb,/dev/sdc等等。
磁盘管理命令
1.磁盘分区命令 fdisk
如果要对某个磁盘进行分区,可以使用命令 fdisk,命令格如下:fdisk [参数]主要参数如下:-b<分区大小> 指定每个分区的大小。-l 列出指定设备的分区表。-s<分区编号> 将指定的分区大小输出到标准的输出上,单位为块。-u 搭配“-l”参数,会用分区数目取代柱面数目,来表示每个分区的起始地址。
p 显示现有的分区
n 建立新分区
t 更改分区类型
d 删除现有的分区
a 更改分区启动标志
w 对分区的更改写入到硬盘或者存储器中。
q 不保存退出。
由于我的 U 盘里面还有一些重要的文件,所以现在不能进行分区,所以就不演示 fdisk 的
分区操作了,后面我们讲解裸机例程的时候需要将可执行的 bin 文件烧写到 SD 卡中,烧写到
SD 卡之前需要对 SD 卡进行分区,到时候再详细讲解如何使用 fdisk 命令对磁盘进行分区。
2、格式化命令 mkfs
使用命令 fdisk 创建好一个分区以后,我们需要对其格式化,也就是在这个分区上创建一
个文件系统,Linux 下的格式化命令为 mkfs,命令格式如下:
mkfs [参数] [-t 文件系统类型] [分区名称]
主要参数如下:
fs 指定建立文件系统时的参数
-V 显示版本信息和简要的使用方法。
-v 显示版本信息和详细的使用方法。
比如我们要格式化 U 盘的分区/dev/sdb1 为 FAT 格式,那么就可以使用如下命令:
mkfs –t vfat /dev/sdb1
3、挂载分区命令 mount
我们创建好分区并且格式化以后肯定是要使用硬盘或者 U 盘的,那么如何访问磁盘呢?
比如我的 U 盘就一个分区,为/dev/sdb1,如果直接打开文件/dev/sdb1 会发现根本就不是我们
要的结果。我们需要将/dev/sdb1 这个分区挂载到一个文件夹中,然后通过这个文件访问 U 盘,
磁盘挂载命令为 mount,命令格式如下:
mount [参数] -t [类型] [设备名称] [目的文件夹]
命令主要参数有:
-V 显示程序版本。
-h 显示辅助信息。
-v 显示执行过程详细信息。
-o ro 只读模式挂载。
-o rw 读写模式挂载。
-s-r 等于-o ro。
-w 等于-o rw。
挂载点是一个文件夹,因此在挂载之前先要创建一个文件夹,一般我们把挂载点放到
“/mnt”目录下,在“/mnt”下创建一个 tmp 文件夹,然后将 U 盘的/dev/sdb1 分区挂载到
/mnt/tmp 文件夹里面,
4、卸载命令 umount
当我们不在需要访问已经挂载的 U 盘,可以通过 umount 将其从卸载点卸除,命令格式如
下:
umount [参数] -t [文件系统类型] [设备名称]
-a 卸载/etc/mtab 中的所有文件系统。
-h 显示帮助。
-n 卸载时不要将信息存入到/etc/mtab 文件中
-r 如果无法成功卸载,则尝试以只读的方式重新挂载。
-t <文件系统类型> 仅卸载选项中指定的文件系统。
-v 显示执行过程。
/ 上述磁盘分区 并未认真学习 仅仅是复制粘贴