Linux文件系统基础
linux文件系统的特点
- Linux文件系统采用树形结构,从根目录root(/)开始。
- Linux的虚拟文件系统允许众多不同类型的文件系统共存,并支持跨文件系统的操作。
- Linux的文件是无结构字符流式文件,不考虑文件内部的逻辑结构,只把文件简单地看作是一系列字符的序列。
- Linux的文件可由文件拥有者或超级用户设置相应的访问权限而收到保护。
Linux把所有的外部设备都看作文件,可以使用与文件系统相同的系统调用来读写外部设备。
Linux文件系统的组成
/:是所有文件的根目录;
- /bin:存放二进制可执行命令目录;
- /home:用户主目录的基点目录,默认情况每个用户主目录都设在该目录下,如默认情况下用户user01的主目录是/home/user01;
- /lib:存放标准程序设计库目录,又叫动态链接共享库目录,目录中文件类似windows里的后缀名为dll的文件;
- /etc:存放系统管理和配置文件目录;
- /dev:存放设备特殊文件目录,如声卡文件,磁盘文件等;
- /usr:最庞大的目录,存放应用程序和文件目录;
- /proc:虚拟目录,是系统内存的映射,可直接访问这个目录来获取系统信息;
- /root:系统管理员的主目录;
- /var:存放系统产生的经常变化文件的目录,例如打印机、邮件等假脱机目录、日志文件、格式化后的手册页以及一些应用程序的数据文件等;
- /tmp:存放公用临时文件目录。
Linux文件系统操作
1、文件系统的基本概念
文件是由创建者定义的,具有文件名的一组相关元素的集合,文件可以是文本文档、图片、程序等。
Linux系统下文件名长度根据不同类型文件系统有所不同,为文件取名必须遵守以下规则:
- 除“/”外,所有字符都可以使用;
- 转义字符最好不用,如“?”,“*”(星号),“”(空格),“$”,“&”;
- 避免使用“+”,“-”或“.”作为普通文件名的第一个字符(在Linux下以“.”开头的文件都是隐藏文件)
- 分大小写
2、Linux系统下的通配符和快捷操作
- *(星号):通配符,代表任意字符(0到多个)
:注释
- \:转义符号,将特殊字符或通配符还原成一般符号
- |:分割两个管线命令的界定
- ;(分号):连续性命令的界定
- ~:用户的根目录
- $:变量前需要加的变量值
- !(感叹号):逻辑运算中的“非”
- /:路径分割符号
,>>:都是输出导向,分别为“取代”和“累加”
- ‘(单引号):不具有变量置换功能
- “(双引号):具有变量置换功能
:quote符号,两个
中间为可以先执行的指令- ()(括号):中间为子shell的起始与结束
- [](中括号):中间为字符组合
- {}(花括号):中间为命令区块组合
- Ctrl+C:终止当前命令
- Ctrl+D:输入结束
- Ctrl+M:相当于Enter
- Ctrl+S:暂停屏幕的输出
- Ctrl+Q:恢复屏幕的输出
- Ctrl+U:在提示符下,将整行命令删除
- Ctrl+Z:暂停当前命令
- &&:当该符号前一个指令执行成功时,执行后一个指令
-
3、文件操作命令
(1)显示文件命令
cat命令
格式:cat [选项] …[文件]…
- 说明:把多个文件连接后输出到屏幕显示,若加“>文件名”则输出到另一个文件中。
- 常用选项:
-b:从1开始对所有非空输出行进行编号
-n:从1开始对所有输出行编号
-s:将连续两行以上的空白行合并成一行空白行more命令
格式:more [选项] [文件]
说明:该命令显示文本文件的内容,一次显示一屏,满屏后停下来,可按如下键继续:
(1)Space键:默认显示文本的下一屏内容
(2)Enter键:默认显示文本的下一行内容
(3)d键或CTRL+D:向下显示文本半屏,默认为11行
(4)b键或CTRL+B:默认显示文本的上一屏内容
(5)q或INTERRUPT键:退出more命令
常用选项:
-num:指定一个整数,表示一屏显示多少行
-d:在每屏底部显示提示信息,包括当前显示的百分比,按键提示等
-c或-p:不滚屏,在显示下一屏之前先清屏
+num:从行号num开始显示
+/pattern:定义一字符串,在文件中查找该字符串,从该字符串后显示(如要在a.txt中查找字符串“abc”并从该字符串处显示,则命令为:more +/abc a.txt)
less命令
格式:less[选项] [文件]
说明:与more命令相似,分屏显示文件内容,less命令允许用户向前或向后浏览文件,按q键退出。
常用选项:
-i:搜索时忽略大小写,除非搜索串中包含大写字母
-I:搜索时忽略大小写
-m:显示读取文件的百分比
-M:显示读取文件的百分比、行号及总行数
-N:在每行前输出行号
-p pattern:定义一字符串,在文件中查找该字符串,从该字符串后开始显示(如要在a.txt中查找字符串“abc”并从该字符串处显示,则命令为:less -p abc a.txt)
[
](https://blog.csdn.net/a517865058/article/details/105009050)
head命令
格式:head [选项] …[文件]…
说明:用于查看一个文本文件的开头部分,行数由参数值决定,默认是10
常用选项:
-c:显示文件前面num个字节(如显示a.txt前面5个字节内容,命令为:head -c5 a.txt)
-n:显示文件前面num行,不指定此参数显示前10行(如显示a.txt前面5行内容,命令为:head -n5 a.txt)
[
](https://blog.csdn.net/a517865058/article/details/105009050)
tail命令
格式:tail [选项] …[文件]…
说明:用于查看一文本文件末尾若干行,行数由参数值决定,默认为10。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。
常用选项:
-c:显示文件最后面num个字节(如显示a.txt后5个字节内容,命令为:tail -c5 a.txt)
-n:显示文件最后面的num行,不指定此参数显示10行(如显示a.txt后5行内容,命令为:tail -n5 a.txt)
[
](https://blog.csdn.net/a517865058/article/details/105009050)
(2)搜索、排序及去掉重复行命令
grep命令
格式:grep [选项] 查找模式 [文件]
说明:grep家族包括grep、egrep和fgrep。egrep是grep的扩展,可使用扩展的字符串模式进行搜索,fgrep则是把所有字母看作单词,不识别正则表达式。如果没有指定文件名,grep命令会搜索标准输入
常用选项:
-b:在显示符合匹配字符串行前,标识该行第一个字符的位编号
-c:计算符合匹配字符串的行数
-E:将查找模式解释成扩展的正则表达式,相当于egrep
-F:将查找模式解释称单纯的字符串,相当于fgrep
-i:忽略字符大小写
-n:在现实包含匹配字符串的行之前,标示处该行的行号
-v:反转查找,显示不包含匹配字符串的文本行
-V:显示版本信息
-x:只显示全行都严格匹配的行
在grep命令中使用正则表达式可以是模式匹配加入一些规则,能够在抽取信息中加入更多选择
sort命令
格式:sort [选项] …[文件]…
说明:sort命令对指定文件中所有的行排序,将结果显示在标准输出上,如不指定输入文件或使用“-”,表示排序内容来自标准输入
缺省情况下以行为关键字按ASCII字符顺序进行排序
常用选项:
-m:若给定文件已排好序,合并文件
-c:检查给定文件是否排序,未排序打印出错信息,以状态值1退出
-u:对排序前后相同的行只留其中一行
-o:文件名:将排序输出写到输出文件中而不是标准输出
改变缺省排序规则的选项主要有:
-d:按字典顺序排序
-f:忽略字母大小写
-r:按逆序输出排序结果(默认排序输出是按升序的)
+pos1 - pos2:指定一个或几个字段作为排序关键字,字段位置从pos1开始到pos2为止(包括pos1,不包括pos2)。如不指定pos2,则关键字为从pos1到行尾,字段和字符的位置从0开始
[
](https://blog.csdn.net/a517865058/article/details/105009050)
uniq命令
- 格式:uniq [选项]… [输入文件[输出文件]]
- 说明:检查及删除文本文件中重复出现的行
- 常用选项:
-c:显示输出中,在每行行首加上本行在文件中出现的次数
-d:只显示文件中的各重复行
-u:只显示文件中不重复的各行(3)比较文件内容命令
comm命令
格式:comm [选项]… 文件1 文件2
说明:comm命令对两个已经排好序的文件进行比较,comm从文件1和文件2中读取正文行进行比较,生成3行输出:在两个文件中都出现的行,仅在文件1中出现的行,仅在文件2中出现的行
常用选项:
-123:选项1,2和3分别表示不显示comm输出的第一列、第二列和第三列
[
](https://blog.csdn.net/a517865058/article/details/105009050)
diff命令
- 格式:diff [选项]… 文件列表
- 说明:diff命令比较文本文件,并找出它们的不同
- 常用选项:
-b:忽略空格造成的不同
-B:忽略空行造成的不同
-i:忽略大小写的不同
-r:当比较的文件都是目录时,递归比较子目录中的文件
(4)复制、删除和移动文件的命令
cp命令
格式:cp [选项] 源文件或目录 目标文件或目录
说明:cp命令完成文件的复制。如果源是普通文件,该命令把源文件复制成指定的目标文件或复制到指定的目标目录中;如果源是目录,目标是一已经存在的目录,该命令把源目录下的所有文件和子目录都复制到目标目录中;如果源是目录,目标不是一已存在的目录,命令出现错误信息。
常用选项:
-a:等同于-dpR
-d:复制符号链接(即快捷方式文件)时,把目标文件或目录也建立为符号链接,并指向与源文件或目录链接的原始文件或目录
-f:强行复制文件或目录
-i:覆盖目标文件前需要确认
-n:不覆盖已存在的目标文件
-p:复制源文件或目录内容的同时也复制文件属性
-R或-r:递归复制目录,将源目录下所有文件及子目录都复制到目标位置
[
](https://blog.csdn.net/a517865058/article/details/105009050)
rm命令
- 格式:rm [选项] …文件或目录…
- 说明:rm命令可以删除文件或目录,删除目录必须要加“-r”选项
- 常用选项:
-f:强制删除文件或目录
-i:删除文件或目录前提示要用户确认
-r或-R:递归删除目录及其下属各级子目录和相应的文件
mv命令
格式:mv [选项] 源文件或目录 目标文件或目录
说明:mv命令可移动文件或目录;更改文件或目录的名称
常用选项:
-i:覆盖文件前需要确认
-f:若目标文件或目录已存在,直接覆盖
-n:不覆盖已存在的文件
-u: 移动或更改文件名时,若目标文件已存在,且文件日期比源文件新,则不覆盖目标文件
[
](https://blog.csdn.net/a517865058/article/details/105009050)
(5)文件内容统计命令
wc命令
- 格式:wc [选项] …[文件]…
- 说明:wc命令统计给定文件中的字节数、字数、行数
- 常用选项:
-c或–bytes:统计字节数
-m或–chars:统计字符数
-l或–lines:统计行数
-w或–words:统计字数
查找文件和目录文件
find命令
格式:find [路径名…] [表达式]
说明:find命令用于查找符合条件的文件和目录,路径名是用空各隔开的要搜索文件的目录名清单,表达式包含要寻找的文件的匹配规范或说明。表达式是从左向右求值的,只要表达式中的测试结果为真,则进行下一个测试
常用表达式:
-amin n:查找系统中最后n分钟曾被访问过的文件或目录
-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录
-atime n:查找系统中最后n24小时被访问过的文件或目录
-cmin n:找系统中最后n分钟被更改的文件或目录
-cnewer<参考文件或目录> 查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录
-ctime n:查找系统中最后n24小时被改变状态的文件
-depth:从指定目录下最深层的子目录开始查找
-daystart:从本日开始计算时间
-exec<执行指令>:假设find指令的回传值为True,就执行该指令
-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录
-gid<群组识别码>:查找符合指定群组识别码的文件或目录
-group<群组名称>:查找符合指定之群组名称的文件或目录
-inum
-mmin n:查找在n分钟内曾被更改过的文件或目录
-mtime n:查找在n天内曾被更改过的文件或目录
-name<范本样式>:指定字符串作为寻找文件或目录的范本样式
-path<范本样式>:指定字符串作为寻找目录的范本样式
-perm<权限数值>:查找符合指定的权限数值的文件或目录
-print:假设find指令的回传值为True,就将文件或目录名称列出到标准输出,格式为每列一个名称。
-prune:不寻找字符串作为寻找文件或目录的范本样式
-size<文件大小>:查找符合指定的文件大小的文件
-type<文件类型>:只寻找符合指定的文件类型的文件(b-块设备文件;d-目录;c-字符设备文件;p-管道文件;l-符号链接文件;f-普通文件)
-uid<用户识别码>:查找符合指定的用户识别码的文件或目录
-user<拥有者名称>:查找符合指定的拥有者名称的文件或目录
[
](https://blog.csdn.net/a517865058/article/details/105009050)
(7)文件的压缩和备份
bzip2命令
格式:bzip2 [选项] [要压缩的文件]
说明:.bz2文件的压缩程序,并删除原始的文件
常用选项:
-c:将压缩或解压缩的结果送到标准输出
-d:执行解压缩
-f:压缩或解压缩时,若输出文件与现有文件同名,覆盖现有文件
-k:bzip2在压缩或解压缩后,保留原始文件
gzip命令
格式:gzip [选项] [文件…]
说明:gzip压缩会产生后缀为“.gz”的压缩文件,并删除原始文件
常用选项:
-c:压缩后文件输出到标准输出设备,不改变原始文件
-d:解开压缩文件
-f:强行压缩文件
-n:压缩文件时,不保存原来的文件名称及时间戳记
-N:压缩文件时,保存原来的文件名称及时间戳记
-r:递归处理,将指定目录下的所有文件及子目录一并处理
tar(tape archive)命令
格式:tar [选项…] [文件或目录]…
说明:tar是用来建立、还原文件的工具程序,它可以加入、解开备份文件内的文件
常用选项:
-A:新增tar文件到已存在的备份文件
-c:建立新的备份文件
-f<备份文件>:列出备份文件的内容
-v:显示指令执行过程
-x:从备份文件中还原文件
–delete:从备份文件中删除指定的文件
例如(这个有些不好理解,举个例子):
将当前目录下的文件1.txt、2.txt、3.txt备份到文件123.tar中,并显示备份指令执行过程,命令为:tar -cvf 123.tar 1.txt 2.txt 3.txt,执行结果如下,用命令ls -l可以看到生成了备份文件123.tar
将123.tar备份文件进行还原,先删除1.txt、2.txt、3.txt,然后使用命令tar -xvf 123.tar进行还原,用ls -l的命令可以看到123.tar被还原成了1.txt、2.txt、3.txt,执行结果如下:
4、目录操作命令
(1)切换工作目录和显示目录内容的命令
cd命令
- 格式:cd [目的目录]
说明:切换目录至目的目录,前提是用户必须拥有进入目的目录的权限。其中目的目录可为绝对路径或相对路径,若目录名称省略,则切换至使用者的主目录
pwd命令
格式:pwd
- 说明:pwd命令不带任何选项或参数,Linux系统用pwd命令来查看“当前所在目录”的完整路径
ls命令
格式:ls [选项]… [文件或目录]…
说明:ls命令可列出目录的内容,包括文件和子目录的名称
常用选项:
-a:列出目录下的所有文件和目录,包括以“.”开头的隐藏文件
-A:列出除了“.”(当前目录)及“…”(当前目录的上级目录外的任何文件和目录)
-b:把文件名中不可输出的字符用反斜杠加字符编号的形式列出
-c:输出文件的最后更改时间,并根据这个时间排序
-C:分成多列显示文件和目录
-F:加上文件类型的指示符号,其中“*”(星号)表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|表示管道文件”;“=”表示套接字
-d:将目录像文件一样显示,而不是显示其下的文件
-l:列出文件详细信息,输出信息分成7个字段列表,具体含义如下所示:
(2)创建和删除目录命令
mkdir命令
格式mkdir [选项]… 目录名…
说明:该命令创建由目录名命名的目录,同时设置该目录的权限。要求创建目录的用户在当前目录具有写权限,并且目录名不能是当前目录中已有的目录或文件名称
常用选项:
-m:对新建目录设置存取权限
-p:若所建目录的上层目录不存在,会一并建立
rmdir命令
- 格式:rmdir [选项]… 目录名…
- 说明:该命令从一个目录中删除一个或多个目录。删除目录时,必须对该目录的父目录具有写权限,目录被删除前应该是空目录
- 常用选项:
-p:删除指定目录后,若该目录的上层目录已变成空目录,则其一并删除
[
](https://blog.csdn.net/a517865058/article/details/105009050)
(3)改变文件或目录存取权限命令
在介绍这部分命令之前,我们需要先了解一下Linux系统中的用户和用户组以及存取权限的概念。
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须先向系统管理员申请一个账号,然后以这个账号身份进入系统。Linux内部用UID标识各用户。
用户组(group)就是具有相同特征的用户的集合体,Linux系统中每个用户都属于一个用户组,系统能对一个用户组中所有用户进行集中管理。在Linux内部用户组用GID标识。
Linux系统规定4中不同类型用户,分别是文件主、同组用户、其他用户、超级用户。
Linux规定了3种存取权限:读(r)、写(w)、执行(x)。
用ls -l命令可以显示文件或目录的详细信息,其中第一字段即为文件属性字段。在该字段中,第一个字母表示文件类型,“-”这个符号之后的三小段由“r”、“w”、“x”组成的即分别表示了文件主权限、组用户权限、其他用户权限。
了解完这些概念之后,我们就可以来介绍有关的命令了
chmod命令
格式:chmod [who] [opt] [mode] 文件或目录名…
说明:用于改变文件或目录的访问权限。其中who表示对象,是u(表示文件所有者)、g(表示同组用户)、o(表示其他用户)、a(表示所有用户)这几个字母中的一个或多个。opt表示操作,可以为如下符号:+(添加某个权限)、-(取消某个权限)、=(赋予给定权限并取消原有权限)。mode表示权限,是r(可读)、w(可写)、x(可执行)中的一个或多个的组合。
也可用数字设定法改变文件或目录的访问权限,依然是chmod命令
格式:chmod [mode] 文件或目录命…
说明:将rwx看成二进制数,如果该位有权限,用1表示,该位没有权限用0表示,那么rwx r-x r–就可以表示为111 101 100,再将其每三位转换成为一位八进制数,即754。常见权限数字表示表见下表:
![X2DKRJOXU0~QA9Q(2@8V)K.png
例如:将当前目录下文件test.txt和test1.txt的权限改变为文件主可以读和写,同组用户可以执行,其他用户无权访问。
按照第一种方法,命令应该为:chmod u=rw,g=x test.txt,运行结果如下:
现在用第二种方法对test1,txt进行操作,命令应该为:chmod 610 test1.txt,运行结果如下:
(4)改变用户组和文件主的命令
chgrp命令
格式:chgrp [选项]… 所属组 文件或目录…
说明:chgrp命令改变指定文件所属的用户组,其中所属组可以是用户组的ID,也可以是用户组的组名。文件是以空格分开的要改变属组的文件列表,支持通配符。在Linux下一般只有超级用户才能改变该文件的属组。
常用选项:
-R:递归式地改变指定目录及其下的所有子目录和文件的属组
chown命令
格式:chown [选项]… [用户][:[组]] 文件…
说明:chown命令将指定文件的拥有者改为指定的用户或组。用户可以是用户名或用户ID。组可以是组名或组ID。文件是以空格分开的要改变权限的文件列表,支持通配符。在Linux下一般只有超级用户才可以使用该命令
常用选项:
-R:递归式改变指定目录及其下的所有子目录和文件的拥有者
例如:将目录/home/user/dest及其下所有文件和目录所有者改为root,命令为:chown -R root /home/user/dest
(5)链接文件的命令
ln命令
格式:ln [选项]… 源文件或目录 目标文件或目录
说明:ln命令用来链接文件或目录
常用选项:
-s:对源文件建立软链接(符号连接),而非硬链接。(Linux系统下有两种链接——硬链接和符号链接,符号链接又称为软链接。硬链接有两个限制:不允许给目录创建硬链接;只有在同一文件系统中的文件之间才能创建硬链接。而软链接没有这两个限制,但是也有缺点:软链接的链接文件包含原文件的路径信息,因此当原文件转移到其他目录时,再访问链接文件,系统会找不到原文件,而硬链接因索引节点会随文件移动而做相应改变,因此不存在这个问题;软链接文件还要系统分配额外的空间用于建立新的索引节点和保存原文件的路径)
[
](https://blog.csdn.net/a517865058/article/details/105009050)
拒绝挂科!从我做起