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

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

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
操作系统的主要功能之一就是文件的管理。文件管理是由文件系统来实现的,Linux 系统支持多种格式
: \: w) M6 X& f4 r7 ]4 L/ u: ?的文件系统,本届我们主要讲解下文件系统的类型,以及文件操作的一些常用命令。
' x/ M2 O% G* l" i2.8.1 Linux  文件系统类型
6 ]4 X1 n+ Y/ G$ _( i8 M我们在使用 Windows 系统的时候,有时会对硬盘,U 盘等的存储设备进行格式化,在格式化的时候会要求% _7 \: Y+ z( u3 W6 F/ y
我们选择文件系统的类型,比如:exFAT、FAT32、NTFS,同样 Linux 系统也支持各种不同类型的文件系统,
6 d9 Q* w  {5 ~$ c* j比如:ext2、ext3、ext4、yaffs、FAT32、NTFS 等。这里我们主要讲解下几种常用的文件系统。
5 N- g) R0 B1 M4 K4 U6 E) MFAT32  文件系统:
# l+ |8 j9 {9 z' S. E6 e. {FAT32 指的是文件分配表是采用 32 位二进制数记录管理的磁盘文件管理方式,因 FAT 类文件系统的核心是! S: A) D0 s2 W/ b  F0 w" p) @' t
文件分配表,命名由此得来。FAT32 是从 FAT 和 FAT16 发展而来的,优点是稳定性和兼容性好,能充分兼容9 O, d% \' J7 v. E0 E$ _
Win 9X 及以前版本,且维护方便。缺点是安全性差,且最大只能支持 32GB 分区,单个文件也只能支持最大" r9 Y- K9 U9 y! r4 E% l# t
4GB。# ?3 _1 ]& d# q( f7 J; f
3 ext3  文件系统5 `" y6 N$ ~* R, \- f
EXT3 是第三代扩展文件系统(英语:Third extended filesystem,缩写为 ext3),是一个日志文件系统,1 ^8 \' _/ F1 Q+ g
常用于 Linux 操作系统。它是很多 Linux 发行版的默认文件系统。Stephen Tweedie 在 1999 年 2 月的内核8 B& t$ R7 k' s: a6 }& d& k
邮件列表中,最早显示了他使用扩展的 ext2,该文件系统从 2.4.15 版本的内核开始,合并到内核主线中。* d$ [- l9 ~2 I
ext4  文件系统5 U0 `2 X; A1 E& w0 \6 ^
4 EXT4 是第四代扩展文件系统(英语:Fourth extended filesystem,缩写为 ext4)是 Linux 系统下的日志
4 [% H9 A1 e$ Q. B9 H文件系统,是 ext3 文件系统的后继版本。Ext4 是由 Ext3 的维护者 Theodore Tso 领导的开发团队实现的,; P  Z7 Z! [5 V( R3 b
并引入到 Linux2.6.19 内核中。Ext4 产生原因是开发人员在 Ext3 中加入了新的高级功能。
- [9 }- k7 ~- c% J! j# g上面几种文件系统是我们在 Linux 下经常使用的,那么我们安装的 Ubuntu 系统下的文件系统使用的是哪种6 R7 {. o/ V% G3 H& {& e/ q
格式的呢?我们可以在终端输入“df -T”命令来查看下,如下图所示:
$ b, @  \7 x: u
+ b, s' P4 ^( k7 M' U" j: E从上图红色方框的文件就是我们安装 Ubuntu 的磁盘,在 Linux 下一切皆为文件,“/dev/sda1”就是我
) Z( I5 g& N8 C4 M$ N% U们的磁盘分区,可以看到他的类型是 ext4。我们在 Windows 系统下有 C、D、E 盘这样的概念,但是通过上
  l- j/ S- W2 F1 P" i/ j' R面的命令我们可以看到 Linux 下对磁盘的管理与 Windows 是不一样的,没有 C、D、E 盘这样的概念。Linux! {0 M: a& k" y# g" ?
系统只有一个跟目录“/”,我们可以在 Ubuntu 的桌面打开“文件”应用,我们可以看到打开的文件路径5 ]# A, i: l, U/ d
并不是在根目录下,这是因为 Ubuntu 是支持多用户的,会为每个用户分配一个根目录,比如我的 Ubuntu
" P' T7 v+ i$ b% R% B* z登录的用户是 topeet,那么默认进入的就是 topeet 用户的根目录“home”,如下图所示:$ p" `5 ?( `3 N- J
9 R- d: c* N0 ?3 g  u* Q" H- p6 v
我们在上图中点击左侧的“计算机”,如下图所示:
9 }& Z* h1 l" W: W- [! U6 y ' S- G  G3 t+ G% L
上图就是 UBuntu 的根目录,那么前面我们的说的 Ubuntu 会为每一个用户创建一个根目录,那么这个根目" d/ o4 L* T* ^7 @8 n3 V
录具体位置在哪里呢?我们在创建用户的时候,Ubuntu 同时会在“/home”目录下创建与应户名同名的文! U# A9 m# W9 U0 E6 J- H% R" P
件夹,这个文件夹就是用户的根目录,比如我这里登陆的用户名是 topeet,那么 topeet 用户对应的用户根
7 X/ \& C5 A/ e0 J- j1 H目录就是“/home/topeet”这个目录。用户可以对自己用户根目录下的文件进行任意的读写操作。我们可+ S) {! w5 `- m4 \6 D+ v( k
以打开终端使用“cd /”命令,进入到系统根目录下,然后在输入“ls”命令,产看下系统根目录下都有哪
- o( }9 U  L. _; @& \2 g  A些文件,如下图所示:+ o8 P& m1 L1 s( ~1 m

! l6 E. V  P" A  i从上图可以看到系统根目录下都有哪些文件夹,我们来看下这些文件夹的具体功能:+ @5 a/ n& r% \  n% o
/bin 存储一些二进制可执行命令文件
# D/ t- l  R9 q- J/boot 存放 Ubuntu 系统内核和系统启动文件
0 C' r1 k7 B/ [; {/dev 存放设备节点
; A! g; X$ Q" L$ l& Y8 ^' D/etc 存放系统管理所需的配置文件
' \9 i* i. e: T* v& f/home 普通用户默认目录,每个用户在改目录下都有一个以本用户名命名的文件夹: A6 N; b# P9 Y5 Q# |
/lib /lib64 存放系统程序运行所需的库文件& I5 a& Y6 z3 f6 H: ]: {
/media 存放 Ubuntu 系统自动挂载的设备文件
) ~6 _% @9 X$ U/ @+ z, L8 \& i7 r/mnt 用于挂载的文件系统的挂载点: f4 G! M% H8 K" c
/opt 可选文件和程序的存放目录# _& X  w' _9 r. P2 G
/proc 通常用来保存系统信息和进程信息- R( B) u, f5 A6 g: h
/root 超级用户 root 的根目录文件
, \9 e2 e, ^* P0 B# f: H/sys 系统设备和文件层次结构,并向用户程序提供详细的内核数据信息
' {1 \1 D* K& G* W  f) O/tmp 存储系统和用户的临时文件
9 V9 x: Z' h) n1 ], J8 U/usr 包括与系统用户直接有关的文件和目录8 o2 m5 z" E) c) q3 L) v: U- d
/var 存储一些不断变化的文件,比如日志文件) S0 `" L. o5 }6 B! J  C
2.8.2  文件操作命令
& r5 `) Q) a* T5 I创建文件命令 touch
) e, B0 j% u2 O) H我们在前面学习 vim 的时候,可以通过 vim 来创建一个文本文件,“touch”不仅可以用来创建文本文件,3 K5 l7 h* \( V- ]- S# b
还可以创建其它类型的文件,命令格式如下:9 S" \. P& t* ?
touch [参数] [文件名]
- L# a6 F0 ?1 h8 d6 r参数说明:! E0 z! ?" j2 Z0 K5 V
-a 只更改存取时间" i! r" m; v  h+ u$ c
-c 不建立任何文件3 A9 e1 _5 H$ [9 Q
-d<日期> 使用指定的日期创建文件! Y& Y1 C6 `2 T( u2 ?" i' X
-t<时间> 使用指定的时间创建文件
$ O7 m7 l+ u2 F+ Q2 ~  t' [当我们使用“touch”命令创建文件的时候,如果创建的文件不存在,则会直接创建,如果创建的文件
4 k/ g+ L" Y* T* k) Q已经存在,则会修改下文件的最后修改日期(修改成运行该命令时候的系统日期)。现在我们使用命令“cd
9 J2 T$ N, ~0 o$ G9 [3 M~”进入到用户的根目录下,然后使用“touch”命令创建一个名为 ceshi 的文件,运行结果如下图所示:
7 w4 E1 d. g/ x4 _% e
; {3 N* V  A( R/ e, @- e文件夹创建命令 mkdir
" [. d* q9 R- h8 N$ Emkdir 是用来创建文件夹的命令,在使用该命令的时候,要求当前用户在当前的目录下具有写权限,并且创% t8 {; x$ C5 n; i" ?: j
建的文件夹名称不能是当前目录中又有的目录,命令格式如下:! x2 z  L* P) z9 i6 R
mkdir [选项] 目录...
* _/ Y  ~6 h( Q% g选项的说明如下:
' @: G' k! D' T! y-m //设定权限<模式>(类似 chmod); K# h, H3 r$ ~0 V3 s% v
-p //可以是一个路径命令,如果路径中的目录不存在,则依次创建他们
, c; w9 N* q; ], M4 _4 Y! y: c-v //每次创建新目录都显示信息; [$ ?% @5 V: w3 O
--help //显示帮助信息
  {- O% Y9 C/ S% w+ ?--version //输出版本信息. x& @4 F( ]& _7 a$ }0 j1 k$ _
我们可以使用 mkdir 创建一个名为“test”的文件夹,我们在终端运行命令“mkdir test”,运行结果如下图/ C% k* k$ Q2 o" x
所示:. @) ]  f8 U* d4 U( c, P6 o+ y

$ e9 G7 g3 z' d文件删除命令 rm' H% a  T, l0 T3 }% h* k
rm 命令可以删除文件和文件夹,在使用该命令的时候,要求当前用户在当前的目录下具有写权限,命令格
/ `# R/ G; @4 ~8 V1 Y3 E" M0 s式如下:4 W8 p$ @1 U: w% \9 g! J
rm [选项]... 目录...
. q8 f6 G* G# y" Z( i  T, x选项的说明如下:
- u7 d  t0 N4 j, f- ?# h* D0 U-d //删除可能仍有数据的目录(只限超级用户 root)4 q8 V9 k( q( F+ C+ u$ c
-f //略过不存在的文件,不显示任何信息- j  E8 R6 p' O
-i //进行任何删除操作前,必须先确认
; @  _! p7 u5 r7 V-r //同时删除该目录下的所有目录层
: u$ m% f' x$ K* M6 d-v //详细显示进行的步骤
7 e. v0 t% [. a' v+ F--help //显示帮助信息并退出
( Z; l; h9 t2 x--version //显示版本信息并退出
( P0 r$ B' v7 k/ T7 c9 X我们使用“rm”命令删除前面创建的文件“ceshi”,我们在终端输入“rm ceshi”,然后回车就可以删' s. Z1 X3 {0 F
掉文件“ceshi”了,运行结果如下图所示:
3 ]3 D! M) B1 C8 P9 Z5 A1 W 4 [: U! m( [2 U& y, y- {7 \
“rm”命令也可以删除文件夹,我们删除前面创建的 test 目录,我们在终端执行“rm -RF test”,运行结果
4 m' ]  a1 q7 m5 E如下图所示:
* j, s/ H6 \  k7 N  s- M+ X( P+ N- J  C
2 v, Z7 ]; F1 K- J  m, S文件复制命令 cp
' k& i' [- }' p: J9 VLinux 下文件复制的命令是“cp”,命令格式如下:
' I$ K" E! _( G- L& Rcp [参数] [源文件] [目标文件]
- `& \( U  _3 z4 R参数的说明如下:
. c. y7 H3 R' W3 n-d //复制有符号连接的文件时,保留原始的连接
" h9 }$ C* Q) C( |. G# n-f //强行复制文件,不管要复制的文件是否已经存在于目标目录
6 g) O: e# C) A8 v! g& n-r //递归处理,将指定目录下的文件及子目录一并处理* x4 U" Q8 V% T7 [8 m# \+ D
我们在用户跟目录下使用 mkdir 命令创建两个文件夹:ceshi1、ceshi2,如下图所示:
, s3 r- e' M& w 4 I) }+ }3 K; h7 ^% H! w8 J7 z7 `
然后进入“ceshi1”文件夹,在 ceshi1 文件夹创建 a 文件,如下图所示:- C) g- f& g) ~& a  `1 s
  A/ Y4 A! y5 ]2 \# I
我们将文件 a 复制到用户根目录下的 ceshi2 文件夹,运行结果如下图所示:
' e1 F- B  Q' _& i$ C! i
$ p1 k3 O4 u  m; W& X完成文件的复制,接下来我们来实现文件夹的复制,首先我们返回到用户根目录下,然后将 ceshi1 文件夹
( Q3 M- @7 i- n' f' @6 [复制到 ceshi2 文件夹,运行结果如下图所示:5 T: k  x% E: H0 q) [( j' C& w& D: i0 x
, h* g5 E  O' K4 c, |6 ]0 O
移动文件命令 mv' b$ y( t; P) p6 m8 h( k1 ^" }7 Y! \
Linux 下文件移动的命令是 mv,命令格式如下:
3 ~: Y: e( \* ~2 H6 i% ^! Smv [参数] [源文件] [目标文件]
7 K# i" C$ V2 s; Q4 I参数说明:
% r' v& [$ v4 `-b //如果要覆盖文件的话覆盖前先进行备份
- j2 r/ B6 P4 O! S-f //若目标文件或目录与现在的文件重复,直接覆盖目的文件或目录
. K9 `% Z5 g( f8 W-i //若目标文件存在,则会询问是否覆盖
3 B0 @% G, v# o9 X% u4 |; s-u //若目标文件已经存在,且源文件比较新,则会更新
3 _3 A$ |5 z# [9 y' Q' y我们在前面创建了两个文件夹:ceshi1、ceshi2,在 ceshi1 文件夹创建了文件 a,我们将文件 a 重命名成文- {) ^7 T* }6 q5 k1 k0 j' B
件 b,然后将文件 b 移动到 ceshi2 文件夹,运行结果如下图所示:% }& j8 D' S# N6 W3 g+ z1 W$ Q

) v2 |; k4 _4 _- N文件接压缩命令 tar# Z7 s" s7 D8 [% Y7 G% B
Linux 下常用的压缩包格式有两种:.bz2 和.gz。我们可以使用 tar 命令来解压或压缩这两种格式的压缩包," O+ s: Z; q% X
命令格式如下:
6 K9 B) R! f1 ]+ u  e( Ztar [必要参数] [选择参数] [文件]+ T+ K8 C8 \- L. y: H: U
必要参数说明如下:" O1 X1 h$ V0 ]9 [  b
-A //新增压缩文件到已存在的压缩
/ t6 _: s) P) }5 q-B //设置区块大小
% O( n  Y" V* e# E+ k+ F8 I-c //建立新的压缩文件  g+ k  }% a4 }" P+ h- a
-d //记录文件的差别
( F0 G) A  B( R  Q0 h1 ^/ b1 [-r //添加文件到已经压缩的文件% `7 |: q/ I: J! @5 L% [
-u //添加改变了和现有的文件到已经存在的压缩文件1 l6 n3 J* ~' i8 ~& J* e
-x //从压缩的文件中提取文件
+ Z5 t/ K( v' V2 C-t //显示压缩文件的内容
% }$ K4 J& F# q' J-z //支持 gzip 解压文件
: L  t2 `0 l" K" H  d  o-J //支持 bzip2 解压文件* H( \! m( F- A' G( n# ^, R
-Z //支持 compress 解压文件
6 g6 r# @: {4 z9 L  ]- ~: V-v //显示操作过程- l# x: T! \2 t" b' Q8 f
-k //保留原有文件不覆盖
" O9 j* m# n6 A; s$ U-m //保留文件不被覆盖
5 w! v  q* |" x-W //确认压缩文件的正确性- G: [) _; N$ g, X% w
可选参数如下:
, x6 h0 Y/ g" Q+ D-b //设置区块数目
2 A! c* X( b7 S-C //切换到指定目录6 a/ ]3 O0 s4 T7 n, `
-f //指定压缩文件
9 z- x; _, ]7 A8 s" z--help //显示帮助信息- o) N/ D9 {4 z0 X* R" L5 y
--version //显示版本信息( @: X8 f7 i+ A% v# A: m  z
我们使用 tar 命令压缩生成.bz2 和.gz 压缩包,运行结果如下图所示:8 Q) c/ R2 y8 g) N; n* D' U! f

