2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 【Linux】软硬链接 文件存储 删除 文件目录管理 (cp mv rm cut sort uniq w

【Linux】软硬链接 文件存储 删除 文件目录管理 (cp mv rm cut sort uniq w

时间:2019-05-20 04:46:54

相关推荐

【Linux】软硬链接 文件存储 删除 文件目录管理 (cp mv rm cut sort uniq w

目录

一、文件存储

二、硬链接与软链接

硬链接

如何创建硬链接:

硬链接知识小结

软连接

如何创建软连接?

软连接知识小结:

三、文件删除的原理

四、文件目录管理命令

cp命令

mv 命令

rm 命令

find命令

cut命令

sort 命令

uniq 命令

wc 命令

head命令

tail命令

split命令

五、文件搜索工具

字符匹配

分组及引用

Linux文件搜索命令

which命令

whereis命令

type命令

find命令

一、文件存储

文件存储?

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。

操作系统读取硬盘的时候,一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

什么是inode?

储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

显示文件和文件系统的详细信息

可以用stat命令,查看某个文件的inode信息:

文件的时间戳,共有三个:

ctime显示的是文件的权限、拥有者、所属的组、链接数发生改变时的时间。当然当内容改变时也会随之改变(即inode内容发生改变和Block内容发生改变时)

mtime指文件内容上一次变动的时间,

atime指文件最后被访问的时间。

* 链接数,即有多少文件名指向这个inode

df命令 查看文件系统磁盘空间占用情况

查看每个硬盘分区的inode信息,可以使用df -i命令。

inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。

一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。

每个inode节点的大小,一般是128字节或256字节。

inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。

表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:

首先,系统找到这个文件名对应的inode号码;

其次,通过inode号码,获取inode信息;

最后,根据inode信息,找到文件数据所在的block,读出数据。

使用ls -i命令,可以看到文件名对应的inode号码:

Unix/Linux系统中,目录(directory)也是一种文件。打开目录,实际上就是打开目录文件。

目录文件的结构非常简单,就是一系列目录项(dirent)的列表。

每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。

df -h命令 以可读性较高的方式来查看磁盘使用情况;

二、硬链接与软链接

硬链接

源文件与硬链接文件的inode是一样的;硬链接文件与原始文件其实是同一个文件,只不过是不同的名字而已。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。仅删除一个链接并没有影响。

如何创建硬链接:

ln 源文件名 硬链接名

如果给一个源文件创建了硬链接文件,将硬链接文件移动至其他文件后不小心将源文件删除,然后通过cp命令将硬件文件弄到之前源文件所在地址后,在使用ls -i命令查看inode号,会发现他的inide号改变了,通过mv命令将硬件文件弄到之前源文件所在地址后它的inode号没有变。

改名和移动不会影响inode号,cp命令才会影响。

硬链接知识小结

软连接

软连接的源文件和链接文件的内容一样,inode号不一样;将软连接文件删除,源文件还可以访问,将源文件删除,则不能访问链接文件。

如何创建软连接?

ln -s 源文件名 软连接文件名

软连接知识小结:

内存会被进程占用,只有当进程被释放时,内存才会被释放

三、文件删除的原理

每个文件都有2各link计数器:i_count(内存引用计数器)和i_nlink(磁盘引用计数器);

想要彻底删除文件,必须使该文件的i_count和i_nlink都为0;

好比一个文件正在被进程调用,而用户却使用rm将文件删除了,这时虽然找不到这个文件了,但是调用该文件的进程仍然在执行,该文件的内存未被释放。因为rm操作只是将i_nlink数减少了,如果没有其它链接文件那么它的i_nlink数为0,但由于该文件还在被进程引用,所以i_count不为0,系统并没有真正的删除这个文件,想要彻底删除文件,必须使该文件的i_count和i_nlink都为0。

四、文件目录管理命令

cp命令

copy 实现文件或目录的拷贝

copy file1 file2 实现文件 file1 的内容拷贝到文件 file2 上,如果文件 file2 已存在则覆盖,不存在则创建

常用参数:

-i:交互式复制,有文件覆盖的时候提醒用户确认-f:强制覆盖 (相当于复制文件时若有同名的文件则强制覆盖)-d:复制符号链接文件本身,而非源文件-P:保留源文件或者目录的路径-R, -r, 递归拷贝-p 保留源文件的属性权限时间等

mv 命令

可以实现移动文件或重命名

mv 后可以是一个目录也可以是一个文件;如果源文件和目标文件在同一目录中,那就是改名。

-f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;-i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);-n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户;-v:显示文件或目录的移动过程;-u:若目标文件已经存在,但两者相比,源文件更新,则会对目标文件进行升级;

rm 命令

实现删除文件或目录

常见参数有:

-f, 强制性删除并没有提示

-r, -R,递归删除包含目录下的子目录及文件

-d:删除空文件夹

find命令

find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,find命令就会消耗较大的系统资源,导致服务器压力过大。所以,在使用 find 命令搜索时,不要指定过大的搜索范围。

命令格式:

[root@localhost ~]# find 搜索路径 [选项] 搜索内容

例子: 查找/目录下所有以.log 结尾的文件

[root@rsys_server test]# find / -name "*.log"

cut命令

就是在文件中负责剪切数据用的。cut 是以每一行为一个处理对象的;

常用参数:

-d 自定义分割符,如果不定义则使用默认分隔符 tab 键;-f 显示指定字段的内容-c 参数指定切割字符数从起始数到截止数;(cut -c "1-2" wb 切割wb文件中的前两个字符)-b:以字节为单位进行分割

举例:

以空格为分割符切割,显示第一个字段内容;

以空格为分割符切割,显示第一个字段到第三个字段内容;

以空格为分割符切割,显示第一个字段和第三个字段内容;

显示cut.txt文件中第1个和第3个字符

显示cut.txt文件中第1个到第3个字符

sort 命令

sort 命令用来排序,通常是结合文本处理工具使用;

常用参数:

如下:

[root@localhost ~]# sort -k 2 -t "." sort.txt

AA:BB:CC

ee:60:5.1

dd:20:4.2

cc:50:3.3

ee:40:5.3

bb:10:2.4

aa:30:1.9

(表示按"."分隔开。将第二列从小到大排序。)

uniq 命令

主要用来实现去除重复行前提条件是必须是先排序过的文本

常用参数:

-c:在每行前加出现次数(uniq命令加-c选项可以实现对重复次数进行统计。)-d:只输出重复行-i:比较时不区分大小写-u:只显示唯一行-s:跳过-w:忽略

wc 命令

统计文件的字节或者行数等信息

常用参数:

-c:统计字节数-l:统计行数-L:统计最长行的长度-m:统计字符数-w:统计单词数,以空格为分界点

head命令

显示前几行

tail命令

显示后几行

-f随着文件自增自动显示最后新增的内容(新增的内容并不会保存到源文件中)

split命令

分割文档命令

-l num :指定分割的行数num行-b :按照每个文件的大小分割 KB MB-d :使用数字做后缀 搭配-a使用 指定数字长度-c :分割的文件单行的最大字节数 byte-

Linux命令之文件分割split命令_恒悦sunsite的博客-CSDN博客_split命令/carefree/article/details/122703056

这个博客巨详细!!)

五、文件搜索工具

字符匹配

. 匹配任意单个字符(grep 'r..t' /etc/passwd)

* 匹配其前面字符任意次;0,1,多次;例如grep "x*y"

\? 匹配其前面字符0次或1次;(基本正则要加/,扩展正则不用加)

\+ 匹配其前面字符1次或多次;

.* 匹配任意多个字符

(使用grep命令即为正则表达式,不适用grep为通配符。)

单词:非特殊字符组成的连续字符(字符串)都称为单词;

\<root 用于单词模式的左侧,类似于以某个单词开头;

root\> 用于单词模式的左侧,类似于以某个单词结尾

\<apple\> 用于匹配完整的单词;

分组及引用

Linux文件搜索命令

which命令

在$PATH的所有目录里搜索某个系统命令的位置,默认在第一个文件中查找到了就不去其它文件里找到;内部命令也是找不到的(例如:history)

-a 在所有目录里找系统命令

--skip-alias 只有文件目录没有别名(针对有命令别名的)

whereis命令

查询命令或程序的帮助手册的位置

-b 只查找可执行命令

-m 只查找帮助文件

type命令

用来分辨该命令是外部命令还是内部命令(shell builtin)还是别名

find命令

功能描述:在目录中查找文件。不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode 号等来搜索文件。但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,find命令就会消耗较大的系统资源,导致服务器压力过大。所以,在使用 find 命令搜索时,不要指定过大的搜索范围。

命令格式:find 搜索路径 [选项] 搜索内容

常用参数:

-name: 按照文件名搜索;-iname: 按照文件名搜索,不区分文件名大小;-inum: 按照 inode 号搜索;

-size[+-]大小:按照指定大小搜索文件(这里的"+"的意思是搜索比指定大小还要大的文件,"-" 的意思是搜索比指定大小还要小的文件。)

-atime [+-]时间: 在过去 n 天内被读取过的文件

-mtime [+-]时间: 在过去 n 天内修改过的文件

-ctime [+-]时间: 在过去 n 天内创建的文件

这三个时间的区别我们在 stat 命令中已经解释过了,这里用 mtime 数据修改时间来举例,重点说说 "[+-]"时间的含义。

-5:代表5天内天修改的文件。

5: 代表前5~6天那一天修改的文件。

+5: 代表5天前修改的文件。

举例:

实例1:ls-l命令放在find命令的-exec选项中

命令:

find.-typef-execls-l{}\;

【Linux】软硬链接 文件存储 删除 文件目录管理 (cp mv rm cut sort uniq wc head tail split which whereis type find)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。