LINUX基础培训四之命令行管理文件

2024-01-10 09:37:55
前言、本章学习目标?
  1. 了解LINUX命令行管理文件常用命令
  2. 掌握软连接、硬链接基本知识
  3. 判断文件内容
  4. 熟悉命令和文件的搜寻

一、文件目录命令管理

1、文件和目录创建时名称要求

·名称可以长达255个字符
·除了正斜线以外,所有字符都是有效的
·在文件或目录中使用某些特殊字符可以不太明知
·某些字符在引用时应该使用引号来保护
·名称区分大小写
·例如:MAIL、Mail、mail和mAiL
·.同样可以使用,但不推荐

2、列举目录内容

1).命令:ls
2).作用:列举当前目录或指定目录中的内容
3).用法:ls[选项][文件或目录]
4).补充说明:执行ls指令可列出目录的内容,包括文件和子目录的名称。
5).常用参数:
Is -a(包括隐藏文件)
Is -1(显示额外信息)
Is -R(递归到子目录中)
Is -ld(目录和符号链接信息)
6).应用实例
#man ls
#ls -l?/etc/passwd
#ls -ld /home

3、判断文件内容

1).命令:file
2).功能说明:辨识文件类型
3).语法:file [-belvz][-f <名称文件>][-m <魔法数字文件>..][文件或目录]
4).补充说明:通过file指令,我们得以辨识该文件的类型。
5).参数:
-b 列出辨识结果时,不显示文件名称。
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-f<名称文件>指定名称文件,其内容有一个或多个文件名称呢感,让file依序辨识这些文件,将式为每列一个文件名称。
-L 直接显示符号连接所指向的文件的类别。
-m<魔法数字文件> ?指定魔法数字文件。
-v 显示版本信息。
-z 尝试去解读压缩文件的内容。
6).应用实例:
# file fileName//目录,数据,ASCII文本,C程序源,压缩文档
#file tmp.tar

二、文档搜索相关命令介绍

1、命令:which

格式:which[-a]command
选项或参数:-a:将所有由PATH目录中可以找到的命令均列出,而不止第一个被找到的命令名称
应用实例:
应用实例一:分别用root与一般帐号搜寻ifconfig这个命令的完整档名
[root@orade01~)# which ifconfig
/sbin/fconfig

应用实例二:用which 去找出 which的文档名为何?
[root@orade01-]# which which
alias which='alias|/usr/bin/which-tty-only-read-alias-show-dot-show-tilde'
/ust/bin/which//竟然会有两个which,其中一个是alias.

应用实例三:找出cd这个命令的完整档名
[root@orade01~}#which cd
/us/bin/which:no cd in /usr/lib64/t-3.3/bin:/usr/kerberos/sbin:/ust/kerberos/bin:/usr/Noal/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin
//找不到cd合令,因cd是bash内建的命令,而which默认是找PATH内所规范的目录,所以当然一定找不到我们可以通过type这个命令。

2.命令:whereis

格式:whereis[-bmsu]文件或目录名

选项与参数:-b:只找binary格式的文件
-m:只找在说明档manual 路径下的文件
-s:只找 source来源文件
-u:搜寻不在上述三个项目当中的其他特殊文件

应用实例
应用实例一:用不同的身份找出 ifconfig这个档名
[root@oracle01~]# whereis ifconfig
ifconfig:/sbin/ifconfig/usr/share/man/man8/ifconfig.8.gz

应用实例二:查找出跟 passwd有关的说明文件档名(man page)
[root@oracle01~]# whereis -m passwd
passwd:/usr/share/man/man5/passwd.5.gz/usr/share/man/man1/passwd.1.gz

3、命令:locate

格式:locate [-ir]keyword
选项与参数:
-i:忽略大小写的差异;
-r:后面可接正规表示法的显示方式

