云计算 --day05

陈鑫


文件压缩解压缩

常见压缩档
> *.zip      |    zip 程序压缩打包的档案;  (很常见,但是因为不包含文档名编码信息,跨平台可能会乱码)
> *.rar        |    rar 程序压缩打包的档案;(在windows上很常见,但是是商业软件。)
> *.gz         |   gzip 程序压缩的档案; (linux目前使用最广泛的压缩格式)
> *.bz2       |   bzip2 程序压缩的档案;
> *.xz         |    xz 程序压缩的档案;
> *.tar        |    tar 程序打包的资料,并没有压缩过;
> ***.tar.gz   |    tar 程序打包的档案,其中并且经过 gzip 的压缩 (最常见)**
> *.tar.bz2  |   tar 程序打包的档案,其中并且经过 bzip2 的压缩
> ***.tar.xz    |   tar 程序打包的档案,其中并且经过 xz 的压缩 (新一代压缩选择)**
> ***.7z         |  7zip 程序压缩打包的档案。

Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rar。可是Linux就不同 了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的压缩文件名,此外windows下的.zip和.rar也可以在Linux下使 用,不过在Linux使用.zip和.rar的人就太少了。


为什么要进行文件压缩

一般情况下,压缩文件是为了更方便地传输和携带。
压缩后的文件,占用空间较少,方便烤入U盘携带拷贝等工作。
另外比较重要的是传输。单个文件可以进行网络传输,但整个文件夹如果文件较多,传输上就会很繁琐。所以,将整个文件夹压缩为一个压缩包,就可以实现一次性传输多个文件


打包盒压缩的区别

打包是指将一大堆文件或目录什么的变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。


为什么要区分这 两个概念呢?其实这源于Linux中的很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就得先借助另外的工具将这一大堆文件包先打 成一个,然后再就原来的压缩程序进行压缩。

  Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。

zip

zip  压缩后的文件名  文件名...(压缩包里有几个文件就写几个文件名  有空格隔开)    
zip  -r  压缩文件名  目录名...      压缩目录以及目录下所有文件
zip -m  压缩文件名  文件名       压缩文件中添加文件
zip -d   压缩文件名  文件名       删除压缩文件中的文件
unzip    压缩文件名                   解压
unzip -v  压缩文件名                 解压显示详细信息

注:通常压缩后的文件名通常写成:      文件名.zip

与 gzip 不一样几个文件压缩后,源文件还在

命令演示:

