常用的文件系统操作命令–文件命令
1》Linux系统中使用以下命令来查看文件的内容
cat
由第一行开始显示文件内容
tac
由最后一行开始显示文件内容
more
一页一页查看文件内容(不可以向上翻一行,可以前后翻页(Ctrl+b、空格)、向下翻一行{回车键、Ctrl+m} )
less
与more相似,可以往前翻一行(可以前后翻页(空格、pgup键和pgdn键)、向上翻一行、向下翻一行(上下箭头键,回车))
tail
默认查看文件的后十行
head
默认查看文件的前十行
nl
查看文件内容,同时顺便的显示行号
cat
-b
列出非空行的行号
-nmore
向上翻一页:Ctrl+b
向下翻一页:空格
向下翻一行:回车、Ctrl+mless
向上翻一页:pgUp键
向下翻一页:pgDn键、空格
向上翻一行:上箭头
向下翻一行:回车、方向键(向下箭头)head/tail
【实例1】指定行数显示文件内容
1:显示前两行内容
2:显示后3行内容
2》find 在指定路径查找文件
用法:find [选项] 参数
【实例1】 查找根目录下的passwd文件
用法:find 路径 选项( 指定查找的文件) 具体查找的文件
【实例2】忽略大小写
注意:基本上只要是忽略大小写的,参数一般都是-i
【实例3】反选,否定匹配的参数 –使用叹号
find命令总结:
1:find命令通常单独使用
2:find只能搜索目录或文件,不能搜索文件内的具体内容
3》grep 搜索
注意:find命令通常单独使用;grep命令通常个其他命令配合使用,通常和管道符一起 【 | 】
grep搜索的关键字不一定要写全,find后面的关键字必须写全,如果不写全称则搜索失败,或者不记得全称可以使用通配符。
【实例1】grep的简单用法
【实例2】搜索具体文件内的内容
【实例3】输出除匹配关键字之外的内容
【实例4】单独使用grep
用法: grep 关键字 搜索的文件
【实例5】忽略大小写
【实例6】递归搜索
【实例7】在多级目录中对文本进行递归搜索—-(搜索的是文本的具体内容)
【实例8】cat passwd | grep -v ^| grep -v ^# |grep bash > test
- -v
反选 ^xx
匹配以xx开头的行xx$
匹配以xx结尾的行- ^$
匹配空行
4》stat
显示文件的所有信息 ,甚至包括存储该文件的设备的设备号
最近访问:只要查看过文件,这个时间就会随之变化
最近改动:修改文件的名称等信息,这个时间就会随之变化
修改文件的内容,同时三个时间都会随之变化
补充inode:
查看inode号:
df -i
ls -i
一、inode是什么?
理解inode,要从文件储存说起
文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个”块”(block)。这种由多个扇区组成的”块”,是文件存取的最小单位。”块”的大小,最常见的是4KB,即连续八个 sector组成一个 block。
文件数据都储存在”块”中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为”索引节点”。
二、inode的内容
inode包含文件的元信息,具体来说有以下内容:
- 文件的字节数
- 文件拥有者的User ID
- 文件的Group ID
- 文件的读、写、执行权限
- 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
- 链接数,即有多少文件名指向这个inode
- 文件数据block的位置
Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。
5》touch
【解释】
用于修改文件或目录的时间属性,包括存储时间、更改时间。如果文件不存在,则系统或建立一个新文件。
创建空文件(衍生出来的)
【问题】生产环境中为什么使用touch?
touch命令描述的是改变时间戳,那么我们为什么要改变时间戳?
如果你参加一个全球范围的开源项目,那么时间戳会变得很重要。编译源代码文件可能需要同一地区的时间戳。如果未统一,程序可能会编译失败。(有强迫症的同学也会用,看不得乱七八糟的时间)
【实例1】更改文件的时间戳为当前的时间。(三个时间同时修改)
如果文件不存在,则系统或建立一个新文件。
【实例2】设置文件的时间戳(修改的是访问时间和更改时间)
注意:-t选项后面的时间格式:
[[CC]YY]MMDDHHmm[.SS]
- CC
年份的前两位 YY
年份的后两位MM
月份[01-12]- DD
日起[01-31] - hh
时[00-23] - mm
分[00-59] - SS
秒[00-59]
实例3】变更文档时间戳,文件名记错了,或者写错了,又不想创建新文件,使用选项c
【实例4】单独修改时间(访问时间)
修改访问时间:
注意:为什么改动时间会变化,是因为本身touch -at 200808080808.08 systemctl 这条命令在修改文件的属性,所以改动时间会随之记录用户的操作痕迹,但是touch -at 200808080808.08 systemctl 这条命令只作用在访问时间!
【实例5】自定义时间戳(同实例2)
【实例6】修改时区
GMT:格林尼治时间
6》echo 回显,打印输出到屏幕
7》输入输出重定向
在Linux中,每一进程都有三个特殊的文件描述指针
标准输入(standard input 文件描述指针为0)
标准输出(standard output 文件描述指针为1 )
标准错误输出(standard error 文件描述指针为2)
这三个特殊文件描述指针使进程在一般情况下接收标准输入终端的输入,同时由标准终端来显示输出,Linux同时也向使用者提供可以使用普通文件或管道来取代这些标准输入输出设备。在shell中,使用者可以利用“>”和“<”来进行输入输出重定向
输出重定向:
Command >filename
将命令的输出结果重定向到一个文件中
Command &>filename
将命令的标准错误输出一起重定向到一个文件中
Command >>filename
将标准输出的结果追加到文件中
Command &>>filename
将标准输出和标准错误输出的结果都追加到文件中
输入重定向
ls命令执行的目标是qq的结果,系统在执行ls < qq这条命令时,先执行qq再把qq的结果输入给ls命令使用
内置输入重定向
应用场景:菜单中会使用