Chapter 2. 文件系统
2.1 Linux 系统目录结构
命令窗口下输入命令: $ ls /
,能够看到根目录下的全部目录及文件
树状目录结构为:
最*的目录:
- / :根目录
/
是根目录,~
是家目录。Linux 的目录结构为树状结构,源头即是/
,其他目录可通过挂载将它们添加到树中,解除挂载可以移除它们。而每个用户都有其家目录。比如说root用户的家目录是/root
,普通用户a的家目录是/home/a
。
系统启动必须:
/boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。
/etc:存放所有的系统需要的配置文件和子目录列表,更改目录下的文件可能会导致系统不能启动。
/lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中
指令集合:
/bin:存放着最常用的程序和指令
/sbin:只有系统管理员能使用的程序和指令。
外部文件管理:
/dev :Device(设备)的缩写, 存放的是Linux的外部设备。注意:在Linux中访问设备和访问文件的方式是相同的。
/media:类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。
/mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
临时文件:
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
/lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
/tmp:这个目录是用来存放一些临时文件的。
账户:
-
/root:系统管理员的用户主目录。
/home:用户的主目录,以用户的账号命名的。
/usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin:系统用户使用的应用程序与指令。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。
运行过程中要用:
/var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
/proc:管理内存空间!虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。
扩展用的:
- /opt:默认是空的,我们安装额外软件可以放在这个里面。
- /srv:存放服务启动后需要提取的数据(不用服务器就是空)
- /boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。
- /etc:存放所有的系统需要的配置文件和子目录列表,更改目录下的文件可能会导致系统不能启动。
- /lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
- /sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中
2.2 文件与目录管理
特殊目录:
-
.
:代表当前的目录,也可使用./
表示。 -
..
:代表上一层目录,也可使用../
表示。
两种路径:
- 绝对路径:由根目录
/
写起。eg:/usr/share/doc
- 相对路径:不是由
/
写起。
2.2.1 处理目录的常用命令
-
ls
(list files,列出目录或文件名)参数:
-
-a
:列出全部文件(包括开头为.
的隐藏文件) -
-l
:长数据(包含文件属性、权限等)详细地列出文件
-
cd
(change directory,切换目录)-
mkdir
(make directory,创建一个新的目录)参数:
-
-m
:配置文件的权限 -
-p
:直接将所需要的目录递归地进行创建
#在家目录中创建myfile
$ mkdir myfile
#注意,不能直接 $ mkdir yourfile/here/cur 这样多层创建(会报错!),必须使用-p参数
$ mkdir -p yourfile/here/cur
#使用绝对路径进入here文件夹
$ cd ~/yourfile/here
#返回上一级目录
$ cd ..
#使用相对路径进入cur文件夹
$ cd ./here/cur -
-
pwd
(print work directory,显示当前所在的绝对目录路径)参数:
-
-P
:注意,是大写!显示出正确的完整路径,而非使用连结(link)路径
一般情况下,搭配
-P
选项使用 -
-
cp
(copy file,复制文件或目录)语法为:
$ cp 参数 源文档 目标文档
选项及参数
-
-i
:若目标文档已经存在,在覆盖时会先询问是否覆盖 -
-p
:(备份常用)连同文件的属性一同复制过去,而非使用默认属性 -
-r
:(常用于目录的复制)递归持续复制 -
-s
:(捷径文件)复制成为符号连结当(Symbolic link) -
-u
:若目标文档已存在,且源文档较新,才会升级(update)
$ cp -ir ~/yourfile /tmp/newfile
-
-
rm
(remove,移除文件)默认情况下,只能删除文件。
有选项及参数:
-
-r
:递归删除,用于目录的删除(较危险)
-
-
mv
(move file,移动文件与目录,或修改名称)与
cp
指令大致相同的用法。
2.2.2 文件查看命令
-
cat
(由第一行开始显示文件内容)选项与参数:
-
-b
:列出行号(空白行不标行号) -
-v
:列出一些看不出的特殊字符
cat >> 文件名
:以系统默认的文件属性作为新文件的属性,并接受键盘输入作为文件的内容。输入结束时按Ctrl+d退出并保存文件。 -
tac
(从最后一行开始显示文件内容,与cat
命令相反)-
less
(一页一页地翻动查看)可输入的命令:
- bankspace:向下翻动一页
-
/子串
:向下搜寻"子串" -
?子串
:向上搜寻“子串” - n:重复前一个搜寻
- q:离开
less
这个程序
-
head
(取出文件前面几行)语法为:
$ head [-n number] 文件名
#-n 后面接的是数字,代表显示几行tail
(取出文件后面几行),与上同理 -
wc
(word count,计算字数)语法为:
$ wc [-clw][--help][--version][文件名1 文件名2 ...]
参数有:
-
-c
:显示字符数 -
-w
:显示字数 -
-l
:显示行数 -
--help
:在线帮助 -
--version
:显示版本信息
$ wc testfile testfile_1 testfile_2 #统计三个文件的信息
3 92 598 testfile #第一个文件行数为3、单词数92、字节数598
9 18 78 testfile_1 #第二个文件的行数为9、单词数18、字节数78
3 6 32 testfile_2 #第三个文件的行数为3、单词数6、字节数32
15 116 708 总用量 #三个文件总共的行数为15、单词数116、字节数708 -
2.2.3 文件基本属性
Linux 系统对不同用户访问同一文件(包括目录文件)的权限做不同规定。
使用 ll
或 ls -l
命令可以显示一个文件的属性以及文件所属的用户和组,如:
每个文件的属性由左边第一部分的10个字符来确定:
从左至右用 0 - 9 这些数字来表示,第 0 位确定文件类型,第 1-3、4-6、7-9 位分别确定属主(该文件的所有者)、属组(所有者的同组用户)、其他用户 拥有该文件的权限。
-
第一个字符代表这个文件是目录、文件或链接文件等等:
-
d
:**目录 ** -
-
:文件 -
l
:链接文档(link file) -
b
:装置文件里面的可供储存的接口设备(可随机存取装置) -
c
:装置文件里面的串行端口设备(如键盘、鼠标)
-
接下来是以三个为一组,且均为
rwx
的三个参数的组合,其中,r
代表可读、w
代表可写、x
代表可执行。若没有权限,就出现减号-
。
更改文件属性的指令:
-
chgrp
:更改文件属组。$ chgrp [-R] 属组名 文件名
参数
-R
,递归更改文件属组(即该目录下的所有文件的属组都会更改) -
chown
:更改文件属主,也可以同时更改文件属组。$ chown [-R] 属主名 文件名
$ chown [-R] 属主名:属主名 文件名$ chown Ben install.log
#将install.log的拥有者改为bin这个账号
$ chown Mygroup install.log
#将install.log的属组改为Mygroup
$ chown root:root install.log
#将install.log的拥有者与群组改为root -
chmod
:更改文件9个属性该指令有两种方式修改属性,一种是通过权限分数进行累加(类似二进制),另一种是通过符号类型改变文件权限,接下来就演示该方法。
使用
u
,g
,o
来表示三种身份的权限,此外a
可代表全部身份。然后使用下表的方式来进行修改:$ chmod u+wrx,g=wx,o-r mynewfile
#注意,','号间不能加空格!!
$ chmod g=rx,u=wrx,o=r mynewfile