+ x& b: P$ Q- T; T. _$ t在上图中我们分别压缩了.bz2 和.gz 两个格式的压缩包,其中压缩.bz2 格式的压缩包我们使用的参数& v! ]  ]9 v, V0 v0 Z; Y
是-jcvf,而.gz 格式的压缩包使用的参数是-zcvf。下面在我们在来学习下 tar 解压文件,操作如下图所示:
6 D# I0 J7 [9 v1 m
' O- L4 Q! r1 }* J' r5 p在上图中,我们分别解压了.tar.bz2 和.gz 两种格式的压缩包。其中.tar.bz2 压缩包使用的-jxvf 参6 c* M. t/ t5 t9 ?9 f+ e: D* W
数来解压的,而.gz 格式的压缩包使用-zxvf 参数来解压的。关于 tar 的命令我们就介绍到这里,更多详细
; ?) h/ }! R8 d  C的用法大家可以去网上找下相关的文档。  O/ _5 c. j& {( q6 }. m7 l
文件查找命令  find: j5 A5 {+ m' p
文件查找在我们的平常使用中也是很常见的,比如在 Linux 内核源码中,我们要查找某个文件的路径,这. ]% Y( ?! R0 Z5 [" L, {: Y5 i; b" X
是就会用到文件查找 find 命令了,器格式如下:
4 ?3 @; l- M$ r  kfind [路径][参数][关键字]1 E% D/ P7 R9 t: l: j% v3 Y6 E
路径标识要从哪个目录下开始查找文件,如果不写默认从执行 find 的当前目录下开始查找。# C* u  z: j3 T2 h% S
参数说明如下:
# H. {# l8 T0 K; F+ B9 C, Z% V/ T-name 按照文件名称查找,查找与 filename 匹配的文件( R* R6 O" B3 k' W! P
-depth 从指定目录下的最深层的子目录开始查找$ I+ p& M2 ?: `0 L; d
-size<文件大小> 查找符合指定文件大小的文件  _3 W/ J& o: B7 O1 W/ }3 @
-type<文件类型> 查找符合指定文件类型的文件2 ^4 m. {7 Z6 U8 g  C+ F3 O
-user<拥有者> 查找符合指定的拥有者的文件或目录
4 d# C) e- [, o$ H( t; {7 Z- ~5 p-gid<群组识别码> 查找符合指定的群组识别码的文件或目录
  W, Z0 B, k& H5 X, ^-group<群组名称> 查找符合指定的群组名称的文件或目录
7 s& X/ _" A; m该命令的参数有很多,我们这里只是列举除了一些常用的。我们来使用 find 命令查找一下在目录“/etc”
9 g- \3 O+ T. x' b/ a  H3 m: H下以“host”开头的文件,我们在终端输入“find /etc -name host*”命令,运行结果如下图所示:) k. t) b* r( u* K/ X( D+ L

& p5 J* ?& u+ O# ~( U! ^! l从上图中我们可以看到在“/etc”目录下,以“host”关键字开头的文件全部查找出来了。
3 q' @1 H9 g" G- n  w' h) t6 ~文本搜索命令  grep7 b) R  b" h  S  \
有时候我们需要搜索出包含特定关键字的文件有哪些,这样就会用到 grep 这个命令,命令格式如下:
# a( Z' e# L# @grep [参数] 关键字 文件列表
: Z4 D1 \1 a! j7 M- `参数说明如下:! E# _8 o/ N4 P3 V2 p* H4 M* o+ K
-b //在显示符合关键字的那一列前,标记处该列第 1 个字符的位编号3 o# q. R$ i7 I) g; K' r: b
-a //不要忽略二进制的数据
5 Z5 X+ v( ]" m/ H: {! K-c //计算符合范本样式的列表
, D# }, [% G. `& N+ F) R- k-i //忽略字符的大小写
: Q7 ]* \/ Y# ~3 N-n //在显示符合样本范式的那一列前面,标出该列的列数编号# p" {' r# I4 p, e  N. U
-r //在指定目录中递归查找8 y  N3 s4 b( {9 O0 T  X$ e
-v //反转查找,只显示不匹配的行; w, O; K4 I: ]) h( R8 i+ @% X( V
比如我们在“/etc”下递归查找包含字符“topeet”的文本,运行结果如下图所示:‘
: U7 y7 E+ a& S8 K3 o; i' S$ ] ' f. k! d2 R! M' `7 c' o' E
  • TA的每日心情
    慵懒
    2022-12-26 15:28
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-5-18 15:44 | 只看该作者
    学习了,谢谢楼主分享
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-3 11:25 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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