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

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

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
操作系统的主要功能之一就是文件的管理。文件管理是由文件系统来实现的,Linux 系统支持多种格式
3 S) {# K- {/ ~$ e2 \& O的文件系统,本届我们主要讲解下文件系统的类型,以及文件操作的一些常用命令。; M# g8 J6 b5 W' f* z2 n3 P
2.8.1 Linux  文件系统类型
7 ~2 s; K6 P+ m( u' D& [我们在使用 Windows 系统的时候,有时会对硬盘,U 盘等的存储设备进行格式化,在格式化的时候会要求
0 W* ]8 B- t# ]1 e# ^# _4 z2 `我们选择文件系统的类型,比如:exFAT、FAT32、NTFS,同样 Linux 系统也支持各种不同类型的文件系统,: L- C  l. u, ^7 L  Y6 M7 ^
比如:ext2、ext3、ext4、yaffs、FAT32、NTFS 等。这里我们主要讲解下几种常用的文件系统。$ `6 K/ s. X" x2 x2 E4 o" ~
FAT32  文件系统:
% L1 y: h8 A% Y) [! kFAT32 指的是文件分配表是采用 32 位二进制数记录管理的磁盘文件管理方式,因 FAT 类文件系统的核心是: C5 i5 `% T1 C* U/ N+ `6 h
文件分配表,命名由此得来。FAT32 是从 FAT 和 FAT16 发展而来的,优点是稳定性和兼容性好,能充分兼容! {7 h: b1 X( p: `4 E; J8 c
Win 9X 及以前版本,且维护方便。缺点是安全性差,且最大只能支持 32GB 分区,单个文件也只能支持最大
  I0 G$ U  z' M6 q1 |* F9 V4GB。) [( g& v( P$ D* L
3 ext3  文件系统
, [7 Z5 I4 J0 b8 L8 AEXT3 是第三代扩展文件系统(英语:Third extended filesystem,缩写为 ext3),是一个日志文件系统,
3 |5 r. c' l& B3 H3 g常用于 Linux 操作系统。它是很多 Linux 发行版的默认文件系统。Stephen Tweedie 在 1999 年 2 月的内核
7 {- q: i2 f% c" Z邮件列表中,最早显示了他使用扩展的 ext2,该文件系统从 2.4.15 版本的内核开始,合并到内核主线中。; l5 w" a7 \: {: E
ext4  文件系统
- |% ]9 C& q1 n5 |  L4 W! P4 A4 EXT4 是第四代扩展文件系统(英语:Fourth extended filesystem,缩写为 ext4)是 Linux 系统下的日志
$ v7 V2 z4 Z! Q. \0 J( |; D文件系统,是 ext3 文件系统的后继版本。Ext4 是由 Ext3 的维护者 Theodore Tso 领导的开发团队实现的,
( x: E: T; F! `/ o7 s( p并引入到 Linux2.6.19 内核中。Ext4 产生原因是开发人员在 Ext3 中加入了新的高级功能。
! U7 S4 W' m- N- g- K; E上面几种文件系统是我们在 Linux 下经常使用的,那么我们安装的 Ubuntu 系统下的文件系统使用的是哪种
, f& C/ q/ u  [8 X2 ^. A# D2 w格式的呢?我们可以在终端输入“df -T”命令来查看下,如下图所示:1 d4 ~; ~! s  e8 x- C- C) N& s, K

' M) M' w3 _- ], P从上图红色方框的文件就是我们安装 Ubuntu 的磁盘,在 Linux 下一切皆为文件,“/dev/sda1”就是我
& j) C+ z* D/ w们的磁盘分区,可以看到他的类型是 ext4。我们在 Windows 系统下有 C、D、E 盘这样的概念,但是通过上2 y) A/ F8 e& i: ]
面的命令我们可以看到 Linux 下对磁盘的管理与 Windows 是不一样的,没有 C、D、E 盘这样的概念。Linux7 y$ U( y2 s+ Q
系统只有一个跟目录“/”,我们可以在 Ubuntu 的桌面打开“文件”应用,我们可以看到打开的文件路径
6 Y/ g6 q' S3 U: n! ^- j并不是在根目录下,这是因为 Ubuntu 是支持多用户的,会为每个用户分配一个根目录,比如我的 Ubuntu, y" P2 {3 ~% I4 W0 A2 d2 R7 k9 P
登录的用户是 topeet,那么默认进入的就是 topeet 用户的根目录“home”,如下图所示:
; y0 X7 Z& i" D0 H/ u$ E ( C5 f7 C" k8 W$ {5 y0 x% b
我们在上图中点击左侧的“计算机”,如下图所示:
& s/ ]8 w! N) d" \$ Y% w 1 m, B; N: N/ i9 R
上图就是 UBuntu 的根目录,那么前面我们的说的 Ubuntu 会为每一个用户创建一个根目录,那么这个根目( m/ M& P' \; b  M! g9 t; J9 u1 y
录具体位置在哪里呢?我们在创建用户的时候,Ubuntu 同时会在“/home”目录下创建与应户名同名的文
3 B5 @& H4 {: p2 \件夹,这个文件夹就是用户的根目录,比如我这里登陆的用户名是 topeet,那么 topeet 用户对应的用户根" z: q- W' t+ ~
目录就是“/home/topeet”这个目录。用户可以对自己用户根目录下的文件进行任意的读写操作。我们可, _' n5 P! k0 g+ h
以打开终端使用“cd /”命令,进入到系统根目录下,然后在输入“ls”命令,产看下系统根目录下都有哪
5 c  c3 c. @! x* Q# U  s, L% F# A些文件,如下图所示:! y+ c2 c, g+ p& p

8 ?" w6 `8 r6 s' r从上图可以看到系统根目录下都有哪些文件夹,我们来看下这些文件夹的具体功能:& {2 R7 I. T2 Q7 R( j  C
/bin 存储一些二进制可执行命令文件
% J8 T2 t; p# K+ ?5 T; O/boot 存放 Ubuntu 系统内核和系统启动文件
, O& @3 g0 y5 |2 Y9 _/dev 存放设备节点
: E3 b' X) V( |5 H, M- _+ B( L6 f/etc 存放系统管理所需的配置文件" O# S: g1 ]8 w+ T1 j  b7 j- f
/home 普通用户默认目录,每个用户在改目录下都有一个以本用户名命名的文件夹
" a- |- }* f3 J% f, l/lib /lib64 存放系统程序运行所需的库文件  a4 W3 L* y' k
/media 存放 Ubuntu 系统自动挂载的设备文件
' j" g' J6 l+ c5 r/mnt 用于挂载的文件系统的挂载点  {, q5 f7 h- A; @8 k* V4 ]
/opt 可选文件和程序的存放目录) h5 [/ G( J6 b$ y$ R/ D" O9 C/ J
/proc 通常用来保存系统信息和进程信息
0 g+ R, d* i/ b+ O- \& R/root 超级用户 root 的根目录文件  I8 X" n2 ?1 A
/sys 系统设备和文件层次结构,并向用户程序提供详细的内核数据信息
8 d+ c- Q( @$ S$ E6 W/tmp 存储系统和用户的临时文件4 c" [+ L2 b8 @3 |- {: S# x
/usr 包括与系统用户直接有关的文件和目录
+ I( V, W# _) b/ v) _+ C/var 存储一些不断变化的文件,比如日志文件" N" o6 S: R# E! s% L/ M
2.8.2  文件操作命令7 X8 `2 @9 l& @& P: u: h# l( Z; r4 o- r
创建文件命令 touch% s; Y$ G" @/ r7 R" B) M
我们在前面学习 vim 的时候,可以通过 vim 来创建一个文本文件,“touch”不仅可以用来创建文本文件,- v& K0 V6 m& D" K% ~
还可以创建其它类型的文件,命令格式如下:7 q! }1 S( n- e+ o4 b% Z* i+ c
touch [参数] [文件名]
$ U. N7 w7 `/ r# K" P) P参数说明:
2 P. A( a) y) R" ^7 |-a 只更改存取时间9 [! K& n9 n5 U8 w. H% U
-c 不建立任何文件
9 B' k; q8 e- X$ [( N-d<日期> 使用指定的日期创建文件# `; [/ s/ V  o" ?3 X5 J9 F
-t<时间> 使用指定的时间创建文件( c1 a& W9 U. |$ t& _
当我们使用“touch”命令创建文件的时候,如果创建的文件不存在,则会直接创建,如果创建的文件
5 }. S, t: y: X# l已经存在,则会修改下文件的最后修改日期(修改成运行该命令时候的系统日期)。现在我们使用命令“cd
2 O7 Z* Z' f% G4 E1 a2 _+ q~”进入到用户的根目录下,然后使用“touch”命令创建一个名为 ceshi 的文件,运行结果如下图所示:8 a# N- M  q. j  Z3 q+ S* b

, l5 x2 `6 h' o1 \; g: |文件夹创建命令 mkdir
. P- b$ m. L8 d- xmkdir 是用来创建文件夹的命令,在使用该命令的时候,要求当前用户在当前的目录下具有写权限,并且创( N; ]; ~: l7 @8 c: n! C5 ^
建的文件夹名称不能是当前目录中又有的目录,命令格式如下:& C, d2 }# W) o8 l
mkdir [选项] 目录..." s% D* U6 s: J1 Y1 ?
选项的说明如下:
5 C. k8 ~! S5 ]& |% m4 }-m //设定权限<模式>(类似 chmod)
( ^3 }4 \4 u! o. K7 q5 S. s-p //可以是一个路径命令,如果路径中的目录不存在,则依次创建他们
, ?7 V" ~6 N! m5 P) j5 f$ X-v //每次创建新目录都显示信息+ h% V  G% X5 S; Q6 Y  M; S
--help //显示帮助信息
; S8 F% y. Y2 v! M$ Y+ R  R--version //输出版本信息
  K& F& ^! [+ Z0 K; d0 e% M我们可以使用 mkdir 创建一个名为“test”的文件夹,我们在终端运行命令“mkdir test”,运行结果如下图
! I: U, G+ x+ d& g所示:
4 _5 H6 o, w; A* E " o2 l& L1 n" Z
文件删除命令 rm8 @( Q, I" f8 z$ l, P3 f) \
rm 命令可以删除文件和文件夹,在使用该命令的时候,要求当前用户在当前的目录下具有写权限,命令格) |  J  Z  K  C' L
式如下:
8 T7 ~$ V  M' }/ hrm [选项]... 目录...
. f( u: n( S! |9 ]; f7 T) f; v选项的说明如下:
4 A3 ^& T$ I2 C1 Y# U. S: T-d //删除可能仍有数据的目录(只限超级用户 root)1 l% _9 Y7 ^4 V$ l! Y5 _- C
-f //略过不存在的文件,不显示任何信息
. O, q: o( c1 ^5 s) k-i //进行任何删除操作前,必须先确认
+ D; I1 T* w5 B( S- j0 X2 t5 q3 O-r //同时删除该目录下的所有目录层) B& ^+ U0 ~4 f' R$ \5 [* d
-v //详细显示进行的步骤
. l1 @$ p% r: Z--help //显示帮助信息并退出
7 f! s+ n5 b0 B# \- A--version //显示版本信息并退出
2 \4 x  d$ {- X我们使用“rm”命令删除前面创建的文件“ceshi”,我们在终端输入“rm ceshi”,然后回车就可以删$ x9 i0 f2 z5 D0 m
掉文件“ceshi”了,运行结果如下图所示:
3 f6 z$ m+ z( V7 m8 R& S
: j' `6 z& a  ~& H; J“rm”命令也可以删除文件夹,我们删除前面创建的 test 目录,我们在终端执行“rm -RF test”,运行结果8 {! p& _0 r. |  {
如下图所示:  E& f1 t9 Y, {7 a/ M

3 v. k- p6 h, f. z, q文件复制命令 cp3 }  P1 ~) y, G9 \0 S
Linux 下文件复制的命令是“cp”,命令格式如下:5 J( \! o6 a4 ^8 H
cp [参数] [源文件] [目标文件]; e3 t6 @1 a8 d- i1 R, ]! o" ?7 c
参数的说明如下:
$ d3 {' Q! ^' \2 x-d //复制有符号连接的文件时,保留原始的连接
2 N, q: s" y4 X# s-f //强行复制文件,不管要复制的文件是否已经存在于目标目录! E% Q2 u* v8 Q& e( i* H
-r //递归处理,将指定目录下的文件及子目录一并处理; B7 ~) C2 d4 Y  X( D
我们在用户跟目录下使用 mkdir 命令创建两个文件夹:ceshi1、ceshi2,如下图所示:3 G2 E" [9 P/ \8 C3 v

; B! `, S0 {2 q3 u. D然后进入“ceshi1”文件夹,在 ceshi1 文件夹创建 a 文件,如下图所示:; g. {/ k" J5 `5 i: Y9 o" z% c
0 S) x' N+ V- r
我们将文件 a 复制到用户根目录下的 ceshi2 文件夹,运行结果如下图所示:. Q. f6 c& r2 c+ ^! h. z* V+ U; A
$ D1 _9 O0 w5 t: m6 m' C! t
完成文件的复制,接下来我们来实现文件夹的复制,首先我们返回到用户根目录下,然后将 ceshi1 文件夹
1 e, M8 l9 Q$ }5 Q' d复制到 ceshi2 文件夹,运行结果如下图所示:  Y( L$ A" X4 l) o7 ~
9 N; ]* p; H' D. _
移动文件命令 mv
4 v3 v" E$ v' T7 x7 g2 y1 LLinux 下文件移动的命令是 mv,命令格式如下:
- P7 e; k; y# {. Smv [参数] [源文件] [目标文件]
7 h) M" }( X: b" o% e; D参数说明:
1 T/ a: V3 W7 v9 r7 C# x3 S4 S/ e-b //如果要覆盖文件的话覆盖前先进行备份
/ \3 Q! b' S- B  ]-f //若目标文件或目录与现在的文件重复,直接覆盖目的文件或目录
" y3 a$ _4 r7 \: H& |+ ~-i //若目标文件存在,则会询问是否覆盖; N: D" a0 [* ~3 ^. R
-u //若目标文件已经存在,且源文件比较新,则会更新
1 |6 d& e! c3 y) Q' G# G我们在前面创建了两个文件夹:ceshi1、ceshi2,在 ceshi1 文件夹创建了文件 a,我们将文件 a 重命名成文3 x3 T! x' a- F% g  b4 N
件 b,然后将文件 b 移动到 ceshi2 文件夹,运行结果如下图所示:
8 r3 s9 _! ?; k7 V: G + L& l, Z. {& m' d, ?
文件接压缩命令 tar( e# O, e0 U/ G0 Q, d) M1 J
Linux 下常用的压缩包格式有两种:.bz2 和.gz。我们可以使用 tar 命令来解压或压缩这两种格式的压缩包,$ A( n4 @( |0 N
命令格式如下:% N; f2 F+ Z: s) N
tar [必要参数] [选择参数] [文件]
! @1 S4 T0 f6 Y必要参数说明如下:
& e3 D" p1 d8 d) a+ e# c-A //新增压缩文件到已存在的压缩0 S4 ^0 j2 _% R$ s+ ^4 }1 @3 F
-B //设置区块大小# _+ w8 I; Y+ }) T2 M
-c //建立新的压缩文件
, c/ Y1 E5 T; a4 a/ h& z4 _7 h4 |-d //记录文件的差别
+ ]8 M% f& ~# e9 Q" S: r" s- m' W-r //添加文件到已经压缩的文件( \; w- Z; R+ e5 F+ v! K
-u //添加改变了和现有的文件到已经存在的压缩文件
# `3 p) s% W, V- I-x //从压缩的文件中提取文件, f; S# w4 L" p# @  Y/ ?! w
-t //显示压缩文件的内容' F3 p0 ^" x0 P0 W; h) P
-z //支持 gzip 解压文件
' h& N; [# X* {4 h' n-J //支持 bzip2 解压文件
1 ~& y9 Q  ^% X( v& l-Z //支持 compress 解压文件- U# u: `. E! g& G) z
-v //显示操作过程
+ o5 |0 \' P1 N6 k" J5 p) `$ S-k //保留原有文件不覆盖
; p* _% P' l: j  d' v0 s1 Y; Y-m //保留文件不被覆盖; s% @$ l( Y2 M: }
-W //确认压缩文件的正确性
% F/ X* X5 U# E% ]6 u4 R9 d可选参数如下:
. t  [! V4 p' V1 `5 W5 u& P-b //设置区块数目
2 q; d% j' _7 S  K8 _& b4 L! j-C //切换到指定目录# S: T' |- S4 s+ B6 J1 o8 `
-f //指定压缩文件
. n- I) _. k; t: E. X( ?--help //显示帮助信息( r; o5 v. z4 Q+ o
--version //显示版本信息: l9 E0 J: Y7 T& w3 K6 R: T8 x  s% j
我们使用 tar 命令压缩生成.bz2 和.gz 压缩包,运行结果如下图所示:+ G: _- h$ y; n+ u8 U, ^* ^

3 V* n( B: V4 R  _/ B: D8 b在上图中我们分别压缩了.bz2 和.gz 两个格式的压缩包,其中压缩.bz2 格式的压缩包我们使用的参数
7 E: \3 {1 ^! @$ }% P  \" l是-jcvf,而.gz 格式的压缩包使用的参数是-zcvf。下面在我们在来学习下 tar 解压文件,操作如下图所示:6 s' k/ \; d1 f
4 S, K. P, v% V* {1 `. i4 e3 v
在上图中,我们分别解压了.tar.bz2 和.gz 两种格式的压缩包。其中.tar.bz2 压缩包使用的-jxvf 参* F% Y: i" c6 t; r2 S6 D1 L
数来解压的,而.gz 格式的压缩包使用-zxvf 参数来解压的。关于 tar 的命令我们就介绍到这里,更多详细
3 j' Z% I1 o! `0 X7 [$ i  e的用法大家可以去网上找下相关的文档。. a! i& m% t0 R2 [, ^" [3 z
文件查找命令  find5 A4 S. h4 Q* I: y+ P
文件查找在我们的平常使用中也是很常见的,比如在 Linux 内核源码中,我们要查找某个文件的路径,这5 d8 n8 C- K  {! T- X# n
是就会用到文件查找 find 命令了,器格式如下:
5 M2 f: T  m7 F4 r& mfind [路径][参数][关键字]/ |2 j: p4 B4 v. d# i$ T3 [) C
路径标识要从哪个目录下开始查找文件,如果不写默认从执行 find 的当前目录下开始查找。( P0 x6 p/ B8 `% S# Q% ^3 ?( d# G
参数说明如下:, m3 d1 l+ g, r) s6 b# |
-name 按照文件名称查找,查找与 filename 匹配的文件
. f% c" R" H6 Y' l1 w-depth 从指定目录下的最深层的子目录开始查找% N8 b8 S) `$ U2 Q* M
-size<文件大小> 查找符合指定文件大小的文件
3 t. Q0 O) i) J5 g1 M; ^$ \: [-type<文件类型> 查找符合指定文件类型的文件/ ^: l, x$ G  y# v# V  }
-user<拥有者> 查找符合指定的拥有者的文件或目录
5 z6 ]. ^$ N) K1 ^) M9 X4 w6 K-gid<群组识别码> 查找符合指定的群组识别码的文件或目录! `; F1 }& J( t
-group<群组名称> 查找符合指定的群组名称的文件或目录
) i* L  C$ g1 a  T该命令的参数有很多,我们这里只是列举除了一些常用的。我们来使用 find 命令查找一下在目录“/etc”
& L! Y$ }6 c! a- H+ e$ p下以“host”开头的文件,我们在终端输入“find /etc -name host*”命令,运行结果如下图所示:+ W& m  b3 `7 Q4 H
  n# C9 W- g; `0 ~* Z5 R7 V
从上图中我们可以看到在“/etc”目录下,以“host”关键字开头的文件全部查找出来了。5 q3 P) z( k$ K/ F' C
文本搜索命令  grep" g3 I$ x7 t/ [; g, N
有时候我们需要搜索出包含特定关键字的文件有哪些,这样就会用到 grep 这个命令,命令格式如下:
: z$ y. c/ d# ^* o) x2 z/ D  `$ Zgrep [参数] 关键字 文件列表: o/ ^( [% W7 \; U7 d/ D* j( w) U
参数说明如下:
+ @2 K5 I9 d; d. c0 q* ^0 t-b //在显示符合关键字的那一列前,标记处该列第 1 个字符的位编号
+ p4 T0 R) _- j& u' H-a //不要忽略二进制的数据2 m" |$ h/ ]$ Y' y1 q  D( J( f
-c //计算符合范本样式的列表
1 J( e4 J' {4 n1 `-i //忽略字符的大小写
" r! D; D8 b6 {3 K5 M-n //在显示符合样本范式的那一列前面,标出该列的列数编号* l- D# R# u  H* T7 m
-r //在指定目录中递归查找! x0 z3 T* k% O5 `( r
-v //反转查找,只显示不匹配的行& |  l2 X3 v" H, T3 G
比如我们在“/etc”下递归查找包含字符“topeet”的文本,运行结果如下图所示:‘  j5 w7 x" H1 e
/ T+ Z! |* M3 t) ^: v
  • TA的每日心情
    慵懒
    2022-12-26 15:28
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-26 03:24 , Processed in 0.187500 second(s), 27 queries , Gzip On.

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

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

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