①zip 压缩后的文件名 文件名...(压缩包里有几个文件就写几个文件名 有空格隔开

[root@localhost ~]# touch {a..c}
[root@localhost ~]# ll
-rw-r--r--. 1 root root    0 Dec  1 15:46 a
-rw-r--r--. 1 root root    0 Dec  1 15:46 b
-rw-r--r--. 1 root root    0 Dec  1 15:46 c

[root@localhost ~]# zip abc.zip a b c
  adding: a (stored 0%)
  adding: b (stored 0%)
  adding: c (stored 0%)

②zip -r 压缩文件名 目录名...     压缩目录以及目录下所有文件

[root@localhost ~]# mkdir  d1
[root@localhost ~]# touch  d1/{1..3}

[root@localhost ~]# zip  d1.zip  d1
  adding: d1/ (stored 0%)
[root@localhost ~]# ll
-rw-r--r--. 1 root root  156 Dec  1 16:00 d1.zip     (只有目录本身的压缩文件d1.zip    )

[root@localhost ~]# zip -r  d1.zip d1             ( 压缩目录以及目录下所有文件)
updating: d1/ (stored 0%)                       
  adding: d1/1 (stored 0%)
  adding: d1/2 (stored 0%)
  adding: d1/3 (stored 0%)

③zip -d   压缩文件名 文件名       删除压缩文件中的文件

[root@localhost ~]# mkdir  d1
[root@localhost ~]# touch  d1/{1..3}
[root@localhost ~]# zip -r  d1.zip d1             ( 压缩目录以及目录下所有文件)
updating: d1/ (stored 0%)                       
  adding: d1/1 (stored 0%)
  adding: d1/2 (stored 0%)
  adding: d1/3 (stored 0%)



[root@localhost ~]# zip  -d  d1.zip  d1/1
deleting: d1/1

查看压缩文件中的一个文件是否被删除(也就是查看压缩文件中的内容):必须先解压缩

[root@localhost ~]# mv  d1.zip /PUB
[root@localhost ~]# mv  d1.zip /pub
mv: cannot stat 'd1.zip': No such file or directory
[root@localhost ~]# mv  /PUB  /pub/d1.zip

[root@localhost ~]# unzip -v /pub/d1.zip
Archive:  /pub/d1.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
       0  Stored        0   0% 12-01-2022 15:55 00000000  d1/
       0  Stored        0   0% 12-01-2022 15:55 00000000  d1/2
       0  Stored        0   0% 12-01-2022 15:55 00000000  d1/3
--------          -------  ---                            -------
       0                0   0%                            3 files


[root@localhost ~]# unzip /pub/d1.zip
Archive:  /pub/d1.zip
replace d1/2? [y]es, [n]o, [A]ll, [N]one, [r]ename: y^H^H
 extracting: d1/2                    
replace d1/3? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
 extracting: d1/3                    

[root@localhost ~]# ll
drwxr-xr-x. 2 root root   33 Dec  1 16:54 d1
[root@localhost ~]# tree  d1
d1

├── 2
└── 3

0 directories, 3 files

gzip

gzip    直接加文件名     
#注意: 以上压缩之后原始文件就没有了,直接对源文件压缩

​gunzip=gzip -d 直接加文件名.gz  解压缩
gzip test1.txt    
gzip -r dir1/  将dir1目录下的文本文件进行压缩,压缩成压缩成压缩文件
(只对该目录文件下的文本文件进行压缩,不会压缩目录)
gzip -c test2.txt > test2.txt.gz  压缩但保留原始文件
zcat 文件名.gz    查看压缩过的文本文件内容

命令演示:

①gzip   直接加文件名   

压缩之后原始文件就没有了,直接对源文件压缩

[root@localhost pub]# touch a b c
[root@localhost pub]# gzip a
[root@localhost pub]# ll
-rw-r--r--.   1 root root   22 Dec  1 20:51 a.gz


②gzip -c test2.txt > test2.txt.gz 压缩但保留原始文件

[root@localhost pub]# gzip -c b >b.gz
[root@localhost pub]# ll
total 20
-rw-r--r--.   1 root root   22 Dec  1 20:51 a.gz
-rw-r--r--.   1 root root    0 Dec  1 20:51 b
-rw-r--r--.   1 root root   22 Dec  1 21:02 b.gz
-rw-r--r--.   1 root root    0 Dec  1 20:51 c

③gzip -r dir1/ 将dir1目录下的文本文件进行压缩,压缩成压缩成压缩文件

[root@localhost ~]# tree d1
d1
├── 1
├── 2
└── 3

0 directories, 3 files
[root@localhost ~]# gzip  -r d1
[root@localhost ~]# ll
total 48
drwxr-xr-x. 2 root root   42 Dec  1 21:09 d1

[root@localhost ~]# tree d1
d1
├── 1.gz
├── 2.gz
└── 3.gz

0 directories, 3 files

④zcat 文件名.gz   查看压缩过的文本文件内容

[root@localhost ~]# zcat a.gz
gzip: a.gz: No such file or directory   (源文件在压缩时就没了)
[root@localhost ~]# cd  /pub
[root@localhost pub]# zcat  a.gz
[root@localhost pub]# echo  123  >c
[root@localhost pub]# gzip  c
[root@localhost pub]# ll
total 24
-rw-r--r--.   1 root root   26 Dec  1 21:20 c.gz
[root@localhost pub]# zcat  c.gz
123

⑤​gunzip=gzip -d 直接加文件名.gz 解压缩

[root@localhost pub]# echo  123  >c
[root@localhost pub]# gzip  c
[root@localhost pub]# ll
total 24
-rw-r--r--.   1 root root   26 Dec  1 21:20 c.gz
[root@localhost pub]# zcat  c.gz
123

[root@localhost pub]# cat c
cat: c: No such file or directory
[root@localhost pub]#  gzip -d  c.gz
[root@localhost pub]# cat  c
123

bzip2

bzip2、bunzip2(=bzip2 -d)gzip有着更高的压缩率。
bzip2  -z  man.config  //将man.config以bzip2压缩,此时man.config变成man.config.bz2
bzip2   -c man.config > man.config.bz2 //将man.config用最佳的压缩比压缩,并保留原本的档案
bzip2  -d  man.config.bz2 //将man.config.bz2解压缩,可用bunzip2取代bzip2  -d
bunzip2  man.config.bz2  //将man.config.bz2解压缩
bzcat 文件名.bz2        //查看压缩过的文件内容

xz

xz、xz -d=unxz   
xz test1.txt
unxz test1.txt.xz 解压缩
xz dir1/*   将目录下所有文件本文件分别进行压缩
xzcat test1.txt.xz  查看压缩过的文件内容
zcat、zless、bzcat、bzless 不解压,显示压缩文件的内容

总结:

gzip ,bzip2,  xz  命令执行很像    一般对源文件压缩之后,源文件都会直接清除(bzip2有例外)

bzip2   -c man.config > man.config.bz2 //将man.config用最佳的压缩比压缩,并保留原本的档案

tar归档命令(打包命令)(通过tar命令打包的文件可以指定该打包文件的格式)  注:源文件还在

(如果打包的时候指定了某种压缩算法,创建的包文件相当与压缩文件)

格式:tar [选项] 打包文件名 被打包的源文件或目录列表

           tar [选项] 打包文件名 [-C 目标文件夹]

常用选项:

选项功能
c创建.tar格式的包文件   (打包) 
x释放.tar格式的包文件     (解包)
t查看包中的文件列表
v表示在命令执行时显示详细的提示信息
f 包文件名

用于指定包文件名。当与-c选项一起使用时,创建的tar包文件使用该选项指定的文件名;(非压缩的)

当与-x选项一起使用时,则释放该选项指定的tar包文件。(与c连用时只能写成-cf)同:-cvf  -xf

p打包时保留文件及目录的权限。
z调用gzip程序,以gzip格式压缩或解压缩文件。 格式:.gz  gzip2的压缩率通常比bzip2更高
j调用bzip2程序,以bzip2格式压缩或解压缩文件。 格式:.bz2    
J使用xz压缩(.tar.xz)。xz的压缩率通常比bzip2更高。(压缩的体积更小了)
C 目录路径名释放包时指定释放的目标的位置。
-P参数作用是保留绝对路径

注: 选项f 必须在选项之后[[]]

  1. 创建(非压缩的)包文件 命令tar cvf  包文件名   要打包的目录或文件名列表   功能:将指定的一个或多个文件或目录备份生成为一个指定的包文件。(包文件下的文件要提前就有,创建好)

  2. 释放(非压缩的)包文件 命令:tar  xvf  包文件名.tar

  3. 创建带压缩的包文件 为节省存储空间,通常需要生成压缩格式的tar包文件,tar命令支持三种不同的压缩方式: 命令:tar -c[z ] / [j] / [J]f 压缩包文件名 要备份的目录或文件名

  4. 列出包文件中的文件列表 命令:tar t[v]f 包文件名

  5. 提取包文件到指定目录 格式:tar x [z] / [j] / [J]vf 包文件名  [ -C 目标位置]

在linux系统中可以直接用 释放(非压缩的)包文件 命令:tar  xvf  包文件名  (但它释放.tar格式的包文件)(释放后包文件还在)

注:对于互联网下载的(压缩的)包文件时 必须对应压缩文件的格式

非压缩的包文件相关命令演示

[root@localhost pub]# rm  -rf *
[root@localhost pub]# touch {1..10}
[root@localhost pub]# ll
total 0
-rw-r--r--. 1 root root 0 Dec  2 18:10 1
-rw-r--r--. 1 root root 0 Dec  2 18:10 10
-rw-r--r--. 1 root root 0 Dec  2 18:10 2
-rw-r--r--. 1 root root 0 Dec  2 18:10 3
-rw-r--r--. 1 root root 0 Dec  2 18:10 4
-rw-r--r--. 1 root root 0 Dec  2 18:10 5
-rw-r--r--. 1 root root 0 Dec  2 18:10 6
-rw-r--r--. 1 root root 0 Dec  2 18:10 7
-rw-r--r--. 1 root root 0 Dec  2 18:10 8
-rw-r--r--. 1 root root 0 Dec  2 18:10 9

[root@localhost pub]# tar  -cvf 123.tar 1 2 3    (创建包文件)
1
2
3
[root@localhost pub]# ll
total 12
-rw-r--r--. 1 root root     0 Dec  2 18:10 1
-rw-r--r--. 1 root root     0 Dec  2 18:10 10
-rw-r--r--. 1 root root 10240 Dec  2 18:15 123.tar
-rw-r--r--. 1 root root     0 Dec  2 18:10 2
-rw-r--r--. 1 root root     0 Dec  2 18:10 3
-rw-r--r--. 1 root root     0 Dec  2 18:10 4
-rw-r--r--. 1 root root     0 Dec  2 18:10 5
-rw-r--r--. 1 root root     0 Dec  2 18:10 6
-rw-r--r--. 1 root root     0 Dec  2 18:10 7
-rw-r--r--. 1 root root     0 Dec  2 18:10 8
-rw-r--r--. 1 root root     0 Dec  2 18:10 9
[root@localhost pub]# rm  -rf 1 2 3
[root@localhost pub]# ll
total 12
-rw-r--r--. 1 root root     0 Dec  2 18:10 10
-rw-r--r--. 1 root root 10240 Dec  2 18:15 123.tar
-rw-r--r--. 1 root root     0 Dec  2 18:10 4
-rw-r--r--. 1 root root     0 Dec  2 18:10 5
-rw-r--r--. 1 root root     0 Dec  2 18:10 6
-rw-r--r--. 1 root root     0 Dec  2 18:10 7
-rw-r--r--. 1 root root     0 Dec  2 18:10 8
-rw-r--r--. 1 root root     0 Dec  2 18:10 9
[root@localhost pub]# tar  -xvf  123.tar          (释放包文件)
1
2
3
[root@localhost pub]# ll
total 12
-rw-r--r--. 1 root root     0 Dec  2 18:10 1
-rw-r--r--. 1 root root     0 Dec  2 18:10 10
-rw-r--r--. 1 root root 10240 Dec  2 18:15 123.tar
-rw-r--r--. 1 root root     0 Dec  2 18:10 2
-rw-r--r--. 1 root root     0 Dec  2 18:10 3
-rw-r--r--. 1 root root     0 Dec  2 18:10 4
-rw-r--r--. 1 root root     0 Dec  2 18:10 5
-rw-r--r--. 1 root root     0 Dec  2 18:10 6
-rw-r--r--. 1 root root     0 Dec  2 18:10 7
-rw-r--r--. 1 root root     0 Dec  2 18:10 8
-rw-r--r--. 1 root root     0 Dec  2 18:10 9


提取包文件到指定目录 格式:tar x [z] / [j] / [J]vf 包文件名  [ -C 目标位置]

[root@localhost pub]# tar  -xvf  123.tar -C /root     (释放包文件到 /root 目录下)
1
2
3
[root@localhost pub]# ll /root
total 48
-rw-r--r--. 1 root root    0 Dec  2 18:10 1
-rw-r--r--. 1 root root    0 Dec  2 18:10 2
-rw-r--r--. 1 root root    0 Dec  2 18:10 3
-rw-r--r--. 1 root root    0 Dec  1 15:46 a
-rw-r--r--. 1 root root   17 Dec  1 14:29 A
drwxr-xr-x. 2 root root    6 Nov 23 22:18 aaa
-rw-r--r--. 1 root root    0 Nov 22 04:53 aaa.lnk
-rw-r--r--. 1 root root  412 Dec  1 15:53 abc.zip
-rw-------. 1 root root 1207 Nov 20 02:14 anaconda-ks.cfg
-rw-r--r--. 1 root root    0 Dec  1 15:46 b
-rw-r--r--. 1 root root    0 Dec  1 15:46 c
drwxr-xr-x. 2 root root   42 Dec  1 21:09 d1
-rw-r--r--. 1 root root  183 Nov 28 17:28 f1
-rw-r--r--. 2 root root   33 Nov 28 17:35 file
-rw-r--r--. 1 root root   13 Nov 28 17:22 file111
-rw-r--r--. 1 root root    5 Nov 28 17:15 file1111
-rw-r--r--. 1 root root   13 Nov 26 20:58 file222
-rw-r--r--. 1 root root    0 Nov 26 06:36 fire
-rw-r--r--. 1 root root  157 Dec  1 17:19 GIU
-rw-r--r--. 1 root root 1479 Nov 20 02:20 initial-setup-ks.cfg
-rw-r--r--. 1 root root 3626 Nov 28 15:51 newfile2
-rw-r--r--. 1 root root  157 Dec  1 16:57 UID

创建带压缩的包文件  的命令演示

①压缩成.gz格式的文件

[root@localhost pub]# tar  -czvf    456.tar.gz  4 5 6
4
5
6
[root@localhost pub]# ll
total 16
-rw-r--r--. 1 root root     0 Dec  2 18:10 1
-rw-r--r--. 1 root root     0 Dec  2 18:10 10
-rw-r--r--. 1 root root 10240 Dec  2 18:15 123.tar
-rw-r--r--. 1 root root     0 Dec  2 18:10 2
-rw-r--r--. 1 root root     0 Dec  2 18:10 3
-rw-r--r--. 1 root root     0 Dec  2 18:10 4
-rw-r--r--. 1 root root   122 Dec  2 22:20 456.tar.gz
-rw-r--r--. 1 root root     0 Dec  2 18:10 5
-rw-r--r--. 1 root root     0 Dec  2 18:10 6
-rw-r--r--. 1 root root     0 Dec  2 18:10 7
-rw-r--r--. 1 root root     0 Dec  2 18:10 8
-rw-r--r--. 1 root root     0 Dec  2 18:10 9

注:为什么4 5 6三个文件原来数据为0,打包压缩至后变成了122 ?

压缩成.bz2格式的文件(与 .gz 格式比较一下)   bzip2    gzip

[root@localhost pub]# tar  -cjvf  456.tar.bz2 4 5 6
4
5
6
[root@localhost pub]# ll
-rw-r--r--. 1 root root   130 Dec  2 22:50 456.tar.bz2
-rw-r--r--. 1 root root   122 Dec  2 22:20 456.tar.gz

  gzip2的压缩率通常比bzip2更高  (压缩的体积更小了)

②释放格式 .gz 压缩的包文件

[root@localhost pub]# rm  -rf  {1..10}
[root@localhost pub]# ll
total 20
-rw-r--r--. 1 root root 10240 Dec  2 18:15 123.tar
-rw-r--r--. 1 root root   130 Dec  2 22:50 456.tar.bz2
-rw-r--r--. 1 root root   122 Dec  2 22:20 456.tar.gz
[root@localhost pub]# tar  -xzvf  456.tar.gz
4
5
6
[root@localhost pub]# ll
total 20
-rw-r--r--. 1 root root 10240 Dec  2 18:15 123.tar
-rw-r--r--. 1 root root     0 Dec  2 18:10 4
-rw-r--r--. 1 root root   130 Dec  2 22:50 456.tar.bz2
-rw-r--r--. 1 root root   122 Dec  2 22:20 456.tar.gz
-rw-r--r--. 1 root root     0 Dec  2 18:10 5
-rw-r--r--. 1 root root     0 Dec  2 18:10 6

-P

参数作用是保留绝对路径

eg:

[root@localhost pub]# cd
[root@localhost ~]# tar  -czvf  pub.tar.gz /pub
tar: Removing leading `/' from member names       (默认压缩时会移除  /  目录 )
/pub/
/pub/123.tar
/pub/456.tar.gz
/pub/456.tar.bz2
/pub/4
/pub/5
/pub/6

[root@localhost ~]# tar  -cPzvf  pub1.tar.gz /pub
/pub/
/pub/123.tar
/pub/456.tar.gz
/pub/456.tar.bz2
/pub/4
/pub/5
/pub/6

[root@localhost ~]# ll
total 56
-rw-r--r--. 1 root root  625 Dec  2 23:14 pub1.tar.gz
-rw-r--r--. 1 root root  622 Dec  2 23:10 pub.tar.gz


文件查找

环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置系统文件夹位置

环境变量------$PATH

[root@localhost ~]# echo  $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
      5个路径

linux主机上查找文件的四种方式(面试时会让你介绍)

which 基于环境变量 ()路径开始匹配文件,查找是可执行文件 echo $PATH

whereis 基于环境变量 ()路径开始匹配文件,查找所有文件

locate 全盘搜索,默认查找的是数据库中的文件,所以查找文件前需要更新数据库

find 全盘搜索

[root@localhost ~]# which  pub
/usr/bin/which: no pub in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

[root@localhost ~]# whereis  pub
pub:


[root@localhost ~]# locate  pub
/pub
/etc/firewalld/zones/public.xml
/etc/firewalld/zones/public.xml.old
/etc/insights-client/redhattools.pub.gpg
/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/ssh_host_rsa_key.pub
/pub/123.tar
/pub/4
/pub/456.tar.bz2
/pub/456.tar.gz
/pub/5
/pub/6

find 全盘搜索

find  =【查找路径】  寻找条件   完整的文件名 /对前面条件所致的名字  (路径可写可不写,如果不写就默认为当前路径)

find  .../..            -name   ...

补:笔试题常考:  重点

第一种考法:下列哪一个find命令语法有问题

第二种考法:指定时间内的文件如何搜索(时间参数的写法方式)

find命令中的参数以及作用

参数作用
-name匹配名称 inum 通过索引节点号搜索
-perm 644匹配权限(mode为完全匹配,-mode为包含即可)

-user

匹配所有者      drwxr-xr-x. 2 root root   

-group

匹配所有组      drwxr-xr-x. 2 root root   

-mtime -n +n匹配修改内容的时间(-4指小于等于4天内的文件名 time<4 ;+4,大于等于5天前的文件名time>5(没有第5天);4指前4~5那一天的文件  4=<time=<5) -cmin (默认按分钟算)(在几分钟内修改的文件)
-atime -n +n匹配访问文件的时间 -amin
-ctime -n +n匹配修改文件权限的时间 -cmin
-nouser匹配无所有者的文件  (后期显示这个文件没有用户名标记  只有数字标记时这个用户已经被删除了)
-nogroup匹配无所有组的文件
-newer f1 ! -newer f2匹配比文件f1新但比f2旧的文件  (包括文件f1和文件f2)        -a   -o   !  -not  (可以把在指定文件之后建立的文件找出来)                                        find命令下两个搜索条件用 (与   或  非)
-type b/d/c/p/l/f匹配文件类型(后面的字母参数依次表示块设备、目录、字符设备、管道、链接文件、文本文件)
-size    数字+单位:(c-字节  b-块=512个字节   w-双字节    k-kb=1024字节  M    G  没有T匹配文件的大小(50kb 为查找大小为50KB的文件,       +50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)

*-exec …… {}\;

后面可跟用于进一步处理搜索结果的命令 -ok -print
-mindepth n 从第 n级目录开始搜索     eg: /etc 的第三级子目录开始搜索。 find /etc -mindepth 3
-maxdepth n表示至多搜索到第 n-1 级子目录0当前目录

命令演示:

eg:

①对当前路径做文件 a.txt 的全盘搜索

[root@localhost ~]# find  -name  a.txt
./a.txt

②对   /     下做文件 a.txt 的全盘搜索

[root@localhost ~]# find  / -name a.txt
find: ‘/run/user/1000/gvfs’: Permission denied
/root/a.txt

③如何查找文件对应的硬链接是哪一个

[root@localhost ~]# ln  a.txt   AA
[root@localhost ~]# ll
total 56
-rw-r--r--. 1 root root    0 Dec  2 18:10 1
-rw-r--r--. 1 root root    0 Dec  2 18:10 2
-rw-r--r--. 1 root root    0 Dec  2 18:10 3
-rw-r--r--. 1 root root    0 Dec  1 15:46 a
-rw-r--r--. 1 root root   17 Dec  1 14:29 A
-rw-r--r--. 2 root root    0 Dec  2 23:20 AA
drwxr-xr-x. 2 root root    6 Nov 23 22:18 aaa
-rw-r--r--. 1 root root    0 Nov 22 04:53 aaa.lnk
-rw-r--r--. 1 root root  412 Dec  1 15:53 abc.zip
-rw-------. 1 root root 1207 Nov 20 02:14 anaconda-ks.cfg
-rw-r--r--. 2 root root    0 Dec  2 23:20 a.txt
 
 法一
根据inum(节点号)的编号查看文件与他对应的硬连接
硬链接 多个文件名指向同一个节点号  
(文件与其对应的硬连接相同)
35245052 -rw-r--r--. 1 root root    0 Dec  2 18:10 1
35245053 -rw-r--r--. 1 root root    0 Dec  2 18:10 2
35245921 -rw-r--r--. 1 root root    0 Dec  2 18:10 3
35252221 -rw-r--r--. 1 root root    0 Dec  1 15:46 a
35245031 -rw-r--r--. 1 root root   17 Dec  1 14:29 A
35245928 -rw-r--r--. 2 root root    0 Dec  2 23:20 AA
18272002 drwxr-xr-x. 2 root root    6 Nov 23 22:18 aaa
35245034 -rw-r--r--. 1 root root    0 Nov 22 04:53 aaa.lnk
35255438 -rw-r--r--. 1 root root  412 Dec  1 15:53 abc.zip
33575045 -rw-------. 1 root root 1207 Nov 20 02:14 anaconda-ks.cfg
35245928 -rw-r--r--. 2 root root    0 Dec  2 23:20 a.txt


35245928 -rw-r--r--. 2 root root    0 Dec  2 23:20 AA
35245928 -rw-r--r--. 2 root root    0 Dec  2 23:20 a.txt


法二:
[root@localhost ~]# find ~ -inum 35245928
/root/AA       (当前家目录)(节点号)(对应的编号)
/root/a.txt

-user

匹配所有者      drwxr-xr-x. 2 root root   

-group

匹配所有组      drwxr-xr-x. 2 root root   

[root@localhost ~]# find  / -user  redhat
         (目前为止/目录下没有文件所有者为redhat的用户)

[root@localhost ~]# find  /  -group  redhat
/run/media/redhat/RHEL-8-5-0-BaseOS-x86_64/AppStream/Packages/alsa-plugins-oss-1.1.9-1.el8.x86_64.rpm

[root@localhost ~]# ll  -d  /tmp/tracker-extract-files.1000   
drwx------. 2 redhat redhat 6 Nov 20 02:21 /tmp/tracker-extract-files.1000

-newer f1 ! -newer f2

匹配比文件f1新但比f2旧的文件   -a   -o   !  -not                                                        与   或  非

(可以把在指定文件之后建立的文件找出来)         (包括文件f1和文件f2)                                     

[root@localhost ~]# ll
total 56
-rw-r--r--. 1 root root    0 Dec  2 18:10 1
-rw-r--r--. 1 root root    0 Dec  2 18:10 2
-rw-r--r--. 1 root root    0 Dec  2 18:10 3
-rw-r--r--. 1 root root    0 Dec  1 15:46 a
-rw-r--r--. 1 root root   17 Dec  1 14:29 A
---x--x--x. 2 root root    0 Dec  2 23:20 AA
drwxr-xr-x. 2 root root    6 Nov 23 22:18 aaa
-rw-r--r--. 1 root root    0 Nov 22 04:53 aaa.lnk
-rw-r--r--. 1 root root  412 Dec  1 15:53 abc.zip
-rw-------. 1 root root 1207 Nov 20 02:14 anaconda-ks.cfg
---x--x--x. 2 root root    0 Dec  2 23:20 a.txt
-rw-r--r--. 1 root root    0 Dec  1 15:46 b
-rw-r--r--. 1 root root    0 Dec  1 15:46 c
drwxr-xr-x. 2 root root   42 Dec  1 21:09 d1
-rw-r--r--. 1 root root  183 Nov 28 17:28 f1
-rwxr-xr-x. 2 root root   33 Nov 28 17:35 file
-rw-r--r--. 1 root root   13 Nov 28 17:22 file111
-rw-r--r--. 1 root root    5 Nov 28 17:15 file1111
-rw-r--r--. 1 root root   13 Nov 26 20:58 file222
-rw-r--r--. 1 root root    0 Nov 26 06:36 fire
-rw-r--r--. 1 root root  157 Dec  1 17:19 GIU
-rw-r--r--. 1 root root 1479 Nov 20 02:20 initial-setup-ks.cfg
-rw-r--r--. 1 root root 3626 Nov 28 15:51 newfile2
-rw-r--r--. 1 root root  625 Dec  2 23:14 pub1.tar.gz
-rw-r--r--. 1 root root  622 Dec  2 23:10 pub.tar.gz
-rw-r--r--. 1 root root  157 Dec  1 16:57 UID
[root@localhost ~]# find ~  -newer  a  ! -newer  1
/root/.viminfo
/root/GIU
/root/b
/root/c                (包括 文件a和文件1)
/root/abc.zip
/root/1
/root/2
/root/UID
/root/d1
/root/d1/1.gz
/root/d1/2.gz
/root/d1/3.gz
/root/3

-type b/d/c/p/l/f

匹配文件类型(后面的字母参数依次表示块设备、目录、字符设备、管道、链接文件、文本文件)

[root@localhost ~]# find / -name  a.txt  -a  -type  f
                                         与    文本文件类型

查找一个名叫 a.txt 的文本文件

find: ‘/run/user/1000/gvfs’: Permission denied
/root/a.txt
[root@localhost ~]# find / -name  a.txt  -a  -type  d
find: ‘/run/user/1000/gvfs’: Permission denied
[root@localhost ~]# find / -name  a.txt  -o  -type  d
/proc/5281/net/dev_snmp6
/proc/5281/net/netfilter
/proc/5281/attr
/run
/run/motd.d
/run/chrony-helper
/run/gdm
...........................

-size    数字+单位:(c-字节  b-块=512个字节   w-双字节    k-kb=1024字节  M    G  没有T

匹配文件的大小(50kb 为查找大小为50KB的文件,       +50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)

[root@localhost ~]# cd  /pub
[root@localhost pub]# ll
total 20
-rw-r--r--. 1 root root 10240 Dec  2 18:15 123.tar
-rw-r--r--. 1 root root     0 Dec  2 18:10 4
-rw-r--r--. 1 root root   130 Dec  2 22:50 456.tar.bz2
-rw-r--r--. 1 root root   122 Dec  2 22:20 456.tar.gz
-rw-r--r--. 1 root root     0 Dec  2 18:10 5
-rw-r--r--. 1 root root     0 Dec  2 18:10 6
[root@localhost pub]# find  .  -size 130c
./456.tar.bz2           当前目录       c=字节
[root@localhost pub]# find  .  -size  +130c
./123.tar
[root@localhost pub]# find  .  -size  -130c
.
./456.tar.gz
./4
./5
./6

-mindepth n 

从第 n级目录开始搜索     eg: /etc 的第三级子目录开始搜索。 find /etc -mindepth 3

-maxdepth n

最大深度

表示至多搜索到第 n-1 级子目录0当前目录

[root@localhost ~]# ll  /pub
total 20
-rw-r--r--. 1 root root 10240 Dec  2 18:15 123.tar
-rw-r--r--. 1 root root     0 Dec  2 18:10 4
-rw-r--r--. 1 root root   130 Dec  2 22:50 456.tar.bz2
-rw-r--r--. 1 root root   122 Dec  2 22:20 456.tar.gz
-rw-r--r--. 1 root root     0 Dec  2 18:10 5
-rw-r--r--. 1 root root     0 Dec  2 18:10 6
[root@localhost ~]# find /     -name   4    ^C
[root@localhost ~]# find /     -name   4  -a  -maxdepth  1       (选项顺序错误)
find: warning: you have specified the -maxdepth option after a non-option argument -name, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it).  Please specify options before other arguments.
             (层级目录选项要放前面)
[root@localhost ~]# find /  -maxdepth  2 -a  -name  4
/proc/4
/pub/4
    (/目录下第1级子目录的4文件)
[root@localhost ~]# find /  -maxdepth  1 -a  -name  4
    (/目录下第0级子目录-----0当前目录 是没有4文件的)

1.按照文件名搜索 find / -mtime -30

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
    -name: 按照文件名搜索
    -iname: 按照文件名搜索,不区分文件名大小写
    -inum: 按照 inode 号搜索
[root@kongd ~]# find /etc -name "host*" -print

2.按照文件大小搜索

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
    -size [+|-]大小: 按照指定大小搜索文件
    这里的“+”的意思是搜索比指定大小还要大的文件, “-”的意思是搜索比指定大小还要小的文
    件  

3.按照修改时间搜索 Linux 中的文件有访问时间(atime)、数据修改时间(mtime)、状态修改时间(ctime)这三个 时间,我们也可以按照时间来搜索文件。

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
find -atime n指查找 24*n小时到24*(n+1)小时内访问过的文件。 n=2  72>=time>=48
find -atime -n指查找 24*n小时内访问过的文件。   n=2   48 >time
find -atime +n指查找 24*(n+1)小时以上访问过的文件n=2  72>time

图中最右边为目前的时间,越往左边则代表越早之前的时间轴啦。

• +4代表大于等于5天前的档名: find /var -mtime +4

• -4代表小于等于4天内的文件档名:find /var -mtime -4

• 4则是代表4-5那一天的文件档名: find /var -mtime 4

shell命令类型:

内置命令:响应效率高,执行速度快(后期编辑脚本时能用内置命令就用内置命令)

  bash,  :,  .,  [,  alias, bg, bind, break, builtin,
       caller, cd, command,  compgen,  complete,  compopt,
       continue,  declare,  dirs,  disown,  echo,  enable,
       eval, exec, exit, export, false, fc,  fg,  getopts,
       hash,   help,  history,  jobs,  kill,  let,  local,
       logout, mapfile, popd, printf,  pushd,  pwd,  read,
       readonly,  return,  set, shift, shopt, source, sus‐
       pend,  test,  times,  trap,  true,  type,  typeset,
       ulimit, umask, unalias, unset, wait - bash built-in
       commands, see bash(1)

如果内置命令后面不能加--help 查看命令帮助

那么可以  help   直接加内置命令

help  cd   

cd  --help

[root@localhost /]# type   echo 
echo is a shell builtin
[root@localhost /]# echo  --help
--help

[root@localhost /]# help  echo
echo: echo [-neE] [arg ...]
    Write arguments to the standard output.
    
    Display the ARGs, separated by a single space character and followed by a
    newline, on the standard output.
    
    Options:
      -n	do not append a newline
      -e	enable interpretation of the following backslash escapes

外置命令统一通过--help来实现

外置命令:有一定的匹配时间,执行速度较慢(内置命令不能用时才考虑用外置命令)


命令类型显示:

[root@localhost ~]# type  touch
touch is /usr/bin/touch           外置命令       

[root@localhost ~]# type   cd
cd is a shell builtin             内置命令
[root@localhost ~]# man   cd     ( man 加上任何一条内置命令) 
BASH_BUILTINS(1)  General Commands Manual BASH_BUILTINS(1)

NAME    (这里就不显示语法  怎么用 而是显示所有内置命令)
       bash,  :,  .,  [,  alias, bg, bind, break, builtin,
       caller, cd, command,  compgen,  complete,  compopt,
       continue,  declare,  dirs,  disown,  echo,  enable,
       eval, exec, exit, export, false, fc,  fg,  getopts,
       hash,   help,  history,  jobs,  kill,  let,  local,
       logout, mapfile, popd, printf,  pushd,  pwd,  read,
       readonly,  return,  set, shift, shopt, source, sus‐
       pend,  test,  times,  trap,  true,  type,  typeset,
       ulimit, umask, unalias, unset, wait - bash built-in
       commands, see bash(1)

根据一个time 命令可以统计一个命令的执行时间

eg:

[root@localhost ~]# time  cd

real	0m0.000s
user	0m0.000s
sys	0m0.000s
[root@localhost ~]# time  cd  /

real	0m0.000s
user	0m0.000s
sys	0m0.000s
[root@localhost /]# time  touch
touch: missing file operand
Try 'touch --help' for more information.

real	0m0.005s
user	0m0.002s
sys	0m0.002s
[root@localhost /]# time  touch  a

real	0m0.002s
user	0m0.000s
sys	0m0.001s

linux中命令匹配顺序:1 别名--->2 命令缓存---> 3 通过系统环境变量中的所定义的命令文件路径开始匹配

若一个命令的别名已经存在,则先在系统中匹配别名命令,通过别名找到命令本身,前提是这个命令可以通过系统环境变量路径

别名可以在环境变量中被找到

命令的别名   命令的缓存


命令的别名 

alias  查看当前用户的所有命令别名(给命令起一个外号)

除了可以给指定命令做出一个定义,还可以给完整定义作出一个定义

别名定义后原来命令一样执行

alias   只能查看当前用户的别名    例如当前是在root用户,那么就不能查看redhat用户的别名

两者别名是不一样

[root@localhost ~]# useradd  redhat
useradd: user 'redhat' already exists
[root@localhost ~]# su   redhat
[redhat@localhost root]$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'






[root@localhost ~]# alias         
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'

格式:

alias  别名=命令本身 

eg:

alias  cc=touch

alias  sj = 'echo  "系统时间是`date  |  cut  -d  " "  -f  5`"'  (需要整体用一个引号)

只能用一对单引号,否则别名定义的是表示双引号中内容表示的信息(时间就固定不变了)

[root@localhost ~]# date
Mon Dec  5 02:36:10 CST 2022
[root@localhost ~]# echo  "系统时间是`date  | cut  -d " " -f 5`"
系统时间是02:39:26
[root@localhost ~]# echo  系统时间是`date  | cut  -d " " -f 5`
系统时间是02:40:02


[root@localhost ~]# alias  sj='echo  系统时间是`date  | cut  -d " " -f 5`'
[root@localhost ~]# alias         
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias sj='echo  系统时间是`date  | cut  -d " " -f 5`'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'



[root@localhost ~]# echo  系统时间是`date  | cut  -d " " -f 5`
系统时间是02:50:06
[root@localhost ~]# sj
系统时间是02:50:11

[root@localhost ~]# which  sj
alias sj='echo  系统时间是`date  | cut  -d " " -f 5`'
	/usr/bin/echo
	/usr/bin/cut
在环境路径之下 别名sj 可以被找到

显示所有别名信息

[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias sj='echo  系统时间是`date  | cut  -d " " -f 5`'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'

alias  别名=命令本身 

[root@localhost ~]# alias  sj ='echo" 系统时间是date  |  cut  -d  "  "  -f  4"'
                                                --创建一个tm别名命令

                           sj   --先在系统中匹配别名命令,通过别名找到命令本身



[root@localhost ~]# which  sj
alias sj='echo  系统时间是`date  | cut  -d " " -f 5`'
	/usr/bin/echo
	/usr/bin/cut
在环境路径之下 别名sj 可以被找到

注:定义别名是临时生效的

unalias   取消别名   (unalias   别名的名字)

[root@localhost ~]# unalias  sj
[root@localhost ~]# sj       在删除别名命令之后 ---sj不是别名命令,通过SPATH 路径开始匹配是否有 
bash: sj: command not found ...                                     sj可执行文件;


[root@localhost ~]# which  sj
/usr/bin/which: no sj in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
         删除别名之后,别名不可以在环境变量路径之下本找到
                                       

临时修改(主机重启之后就不生效了)

alias  别名=命令本身 

注:定义别名是临时生效的

永久更改

vim    /etc/bashrc   定义永久生效的别名(在配置文件中修改),对系统中所有用户都生效

但是在bashrc初始化文件中新添加的信息没有被读取,在程序刚开始运行的时候才读取配置文件,运行之后再写入信息,程序是不会加载该信息的。

vim     ~/.bashrc   定义永久生效的别名,对系统中当前用户生效

      家目录下

[root@localhost ~]# vim  /etc/bashrc   
 # /usr/share/doc/setup-*/uidgid file
    if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
       umask 002
    else
       umask 022
    fi

    SHELL=/bin/bash
    # Only display echos from profile.d scripts if we are no login shell
    # and interactive - otherwise just process them to set envvars
    for i in /etc/profile.d/*.sh; do
        if [ -r "$i" ]; then
            if [ "$PS1" ]; then
                . "$i"
            else
                . "$i" >/dev/null
            fi
        fi
    done

    unset i
    unset -f pathmunge
  fi

fi
# vim:ts=4:sw=4
alias sj='echo  系统时间是`date  | cut  -d " " -f 5`'

:wq!                            

在末行模式按G切换到最后一行,在按o切到下一行,然后再保存


[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'        别名信息并没有立刻生效

在vim    /etc/bashrc   定义永久生效的别名(在配置文件中修改)后,如何使别名信息生效?

重新加载一下bashrc程序

法一

重新连接一下终端,重新运行一下bashrc解释器

[root@localhost ~]# exit
exit
[redhat@localhost root]$ exit
exit
[root@localhost ~]# cd  /
[root@localhost /]# exit
logout

Connection closed.

Disconnected from remote host(redhat) at 23:16:43.

Type `help' to learn how to use Xshell prompt.
[C:\~]$ ssh  192.168.242.128


Connecting to 192.168.242.128:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Activate the web console with: systemctl enable --now cockpit.socket

This system is not registered to Red Hat Insights. See https://cloud.redhat.com/
To register this system, run: insights-client --register

Last login: Mon Dec  5 04:12:33 2022
/usr/bin/xauth:  file /home/redhat/.Xauthority does not exist
Session lifetime based on X11 requested, but X11 initialization failed.
-bash: /etc/bashrc: Permission denied
-bash: /etc/bashrc: Permission denied
[redhat@localhost ~]$ su
Password: 
bash: /etc/bashrc: Permission denied
[root@localhost redhat]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias sj='echo  系统时间是`date  | cut  -d " " -f 5`'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'

法二

在当前输入bash,相当于开启一个bashrc子进程

[root@localhost redhat]# bash
bash: /etc/bashrc: Permission denied
[root@localhost redhat]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias sj='echo  系统时间是`date  | cut  -d " " -f 5`'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'

vim     ~/.bashrc   定义永久生效的别名,对系统中当前用户生效

        家目录下

[root@localhost ~]# vim  .bashrc
# .bashrc
  
# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias sj='echo  系统时间是`date  | cut  -d " " -f 5`'

 同样需要重新加载一下bashrc程序,新添加的别名信息才能被读取运行

法一

重新连接一下终端,重新运行一下bashrc解释器

法二

在当前输入bash,相当于开启一个bashrc子进程

   删除永久别名

在配置文件中直接把该文件删掉:直接打开配置文件

[root@localhost ~]# vim  /etc/bashrc   





      dd删除光标所在行

删除后终端上的别名还在,需要重启一下终端,重新运行读取一下配置文件

#\cp      不匹配别名直接匹配cp命令本身   (   \   转义字符)(通过反 \ 对命令做一个解释表示(不会出现提示 ,强制覆盖)


[root@localhost ~]# cp  A  /

[root@localhost ~]# echo  123  >A
[root@localhost ~]# cat  A
123
[root@localhost ~]# cat  /A
2022
Dec 1 14:29

[root@localhost ~]# cp  A  /
cp: overwrite '/A'? ^C

[root@localhost ~]# \cp  A  /        (直接强制覆盖)
[root@localhost ~]# cat   /A
123


命令的缓存

hash  查看系统命令缓存

缓存存在优势:若该命令没有别名,会通过缓存直接匹配, 比环境路下快

(下载文件时,不用考虑网络好坏,是否连接,比服务器下加载要快很多)

缓存缺陷:在本地做了一个缓存,会占用存储空间

[root@localhost ~]# hash
hits	command
   3	/usr/bin/cat
   2	/usr/bin/vim
   7	/usr/bin/cp
   2	/usr/bin/ls
命令缓存的命中次数 命令路径
        (不需要通过环境变量的路径去查看)

如果一条命令存在缓存,一定只通过缓存执行,不会通过原程序的路径匹配

如果把该命令从缓存路径移动到另一个环境路径下  ,则该命令不会执行(以为该命令只能通过缓存执行

[root@localhost ~]# hash
hits	command
   3	/usr/bin/cat
   2	/usr/bin/vim
   7	/usr/bin/cp
   2	/usr/bin/ls
[root@localhost ~]# echo  $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@localhost ~]# mv  /usr/bin/cat   /root/bin
[root@localhost ~]# cat   /A
-bash: /usr/bin/cat: No such file or directory

[root@localhost ~]# mv /root/bin          /usr/bin/cat   
[root@localhost ~]# cat  /A
123

hash  -d 命令名字     删除指定命令的缓存

[root@localhost ~]# hash  -d  cat     (清除cat的缓存命令)
[root@localhost ~]# hash                  
hits	command
   2	/usr/bin/vim
   2	/usr/bin/mv
   7	/usr/bin/cp
   2	/usr/bin/ls
[root@localhost ~]# cat  /A
123

hash  -r   清空所有命令缓存(法一)

也可以通过exit   退出终端可以清除终端中的命令缓存(法二)

[root@localhost ~]# hash  -r
[root@localhost ~]# hash
hash: hash table empty
[root@localhost ~]# exit   
logout

Connection closed.

exit   退出终端可以终端中的命令缓存

[root@localhost ~]# exit
logout

Connection closed.

Disconnected from remote host(redhat) at 14:42:26.

Type `help' to learn how to use Xshell prompt.
[C:\~]$ ssh  192.168.242.128


date

显示的样式:

--version
 显示的形式             output version information and exit    (标记时间格式信息)

       FORMAT controls the output.  Interpreted sequences are:

       %%     a literal %

       %a     locale's abbreviated weekday name (e.g., Sun)    ( 显示星期几,缩写)
 
       %A     locale's full weekday name (e.g., Sunday)         (....... 完整单词)

       %b     locale's abbreviated month name (e.g., Jan)        

       %B     locale's full month name (e.g., January)

       %c     locale's date and time (e.g., Thu Mar  3 23:05:25 2005)

       %C     century; like %Y, except omit last two digits (e.g., 20)

       %d     day of month (e.g., 01)                              (日   天)                 

       %D     date; same as %m/%d/%y                               (月  日  年)

       %e     day of month, space padded; same as %_d

       %F     full date; same as %Y-%m-%d                           (年  月  日)

       %g     last two digits of year of ISO week number (see %G)

       %G     year of ISO week number (see %V); normally useful only with %V

       %h     same as %b

       %H     hour (00..23)                                         (时   24)

       %I     hour (01..12)

       %j     day of year (001..366)

       %k     hour, space padded ( 0..23); same as %_H

       %l     hour, space padded ( 1..12); same as %_I

       %m     month (01..12)

       %M     minute (00..59)                                      (    分   60  )

       %n     a newline

       %N     nanoseconds (000000000..999999999)

       %p     locale's equivalent of either AM or PM; blank if not known

       %P     like %p, but lower case

       %q     quarter of year (1..4)

       %r     locale's 12-hour clock time (e.g., 11:11:04 PM)

       %R     24-hour hour and minute; same as %H:%M

       %s     seconds since 1970-01-01 00:00:00 UTC

       %S     second (00..60)                                        (   秒      )

       %t     a tab

       %T     time; same as %H:%M:%S                                  (时  分  秒)

       %u     day of week (1..7); 1 is Monday

       %U     week number of year, with Sunday as first day of week (00..53)

       %V     ISO week number, with Monday as first day of week (01..53)

       %w     day of week (0..6); 0 is Sunday

       %W     week number of year, with Monday as first day of week (00..53)

       %x     locale's date representation (e.g., 12/31/99)

       %X     locale's time representation (e.g., 23:13:48)

       %y     last two digits of year (00..99)                   (年的后两位数字)

       %Y     year                                               (全部数字)



显示时间相关信息:   date      +"显示的样式"

eg:

[root@localhost ~]# date  +%D
12/05/22
[root@localhost ~]# date  +%F
2022-12-05
[root@localhost ~]# date  +%T
23:37:58


[root@localhost ~]# date  +"%y-%m-%d"
22-12-05

[root@localhost ~]# date  +"%Y-%m-%d"
2022-12-05
(用什么符号分割由引号中决定)

[root@localhost ~]# date  +"%y-%m-%d-%H:%M"
22-12-05-23:22
[root@localhost ~]# date  +"%y-%m-%d-%H:%M:%S"
22-12-05-23:24:51

eg:

①在当前主机创建一个文件能够显示对应的时间信息,也就是文件名以当前时间点来命名

[root@localhost ~]# touch `date  +"%H:%M:%S"file.txt`
[root@localhost ~]# touch `date  +"%H:%M:%S"file.txt`
[root@localhost ~]# touch `date  +"%H:%M:%S"file.txt`
[root@localhost ~]# ll
total 56
-rw-r--r--. 1 root root    0 Dec  2 18:10 1
-rw-r--r--. 1 root root    0 Dec  2 18:10 2
-rw-r--r--. 1 root root    0 Dec  5 23:33 23:33:24file.txt
-rw-r--r--. 1 root root    0 Dec  5 23:33 23:33:27file.txt
-rw-r--r--. 1 root root    0 Dec  5 23:33 23:33:29file.txt

②通过date 更改时间   (笔试时会通过选择题来考命令格式

注:更改时间之前要对时区做出一个更改  (CST :北京时间  UTC :国际时间)

  date       月日时分年.

  date       -s  '        '         (-s可以对指定格式做出更改)

[root@localhost ~]# date  120515462022.00
Mon Dec  5 15:46:00 CST 2022
[root@localhost ~]# date  -s  '2022-12-5  15:52:00' 

③更改时区

[root@localhost ~]# timedatectl   set-timezone   Asia/Shanghai
                     时间日期        时区建立        具体地点

④查看时区

[root@localhost ~]# timedatectl   list-timezones  

⑤timedatectl  可以用来修改时区,也可以作为时间查看

[root@localhost ~]# timedatectl    再敲一个tab
list-timezones   set-ntp          set-timezone     show-timesync    timesync-status
set-local-rtc    set-time         show             status           


[root@localhost ~]# timedatectl  
               Local time: Mon 2022-12-05 16:09:23 CST
           Universal time: Mon 2022-12-05 08:09:23 UTC
                 RTC time: Mon 2022-12-05 16:09:02
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no


[root@localhost ~]# timedatectl     status (状态显示)
               Local time: Mon 2022-12-05 16:10:25 CST   当前主机时间
           Universal time: Mon 2022-12-05 08:10:25 UTC   世界标准时
                 RTC time: Mon 2022-12-05 16:10:04      (RTC---硬件时间) 与上面的系统时间有
                Time zone: Asia/Shanghai (CST, +0800)                 一定的误差
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no

[root@localhost ~]# timedatectl     show (展示操作)
Timezone=Asia/Shanghai
LocalRTC=no
CanNTP=yes
NTP=no
NTPSynchronized=no
TimeUSec=Mon 2022-12-05 16:18:10 CST   系统时间
RTCTimeUSec=Tue 2022-12-06 00:17:49 CST   硬件时间


cal    显示日历信息

 cal [options]    [[[day] month] year]       参数[ ]里面第一个数字是 年 的信息
选项:

Options:
 -1, --one             show only a single month (default)     只显示当前年份当前这个月
 -3, --three           show three months spanning the date    显示上一个月 当前月 下一个月
 -n, --months <num>    show num months starting with date's month  指定月份
 -S, --span            span the date when displaying multiple months    
 -s, --sunday          Sunday as first day of week             以星期日为一个星期的第一天
 -m, --monday          Monday as first day of week             以星期一为一个星期的第一天   
 -j, --julian          use day-of-year for all calendars      显示今天这一天是一年的第几天
     --reform <val>    Gregorian reform date (1752|gregorian|iso|julian)
     --iso             alias for --reform=iso
 -y, --year            show the whole year
 -Y, --twelve          show the next twelve months
 -w, --week[=<num>]    show US or ISO-8601 week numbers
     --color[=<when>]  colorize messages (auto, always or never)
                         colors are enabled by default

 -h, --help            display this help
 -V, --version         display version








 

命令演示:

eg:

[root@localhost ~]# cal  显示当前这个月
    December 2022   
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31



[root@localhost ~]# cal  2022
                               2022                               

       January               February                 March       
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
                   1          1  2  3  4  5          1  2  3  4  5
 2  3  4  5  6  7  8    6  7  8  9 10 11 12    6  7  8  9 10 11 12
 9 10 11 12 13 14 15   13 14 15 16 17 18 19   13 14 15 16 17 18 19
16 17 18 19 20 21 22   20 21 22 23 24 25 26   20 21 22 23 24 25 26
23 24 25 26 27 28 29   27 28                  27 28 29 30 31      
30 31                                                             
        April                   May                   June        
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
                1  2    1  2  3  4  5  6  7             1  2  3  4
 3  4  5  6  7  8  9    8  9 10 11 12 13 14    5  6  7  8  9 10 11
10 11 12 13 14 15 16   15 16 17 18 19 20 21   12 13 14 15 16 17 18
17 18 19 20 21 22 23   22 23 24 25 26 27 28   19 20 21 22 23 24 25
24 25 26 27 28 29 30   29 30 31               26 27 28 29 30      
                                                                  
        July                  August                September     
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
                1  2       1  2  3  4  5  6                1  2  3
 3  4  5  6  7  8  9    7  8  9 10 11 12 13    4  5  6  7  8  9 10
10 11 12 13 14 15 16   14 15 16 17 18 19 20   11 12 13 14 15 16 17
17 18 19 20 21 22 23   21 22 23 24 25 26 27   18 19 20 21 22 23 24
24 25 26 27 28 29 30   28 29 30 31            25 26 27 28 29 30   
31                                                                
       October               November               December      
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
                   1          1  2  3  4  5                1  2  3
 2  3  4  5  6  7  8    6  7  8  9 10 11 12    4  5  6  7  8  9 10
 9 10 11 12 13 14 15   13 14 15 16 17 18 19   11 12 13 14 15 16 17
16 17 18 19 20 21 22   20 21 22 23 24 25 26   18 19 20 21 22 23 24
23 24 25 26 27 28 29   27 28 29 30            25 26 27 28 29 30 31
30 31    


                                                         
[root@localhost ~]# cal  3  2022
     March 2022     
Su Mo Tu We Th Fr Sa
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

  
                    
[root@localhost ~]# cal  1  3  2022
     March 2022     
Su Mo Tu We Th Fr Sa
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31      
                    

 -s, --sunday          Sunday as first day of week             以星期日为一个星期的第一天
 -m, --monday          Monday as first day of week             以星期一为一个星期的第一天 

[root@localhost ~]# cal  -s
    December 2022   
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
                    
[root@localhost ~]# cal  -m
    December 2022   
Mo Tu We Th Fr Sa Su
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31   

 -j, --julian          use day-of-year for all calendars      显示今天这一天是一年的第几天
     --reform <val>    Gregorian reform date (1752|gregorian|iso|julian)
     --iso             alias for --reform=iso

[root@localhost ~]# cal  -j
       December 2022       
Sun Mon Tue Wed Thu Fri Sat
                335 336 337
338 339 340 341 342 343 344
345 346 347 348 349 350 351
352 353 354 355 356 357 358
359 360 361 362 363 364 365

本节重点:tar  (打包命令)

      环境变量------$PATH      5个路径            

linux主机上查找文件的四种方式(面试时会让你介绍)

which 基于环境变量 ()路径开始匹配文件,查找是可执行文件 echo $PATH

whereis 基于环境变量 ()路径开始匹配文件,查找所有文件

locate 全盘搜索,默认查找的是数据库中的文件,所以查找文件前需要更新数据库

find 全盘搜索


补:

① -a   -o      ! /-not    (find命令下两个搜索条件用 (与   或  非)

     与   或      非

与:多个条件用和做连接,就是多个条件同时满足,在命令中,确保多个命令的每个条件都是成立的,这个命令才会执行

或:多个条件,只要满足一个条件,这条命令就会执行

非:取反

②重新连接终端:

[C:\~]$ ssh  192.168.242.128

新手小白, 请多多指教~~~~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值