应用实例:找出系统中所有与passwd相关的档名
[root@oracle01~]# locate passwd | more
/etc/passwd
/etc/passwd-
/etc/dovecot/conf.d/auth-passwdfile.conf.ext
/etc/pam.d/passwd
/etc/raddb/modules/passwd

4.命令:find

格式:find[PATH][option][action]
选项与参数:
1).与时间有关的选项:共有-atime,-ctime与-mtime,以-mtime 说明
-mtime n:n为数字,意义为在n天之前的一天之内被更动过内容的文件;
-mtime +n:列出在n天之前(不含n天本身)被更动过内容的文件档名;
-mtime -n:列出在n天之内(含n天本身)被更动过内容的文件档名.
-newer file:file为一个存在的文件,列出比file还要新的文件档名.

应用实例
应用实例一:将过去系统上面24小时内有更动过内容(mtime)的文件列出.
[root@oracle01~]#find/-mtime 0 //0代表目前的时间,所以,从现在开始到24小时前,有变内容的文件都会被列出来.
应用实例二:寻找/etc底下的文件,如果文件日期比/etc/passwd新就列出。
[root@oracle01~]#find /etc -newer /etc/passwd

额外可进行的动作:
-exec command:command为其他命令,-exec后面可再接额外的命令来处理搜寻到的结果.
-print:将结果列印到屏幕上,这个动作是默认动作!
·应用实例三:找出系统中,大於1MB、500M、1GB的文件.
[root@orade01~]# find / -size +1M
[root@orade01~]# find / -size +500M
[root@orade01~]# find / -size +1G
·应用实例四:查找系统中文件文件权限为7000的文件并将找到的文件使用Is-1列出来.
[root@orade01~]#find/-perm +7000 -exec ls - 0\;//-exec后面的Is -1就是额外的命令,命令不支持命令别名,所以仅能使find / -perm +7000 -exec ls -l?;

5、whereis、locate、find区别

(1)whereis、locate、find是Linux 下相当优异的搜寻命令,whereis可以找到可执行命令和man page,locate是在数据库里查找,数据库大至每天更新一次,find就是根据条件查找文件,which可以找到可执行文件和别名(alias),但是在进行搜索查找时通常我们都是先使whereis或者是locate来进行,如果真的找不到了,才以find来进行查找.因为whereis与locate是利用数据库来搜寻数据,所以相当的快速,而且并没有实际的搜寻硬盘比较省时间。
(2)find是很强大的搜寻命令,find是在硬盘上遍历查找,因此非常消耗硬盘的资源,而且时间花用的也很大,效率非常低.
(3)Linux系统会将系统内的所有文件都记录在一个数据库文件里面,而当使用whereis或者locate时,都会以此数据库文件的内容为准,因此,有的时候你还会发现使用这两个运行档时,会找到已经被杀掉的文件,而且也可能出现找不到最新的刚刚创建的文件的现象,这就是因为这两个命令是由数据库当中的结果去搜寻文件的所在.
(4)数据库的创建默认是每天升级数据库一次,所以当你新创建起来的文件,却还在数据库升级之前搜寻该文件,那么locate会告诉你找不到,因为你必须要升级数据库。
(5)升级locate数据库的方法非常简单,可以使用自动升级,也可以直接输入updatedb就可以了!updatedb 命令会去读取/etc/updatedb.conf这个配置档的配置,然后再去硬盘里面进行搜寻档名的动作,最后就升级整个数据库文件.
(6)loate搜寻的数据是由已创建的数据库/var/lib/mlocate/里面的数据所搜寻到的,所以不用直接再去硬盘当中存取数据。
(7)updatedb:根据/etc/updatedb.conf的配置去搜寻系统硬盘内的档名,并升级/var/lib/mlocate内的数据库文件;
(8)lorate:依据/var/ib/mlocate内的数据库记载,找出使用者输入的关键字档名

三、Linux 链接概念

Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln 命令产生硬链接。

硬连接
硬连接指通过索引节点来进行连接。在 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 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

