文章目录
- cat命令
- diff命令
- vimdiff命令
- grep命令
- touch命令
- Linux文件存储
- 链接文件目录
- ln命令
- file命令
- cp命令
- find命令
- rm命令
cat命令
命令用法
cat [-AbeEnstTuv] [–help] [–version] fileName
功能
用于连接文件并打印到标准输出设备上
参数说明:
-n:由1开始对所有输出行进行编号,包括所有空白行
-b:与-n作用相似,但不对空白行进行编号
-s:当有连续两行以上的空白行,代换为一行空白行并显示
-v:识别特殊符号 ^ 和 M-
-E:在每行结束处显示$符号(行尾有空格或TAB字符看不出来可使用)
-T:把TAB字符显示为^I
-A:等于-vET
-e:等于-vE
-t:等于-vT
主要功能
- 显示单文件内容,例,cat file1 #显示文件file1内容
- 显示多文件内容,即把多个文件内容合并输出, 例, cat file1 file2 #合并输出file1和file2文件内容
- 利用输出重定向创建新文件,例,cat > file2 #创建文件file2
- 利用输出重定向将几个文件合并为一个新文件,例,cat file1 file2 > file3 #创建新文件file3并将file1,file2文件内容合并到file3中
- 利用输入重定向也可显示文件内容,例,cat < file1 #显示文件file1内容
diff命令
命令用法
diff (选项)(参数)
功能
在最简单的方式下以逐行的方式比较文本文件的异同处。如果要比较目录,则会比较目录下相同文件名的文件,不会对其他子目录文件进行任何操作。
参数说明(常用)
-y:以并列的方式比较显示两个文件异同
-W:使用-y参数后,使用-W可以指定栏宽
实例
1)[root@admin test1]# diff file1 file10 #比较文件file1和file10的异同
结果说明:
a表示增加(add)
d表示删除(delete)
c表示改变,就是文本不同(change)
字母前表示第一个文件,后表示第二个文件
“<”表示第一个文件内容,">"表示第二个文件内容
则上述内容表示file1的2-5行和file10的2-6行不一样
2)[root@admin test1]# diff -y -W 100 file1 file10 #并列比较两个文件异同,栏宽100
vimdiff命令
也是比较文件异同,和diff命令相似,是vim编辑器自带的一种可视化的文本比较工具,原理是调用vim来进行文本比较的,可以通过颜色来区分文件差异。
最多可同时打开四个文件。
实例
[root@admin test1]# vimdiff file1 file10 #比较file1和file10文件异同
因为使用vim进行文本调用,相当于同时打开2个文件,所以需要退出2次。
grep命令
命令用法
grep [options]
功能
grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本并把匹配到的内容打印出来
参数说明
-n:显示出匹配行及行号
-w:以单词进行匹配(默认以字符进行匹配)
-i:不区分大小写
-o:只显示匹配到的内容
-v:取反,即显示不包括匹配内容的所有行
-B:显示匹配内容行及之前的n行
-A:显示匹配内容行及之后的的n行
-C:显示匹配内容行及前后n行
实例
准备file9文件,内容如下:
1)grep -n “kid” file9 # 搜索file9文件中含有"kid"字符串内容并显示行号
2)grep -i “kid” file9 #不区分大小写搜索含“kid”内容
3)grep -o “kid” file9 #只显示“kid”字符串
4)grep -v “kid” file9 #显示不包括“kid”字符串内容
5)grep -nC 2 “kid” file9 #显示含有“kid”字符串及前后两行(带行数显示)
touch命令
命令用法
touch (选项)(参数)
功能
用于修改已存在的文件或目录的时间属性,数据内容不会改变;如果文件不存在,则会建立新文件
参数说明
-a:只修改文件的访问(access)时间
-c:不创建不存在的文件
-d:使用指定的时间日期,而非现在的时间
-r:使用参照文件的时间(access和modify)记录
注:access 表示后一次访问(仅仅是访问,没有改动)文件的时间
modify 表示后一次修改文件的时间
change 表示后一次对文件属性改变的时间,包括权限,大小,属性等等
t:将时间修改为指定的时间,格式与date相同
-m:修改Modify(修改)时间,而不修改access(访问)时间
实例
1)[root@admin anli]# touch z1 #创建文件
[root@admin anli]# stat z1 #stat查看文件属性状态信息
2)修改文件的最近访问(access)时间
[root@admin anli]# cat z1
[root@admin anli]# stat z1
3)[root@admin anli]# rm -rf z1 z2 #把z2时间改为z1时间
Linux文件存储
文件存储在硬盘上,硬盘的小存储单位叫做扇区sector,每个扇区存储512个字节,操作系统在读取硬盘数据 时,并不是一个一个扇区去读取,而是按照多个扇区,也就是一次性读取一块数据,这种由扇区组成的块(block) 是文件存取小单位,常见的块大小为4KB,即8个连续的sector组成一个block。
文件的数据都存在块上,我们知道一个文件除了存储的数据以外还有一部分数据,我们称为元数据,如文件创建 日期,大小等等,这种存放元数据的区域我们称为inode。
Linux文件系统可以简单分为 inode table和data area,inode table中存有inode,每个inode中记录了文件的元 数据。
Linux文件系统的文件权限(rwx)、文件属性(拥有者、群组、时间参数等)以及文件的内容。 文件系统通常会将这 两部份的数据分别存放在不同的区块,权限与属性放置到inode中,至于实际内容则放置到data block区块中。另 外,还有一个超级区(superblock)会记录整个文件系统的整体信息,包括inode与block的总量、使用量、剩余量 等。
stat命令可以查看文件的元数据。
inode也会消耗磁盘空间,在磁盘格式化时,操作系统会自动将磁盘分为两个区域,一个数据区,一个inode 区,存放inode所包含的信息,整个磁盘的可以使用容量由inode和磁盘空间共同决定,当inode消耗完之后,磁盘空间还有剩余也无法存储数据。
以查找/etc/fstab内容为例:
链接文件目录
Linux链接分为两种,一种为硬链接,一种为符号链接(软链接)。
硬链接
硬连接指通过索引节点(inode)来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都 给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在 的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。 硬连接的作用是允许一个文件 拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因 为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有 当后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
软链接
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方 式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的 位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中 的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据 块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
ln命令
命令用法
ln (选项) (源文件或目录)(目标文件或目录)
功能
建立文件或目录的链接,默认建立硬链接
参数说明
-s:建立软链接
-f:强制执行
-i:交互模式,提醒用户是否覆盖
-v:显示详细的处理过程
实例
1)[root@admin anli]# ln z1 z3 #建立z1文件的硬链接文件z3
[root@admin anli]# stat z1 #查看z1文件属性
[root@admin anli]# stat z3
z1和z3的inode号相同
2)[root@admin anli]# ln -s z1 z4 #建立z1的软链接z4(inode号不同)
3)[root@admin anli]# rm -rf z1 #删除源文件z1(z3内容不变,z4指向无效文件)
file命令
命令用法
file (选项) (参数)
功能
识别文件类型,也可以识别一些文件的编码格式
补充:Linux不以文件后缀来识别文件,是通过查看文件的头部信息来识别
参数说明
-b:显示识别结果时,不显示文件名称
-z:尝试解读压缩文件的内容
-L:直接显示符号连接所指向的文件类别
-i:显示MIME类别
实例
1)[root@admin test1]# file file9
[root@admin test1]# file -b file9 #不显示文件名
2)[root@admin test1]# file -i file9 #显示file9的MIME类别(text/plain为普通文本类型)
cp命令
命令用法
cp(选项)(参数)
功能
用于将一个或多个源文件或者目录复制到目标文件或目录。并且同时复制多个文件或目录到目标目录时,目标目录必须存在,否则会报错。
cp命令默认情况下不能复制目录,如果要复制,必须使用-R选项。
参数说明
-i:交互式复制,即复制前提醒用户确认(默认cp就是cp -i)
-r:递归复制文件或目录
-f:强制覆盖目标文件或目录,不论目标文件或目录是否已存在
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
-p:保留源文件或目录的属性
-P:保留源文件或目录的路径,此路径可以是绝对路径或相对路径,且目的目录必须已经存在
-b:覆盖已存在的目标文件前将目标文件备份
-a:等价于“dpr”选项
-v:详细显示cp命令执行的操作过程
实例
1)[root@admin ~]# cp -r mulu1 mulu/ #复制目录mulu1到目录mulu中
2)[root@admin mulu]# cp -f shiyan shiyan1 #强制复制文件shiyan到文件shiyan1中
find命令
命令用法
find [-path……] -options [-print -exec -ok]
命令说明及选项
path:要查找的目录路径。
~ 表示$HOME目录
. 表示当前目录
/ 表示根目录print:表示将结果输出到标准输出。
exec:对匹配的文件执行该参数所给出的shell命令。
形式为command {} \;,注意{}与\;之间有空格ok:与exec作用相同,区别在于,在执行命令之前,都会给出提示,让用户确认是否执行
options常用的有下选项:
-name:按照名字查找
-perm:按照权限查找
-prune:不在当前指定的目录下查找
-user:文件属主来查找
-group:文件所属组来查找
-nogroup:查找无有效所属组的文件
-nouser:查找无有效属主的文件
-type:按照文件类型查找
-size:按照文件大小进行搜索(只适用于文件)
c:字节
k:Kb
M:Mb
G:Gb
功能
find 命令接受一个或多个路径(paths)作为搜索范围,并在该路径下递归地搜索。即检索完指定的目录后,还会对该目录下的子目录进行检索,以及子目录下的子目录。。。直到到达目录树底部。
实例
1)查找/etc目录下所有名为passwd的文件
2)查找/etc目录下所有大于10k的文件
对搜索结果执行命令
1)[root@admin ~]# find test1 -name file1 -exec rm -rf {} \ ; #查找test1目录中的file1文件并删除
2)[root@admin test1]# find . -name file2 -exec du -h {} \ ; #查看当前目录下的file2文件并查看大小( du -h命令查看大小)
3)[root@admin ~]# find / -size +100k -size -110k -exec ls -l {} \ ; #查找根目录下大小为100k–110k之间的文件并详细显示
rm命令
命令用法
rm [选项] 文件…
功能
用于删除一个目录中的一个或多个文件或目录,如果不指定-r或-R参数,则rm通常不会删除目录。另外,用rm删除的本质是删除文件名,所以rm通常可以将该文件或目录恢复(注意,rm删除文件其实只是将指向数据块的索引点 (information nodes)释放),只要不被覆盖,数据其实还在硬盘上。
参数说明
-f:强制删除,忽略不存在的文件,从不给出提示(慎用)
-i:交互式删除,删除时给出提示,询问是否删除
(补充:rm是删除命令的别名,默认rm就是rm -i,所以会提示;但是\rm可以跳过别名,不会提示)
-r/-R:递归删除所指目录下的全部目录和文件
-v:详细显示运行时信息
实例
1)[root@admin mulu]# rm shiyan3 #删除目录mulu下的shiyan3文件
2)[root@admin ~]# rm -rf mulu/ #强制递归删除目录mulu下所有目录和文件