找回密码
 注册
关于网站域名变更的通知
查看: 323|回复: 1
打印 上一主题 下一主题

迅为IMX6ULL开发板-Linux文件系统

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-4-27 11:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
操作系统的主要功能之一就是文件的管理。文件管理是由文件系统来实现的,Linux 系统支持多种格式& y' L+ @, ^& k; C5 A+ {* R
的文件系统,本届我们主要讲解下文件系统的类型,以及文件操作的一些常用命令。9 D$ @  M  V5 n* P% u! P& [  u0 }
2.8.1 Linux  文件系统类型# q3 y# |* z* o! \$ m0 @8 L$ j) b
我们在使用 Windows 系统的时候,有时会对硬盘,U 盘等的存储设备进行格式化,在格式化的时候会要求2 C  I# T# M: D: @; {- ~
我们选择文件系统的类型,比如:exFAT、FAT32、NTFS,同样 Linux 系统也支持各种不同类型的文件系统,
7 W8 ]: {, B( a8 m比如:ext2、ext3、ext4、yaffs、FAT32、NTFS 等。这里我们主要讲解下几种常用的文件系统。/ Y& B6 B& g$ ?) |- u" D
FAT32  文件系统:3 l# s2 P' q: }4 b2 P" u8 l
FAT32 指的是文件分配表是采用 32 位二进制数记录管理的磁盘文件管理方式,因 FAT 类文件系统的核心是2 [/ _% U" Q4 O& o* [
文件分配表,命名由此得来。FAT32 是从 FAT 和 FAT16 发展而来的,优点是稳定性和兼容性好,能充分兼容8 B1 L* B- o! y& }
Win 9X 及以前版本,且维护方便。缺点是安全性差,且最大只能支持 32GB 分区,单个文件也只能支持最大/ e+ c2 r" F* X" V/ ?
4GB。
* N; i1 {( V$ F3 ext3  文件系统3 i7 ?! T- t/ p& H  ?( s, a
EXT3 是第三代扩展文件系统(英语:Third extended filesystem,缩写为 ext3),是一个日志文件系统,' J' V5 `: p* h3 }) ~  `
常用于 Linux 操作系统。它是很多 Linux 发行版的默认文件系统。Stephen Tweedie 在 1999 年 2 月的内核
% ^1 H! I' W3 O/ s, N% F( `邮件列表中,最早显示了他使用扩展的 ext2,该文件系统从 2.4.15 版本的内核开始,合并到内核主线中。
6 L9 W, P# s4 J; V' }& {' Vext4  文件系统
) K% A6 P5 b3 ~& ?4 EXT4 是第四代扩展文件系统(英语:Fourth extended filesystem,缩写为 ext4)是 Linux 系统下的日志
; d/ b, d. k4 J  R5 g! T$ J" @文件系统,是 ext3 文件系统的后继版本。Ext4 是由 Ext3 的维护者 Theodore Tso 领导的开发团队实现的,' x8 a) X1 X- i; G
并引入到 Linux2.6.19 内核中。Ext4 产生原因是开发人员在 Ext3 中加入了新的高级功能。; i: D0 J. L$ w0 r  K* f  X- O
上面几种文件系统是我们在 Linux 下经常使用的,那么我们安装的 Ubuntu 系统下的文件系统使用的是哪种" @+ o$ p. T8 D2 o' E
格式的呢?我们可以在终端输入“df -T”命令来查看下,如下图所示:
2 k$ m! i- P1 p+ a) Z ( }, n9 a. [2 s+ g3 b) K
从上图红色方框的文件就是我们安装 Ubuntu 的磁盘,在 Linux 下一切皆为文件,“/dev/sda1”就是我
5 }$ A9 U, d0 A1 z' E8 l9 Q! ]们的磁盘分区,可以看到他的类型是 ext4。我们在 Windows 系统下有 C、D、E 盘这样的概念,但是通过上
, u  b7 i$ V5 e8 U$ V$ T7 A/ z$ w面的命令我们可以看到 Linux 下对磁盘的管理与 Windows 是不一样的,没有 C、D、E 盘这样的概念。Linux% a$ ~5 T) P& S4 e) V# N) K
系统只有一个跟目录“/”,我们可以在 Ubuntu 的桌面打开“文件”应用,我们可以看到打开的文件路径' X8 J8 N( a% d% N& T
并不是在根目录下,这是因为 Ubuntu 是支持多用户的,会为每个用户分配一个根目录,比如我的 Ubuntu4 E. v' d) n. }; l5 k$ b. g
登录的用户是 topeet,那么默认进入的就是 topeet 用户的根目录“home”,如下图所示:0 j/ j' }" l* [8 {5 b
( G0 K, c" Q) r9 a/ r' b8 u2 l
我们在上图中点击左侧的“计算机”,如下图所示:
: a. \9 {- J" j- B$ A
4 ~4 S$ |5 C3 J# R8 b4 K上图就是 UBuntu 的根目录,那么前面我们的说的 Ubuntu 会为每一个用户创建一个根目录,那么这个根目1 \( J8 ?  W& h  k( e. w0 g
录具体位置在哪里呢?我们在创建用户的时候,Ubuntu 同时会在“/home”目录下创建与应户名同名的文7 s2 h) _* O2 w6 W
件夹,这个文件夹就是用户的根目录,比如我这里登陆的用户名是 topeet,那么 topeet 用户对应的用户根/ ~. K9 v5 a) v3 l3 f
目录就是“/home/topeet”这个目录。用户可以对自己用户根目录下的文件进行任意的读写操作。我们可
$ t# J& \' v( i$ l  ^以打开终端使用“cd /”命令,进入到系统根目录下,然后在输入“ls”命令,产看下系统根目录下都有哪
9 p4 E9 [. Z! p4 `# H! n些文件,如下图所示:
8 |6 K0 V# f+ w2 R, }2 o. \
% C. c, v5 P; Z' d7 c1 M# w从上图可以看到系统根目录下都有哪些文件夹,我们来看下这些文件夹的具体功能:( y( O  Z. l' E% }" p3 E# G6 N
/bin 存储一些二进制可执行命令文件" w% O$ r6 r4 l/ E" f( j
/boot 存放 Ubuntu 系统内核和系统启动文件
# G, B0 D" m9 g# g/dev 存放设备节点
+ U' i* F$ P, h" x: b8 P8 |/etc 存放系统管理所需的配置文件
2 I# w- {# }( Z$ X7 K# _8 t+ Q/home 普通用户默认目录,每个用户在改目录下都有一个以本用户名命名的文件夹/ q# a6 z2 m8 U2 p+ E, t- r; h
/lib /lib64 存放系统程序运行所需的库文件8 ^5 D* [: ~! {( x( e$ r# Q
/media 存放 Ubuntu 系统自动挂载的设备文件
, J0 N6 z- ^6 {* y: ~1 i/mnt 用于挂载的文件系统的挂载点
' b3 N& U+ Z: @/opt 可选文件和程序的存放目录
" K7 _* d. |2 Z8 T: X/proc 通常用来保存系统信息和进程信息4 i) P% P- Y" l) ~: x2 ?& R" `
/root 超级用户 root 的根目录文件
; b% i9 M! h; q  v) _- ?9 R8 Q  `# ]/sys 系统设备和文件层次结构,并向用户程序提供详细的内核数据信息* F& y, ], }2 T" V
/tmp 存储系统和用户的临时文件
4 z: ]6 q4 `6 Y1 B/usr 包括与系统用户直接有关的文件和目录8 Z/ f7 Y5 ]& D: P+ X/ w
/var 存储一些不断变化的文件,比如日志文件0 x/ I& D2 ]6 I
2.8.2  文件操作命令
8 i2 |' h" |8 e, Y  p创建文件命令 touch
; r+ z; z$ H) R1 Z! h我们在前面学习 vim 的时候,可以通过 vim 来创建一个文本文件,“touch”不仅可以用来创建文本文件,
  P6 f6 N5 F4 }! I: V还可以创建其它类型的文件,命令格式如下:: m  W$ [( M  ^
touch [参数] [文件名]( o: c# G+ q& Z
参数说明:0 [6 y) ^* G" Y% L1 U  d! Y
-a 只更改存取时间
% t5 t" J& J+ A* Z9 c! @-c 不建立任何文件6 O: r9 U$ ~& c( S
-d<日期> 使用指定的日期创建文件
) M+ _- L8 G- E$ R% F% X3 r-t<时间> 使用指定的时间创建文件
/ w# r9 S# s* I/ u' I! B+ v当我们使用“touch”命令创建文件的时候,如果创建的文件不存在,则会直接创建,如果创建的文件' u5 V. s; z, I/ ]
已经存在,则会修改下文件的最后修改日期(修改成运行该命令时候的系统日期)。现在我们使用命令“cd& x. t, P1 U% e# a, a4 b
~”进入到用户的根目录下,然后使用“touch”命令创建一个名为 ceshi 的文件,运行结果如下图所示:6 [- X, v4 L5 ?( K) P/ v
$ a; d* c: l6 d. F& @* [5 P- ?4 }
文件夹创建命令 mkdir
+ I6 b# D" m* l5 w% ?" Amkdir 是用来创建文件夹的命令,在使用该命令的时候,要求当前用户在当前的目录下具有写权限,并且创
: \& k% Q* \3 d% S1 v# R" ^建的文件夹名称不能是当前目录中又有的目录,命令格式如下:
, }( b0 j* G/ Q, Nmkdir [选项] 目录...
" X4 |. Y* v, V0 x! R. c选项的说明如下:, s' P( ?) |8 ~/ A( \% M
-m //设定权限<模式>(类似 chmod)5 J% ^# s2 p, m
-p //可以是一个路径命令,如果路径中的目录不存在,则依次创建他们/ z2 V% e# ^; y' r2 D0 o
-v //每次创建新目录都显示信息  @) S. M& q: v6 C
--help //显示帮助信息
( C" Z) g- t5 [: l$ }/ Q1 h--version //输出版本信息
, P) ]! X3 [4 y- U; g5 E我们可以使用 mkdir 创建一个名为“test”的文件夹,我们在终端运行命令“mkdir test”,运行结果如下图
: M: }- v  L7 v! a3 d& k6 E所示:; A& }# F$ X+ y4 G9 Z3 d! n5 w

$ D: p3 c0 X( x4 z5 p+ N文件删除命令 rm
( t5 e- X2 q0 s3 }9 i& V, b" o2 prm 命令可以删除文件和文件夹,在使用该命令的时候,要求当前用户在当前的目录下具有写权限,命令格式如下:
/ {4 N: h3 \' h/ Arm [选项]... 目录...3 p& ~7 K" T" t
选项的说明如下:8 H% g. l6 J! E4 m! m2 `6 B
-d //删除可能仍有数据的目录(只限超级用户 root)
1 N) B5 m2 p: O- F- ?, Q7 U, k-f //略过不存在的文件,不显示任何信息$ R- m; z% {1 S
-i //进行任何删除操作前,必须先确认' H- s7 p' R) I. S3 x- a) L& ^
-r //同时删除该目录下的所有目录层, C# M6 G0 U* {  [5 U. V+ F
-v //详细显示进行的步骤
4 C* m" [3 N1 j1 ?--help //显示帮助信息并退出$ Q. F& n1 L) H$ L+ K5 Y
--version //显示版本信息并退出# e$ a" |4 \3 R. N% Q
我们使用“rm”命令删除前面创建的文件“ceshi”,我们在终端输入“rm ceshi”,然后回车就可以删
( D0 Y5 u' c! V# d; f- d掉文件“ceshi”了,运行结果如下图所示:
: l  U: _. N! y; s* x ) f; Q3 e. n" M
“rm”命令也可以删除文件夹,我们删除前面创建的 test 目录,我们在终端执行“rm -RF test”,运行结果
/ d5 G" m+ k2 J" s( ~% q8 V如下图所示:0 |" X( b$ K" j* T
- O* k9 p8 U6 Q+ \# q: ~
文件复制命令 cp
9 X! s" W3 L5 T8 eLinux 下文件复制的命令是“cp”,命令格式如下:& {) @6 ?. i7 L
cp [参数] [源文件] [目标文件]
* z% t$ F% T& N, ]9 ]参数的说明如下:
- J' V( j5 F& U* T2 x6 B-d //复制有符号连接的文件时,保留原始的连接/ F3 [% t" c6 C) [( y: T- s
-f //强行复制文件,不管要复制的文件是否已经存在于目标目录
# s# d$ z6 M) k; Z-r //递归处理,将指定目录下的文件及子目录一并处理5 J8 [2 b! c+ N& r+ y
我们在用户跟目录下使用 mkdir 命令创建两个文件夹:ceshi1、ceshi2,如下图所示:
8 T0 ]: z8 x4 o( L
" K( E$ D5 b% K/ C然后进入“ceshi1”文件夹,在 ceshi1 文件夹创建 a 文件,如下图所示:
5 Q  P1 _0 ]/ q8 |) T( S" P$ D: g
, b/ y2 k$ K$ l我们将文件 a 复制到用户根目录下的 ceshi2 文件夹,运行结果如下图所示:
8 }$ j. \, @0 s3 r$ T5 K- a1 |2 F/ m
; |# i8 {1 N5 r) l4 m完成文件的复制,接下来我们来实现文件夹的复制,首先我们返回到用户根目录下,然后将 ceshi1 文件夹
6 G) [3 ^  u/ F4 ]: A# v复制到 ceshi2 文件夹,运行结果如下图所示:9 J+ N: U$ u) A0 W2 O, D

7 O* D/ j6 p! T; ]移动文件命令 mv
4 `) Q' N# D+ }4 {$ `% w! KLinux 下文件移动的命令是 mv,命令格式如下:
5 q+ V( p$ q6 V' emv [参数] [源文件] [目标文件]
8 P  @, K6 }+ P% T" ^4 ~6 ~0 m  w; E参数说明:/ T# {& X. s3 I/ ~; _! r8 y3 o
-b //如果要覆盖文件的话覆盖前先进行备份8 i+ z2 f5 H& Y4 V: g
-f //若目标文件或目录与现在的文件重复,直接覆盖目的文件或目录
! a3 m: r7 L+ ^: P-i //若目标文件存在,则会询问是否覆盖; g( z( ~; S$ z. N. b7 c
-u //若目标文件已经存在,且源文件比较新,则会更新* ^- k& q# q9 A% V) N
我们在前面创建了两个文件夹:ceshi1、ceshi2,在 ceshi1 文件夹创建了文件 a,我们将文件 a 重命名成文
% m' d! w' O9 R0 B6 w件 b,然后将文件 b 移动到 ceshi2 文件夹,运行结果如下图所示:
- @5 ^  c/ S, |0 K' K 4 {6 o; R  @( R$ U
文件接压缩命令 tar  T4 [: Z6 F4 Z
Linux 下常用的压缩包格式有两种:.bz2 和.gz。我们可以使用 tar 命令来解压或压缩这两种格式的压缩包,
* M& P, u& C0 H3 b" v命令格式如下:6 E% W' @" @/ a* I
tar [必要参数] [选择参数] [文件]6 Q, e7 l- e1 L( U( S! S
必要参数说明如下:
0 _* _/ E# n* Q& G# M& [-A //新增压缩文件到已存在的压缩
* n3 Y" R5 W( o9 R5 W# [( W( n- L0 b-B //设置区块大小( E1 e8 V- J) K9 o: c
-c //建立新的压缩文件! U; x, t3 {2 E/ Z# f* ]  B
-d //记录文件的差别
+ p: W$ v7 f" `& `* h-r //添加文件到已经压缩的文件7 U* i0 Y3 |4 o4 H0 T" P
-u //添加改变了和现有的文件到已经存在的压缩文件% \. J5 c+ Z* y' R
-x //从压缩的文件中提取文件
/ _3 d6 i* d( s-t //显示压缩文件的内容
6 N4 b1 W8 S8 B# k$ A-z //支持 gzip 解压文件
8 J! s8 }, I2 `' J9 W* u$ v-J //支持 bzip2 解压文件) g; j4 ]# F+ i/ i3 e. Q
-Z //支持 compress 解压文件' \3 `: {+ u2 ~  O
-v //显示操作过程
+ b/ J1 Q! d" ]  `: E& n9 N-k //保留原有文件不覆盖
! \+ ^" S5 v: F- H-m //保留文件不被覆盖5 @9 ]- H1 U, T; X/ G7 o
-W //确认压缩文件的正确性
2 A6 q" X8 @3 G; Y可选参数如下:
3 o2 u$ F+ U& t3 W: Q+ L5 Y-b //设置区块数目
2 H  s# }+ S; o2 x/ t5 [2 w: j-C //切换到指定目录
0 O+ I# n- {0 F: u7 D7 H-f //指定压缩文件
% y& }5 b9 X6 T3 s& r# V1 Z& z7 D--help //显示帮助信息. c: F1 t) x$ _" O) m* _
--version //显示版本信息4 ^; ~- `4 C2 {/ f0 v
我们使用 tar 命令压缩生成.bz2 和.gz 压缩包,运行结果如下图所示:
" Y  W1 P3 E; ^$ N# ?+ U
5 }. z. X9 A$ C3 `) ?1 |9 e在上图中我们分别压缩了.bz2 和.gz 两个格式的压缩包,其中压缩.bz2 格式的压缩包我们使用的参数
; y! I4 Q: O: q- N  ^' a是-jcvf,而.gz 格式的压缩包使用的参数是-zcvf。下面在我们在来学习下 tar 解压文件,操作如下图所示:
# G# }$ P: U7 s% m; S # }/ R# C  _/ s9 [  r- L
在上图中,我们分别解压了.tar.bz2 和.gz 两种格式的压缩包。其中.tar.bz2 压缩包使用的-jxvf 参( |/ ~# A/ n2 d& `% {: N
数来解压的,而.gz 格式的压缩包使用-zxvf 参数来解压的。关于 tar 的命令我们就介绍到这里,更多详细" ?* p% r' Z: \7 Y* x# e! a& ?
的用法大家可以去网上找下相关的文档。
! M9 U) n; h+ g6 L) G0 C/ |2 @( C+ ~文件查找命令  find
2 G/ C! u; I  t7 N3 ^文件查找在我们的平常使用中也是很常见的,比如在 Linux 内核源码中,我们要查找某个文件的路径,这  v' p4 H& y0 N" i  H% B4 b
是就会用到文件查找 find 命令了,器格式如下:
/ f- H1 N9 n5 P6 D- ]. h2 U1 Hfind [路径][参数][关键字]1 e; f/ }, }0 i* Y8 ?8 i
路径标识要从哪个目录下开始查找文件,如果不写默认从执行 find 的当前目录下开始查找。
0 n; ~* y- [0 t% i参数说明如下:+ c7 Y4 w8 `9 i- ?' t
-name 按照文件名称查找,查找与 filename 匹配的文件
& m: D$ W& l9 X' T7 I! x/ ?8 X-depth 从指定目录下的最深层的子目录开始查找
0 Q+ O# Z  x2 F! ~+ a9 r3 M6 v-size<文件大小> 查找符合指定文件大小的文件2 T7 O+ Q! |: H( W
-type<文件类型> 查找符合指定文件类型的文件
0 {7 T  `/ _/ G6 y-user<拥有者> 查找符合指定的拥有者的文件或目录) Z5 k0 c8 y5 Z9 X2 _9 }  [' \
-gid<群组识别码> 查找符合指定的群组识别码的文件或目录
$ L1 p3 V, k  b( Q-group<群组名称> 查找符合指定的群组名称的文件或目录
8 ^1 R# W2 j0 R该命令的参数有很多,我们这里只是列举除了一些常用的。我们来使用 find 命令查找一下在目录“/etc”
- a, _2 M2 }9 T( h: v下以“host”开头的文件,我们在终端输入“find /etc -name host*”命令,运行结果如下图所示:& _# ]6 d1 d0 g$ I( T$ i) Q! Z

7 Y% I( {6 w, J. ^$ L从上图中我们可以看到在“/etc”目录下,以“host”关键字开头的文件全部查找出来了。
; F$ d0 h! @: a/ C' g/ W! ?文本搜索命令  grep3 _# D0 {1 b3 W# w3 u" `$ z
有时候我们需要搜索出包含特定关键字的文件有哪些,这样就会用到 grep 这个命令,命令格式如下:
+ \* F! L$ D* z7 U8 W0 c9 Vgrep [参数] 关键字 文件列表9 i' M. }7 v) M) E) ]/ i+ m, C
参数说明如下:/ v! N& p, H2 C! d1 o
-b //在显示符合关键字的那一列前,标记处该列第 1 个字符的位编号" H, e3 ]3 p) T* O, R! q& O, R
-a //不要忽略二进制的数据" @/ j+ s( |6 _$ [1 U
-c //计算符合范本样式的列表
' C7 J& }, U* N( [  E- Z-i //忽略字符的大小写
- D3 Z3 W. z5 v3 @- b- @-n //在显示符合样本范式的那一列前面,标出该列的列数编号
) E0 V7 r- v8 X( t$ t; s; j% u-r //在指定目录中递归查找9 t  X- S4 \- A. u2 d
-v //反转查找,只显示不匹配的行0 ]" Q! d+ ~( E' y8 i
比如我们在“/etc”下递归查找包含字符“topeet”的文本,运行结果如下图所示:
( U# W; U5 c" F' v 3 Y; k% ~. P, F" ^- T, l5 E& ~

12.jpg (12.11 KB, 下载次数: 1)

12.jpg

该用户从未签到

2#
发表于 2020-4-27 18:15 | 只看该作者
IMX6ULL开发板-Linux文件系统
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-26 10:14 , Processed in 0.171875 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表