实验:
[oracle@Linux]$ touch f1 ? ? ? ? ?#创建一个测试文件f1
[oracle@Linux]$ ln f1 f2 ? ? ? ? ?#创建f1的一个硬连接文件f2
[oracle@Linux]$ ln -s f1 f3 ? ? ? #创建f1的一个符号连接文件f3
[oracle@Linux]$ ls -li ? ? ? ? ? ?# -i参数显示文件的inode节点信息
total 0
9797648 -rw-r--r-- ?2 oracle oinstall 0 Apr 21 08:11 f1
9797648 -rw-r--r-- ?2 oracle oinstall 0 Apr 21 08:11 f2
9797649 lrwxrwxrwx ?1 oracle oinstall 2 Apr 21 08:11 f3 -> f1

从上面的结果中可以看出,硬连接文件 f2 与原文件 f1 的 inode 节点相同,均为 9797648,然而符号连接文件的 inode 节点不同。
这里需要注意的是,软链接文件的源文件必须写成绝对路径,而不能写成相对路径(硬链接没有这样的要求);否则软链接文件会报错。

四、Linux打包和压缩

1、LINUX打包

打包指的是将多个文件和目录集中存储在一个文件中;而压缩则指的是利用算法对文件进行处理,从而达到缩减占用磁盘空间的目的。
Linux tar打包命令详解
Linux 系统中,最常用的归档(打包)命令就是 tar,该命令可以将许多文件一起保存到一个单独的磁带或磁盘中进行归档。不仅如此,该命令还可以从归档文件中还原所需文件,也就是打包的反过程,称为解打包。
使用 tar 命令归档的包通常称为 tar 包(tar 包文件都是以“.tar”结尾的)。
格式:tar [选项] 源文件或目录
选项或参数:
-c?? ?将多个文件或目录进行打包。
-A?? ?追加 tar 文件到归档文件。
-f 包名?? ?指定包的文件名。包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名;
-v?? ?显示打包文件过程;
-x?? ?对 tar 包做解打包操作。
应用实例:
#把anacondehks.cfg打包为 anacondehks.cfg.tar文件
tar -cvf anaconda-ks.cfg.tar anaconda-ks.cfg
#把文件包test.tar解打包到/tmp/目录下
[root@localhost ~]# tar -xvf test.tar -C /tmp
?

2、压缩命令详解

zip 命令:
类似于 Windows 系统中的 winzip 压缩程序,其基本格式如下:
[root@localhost ~]#zip [选项] 压缩包名 源文件或源目录列表
unzip 命令可以查看和解压缩 zip 文件。该命令的基本格式如下:
[root@localhost ~]# unzip [选项] 压缩包名

gzip命令
Linux 系统中经常用来对文件进行压缩和解压缩的命令,通过此命令压缩得到的新文件,其扩展名通常标记为“.gz”
gzip 命令只能用来压缩文件,不能压缩目录
命令格式
[root@localhost ~]# gzip [选项] 源文件
[root@localhost ~]# gunzip [选项] 文件 --解压文件

bzip2命令
bzip2 命令同 gzip 命令类似,只能对文件进行压缩(或解压缩),对于目录只能压缩(或解压缩)该目录及子目录下的所有文件。当执行压缩任务完成后,会生成一个以“.bz2”为后缀的压缩包。
bzip2 命令的基本格式如下
[root@localhost ~]# bzip2 [选项] 源文件
[root@localhost ~]# bunzip2 [选项] 源文件

五、实验

1、找出所有者是jack的文件,并把他们拷贝到/root/findfiles 目录下。
find / -user jack -exec cp {} ?/tmp/ ?\;
2、创建名为/root/backupetc.tar.gz的备份文件,其中包含/etc的内容,tar必须使用gzip压缩。
tar -czvf /root/backupetc.tar.gz ?/etc/
?

文章来源:https://blog.csdn.net/vincent0920/article/details/135494128
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。