Linux常见指令-2

我们本期继续学习Linux基本指令,没有看过第一期的小伙伴建议先看第一期

(4条消息) Linux常见指令-1_KLZUQ的博客-CSDN博客

目录

15.时间相关指令

16.cal指令

17.find指令

18.grep指令

19.zip/unzip指令

20.tar指令

21.bc指令

22.uname –r指令

22.重要的几个热键

24.关机

拓展


 我们之前都使用root账号,之后我们都将使用普通用户账号,因为我们未来使用的是普通用户账号

Linux常见指令-2_第1张图片

我在这里创建了一个新的目录,后面的操作在里面演示

15.时间相关指令

date 显示
date 指定格式显示时间: date +%Y:%m:%d
date 用法: date [OPTION]... [+FORMAT]
1. 在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
%H : 小时 (00..23)
%M : 分钟 (00..59)
%S : (00..61)
%X : 相当于 %H:%M:%S
%d : (01..31)
%m : 月份 (01..12)
%Y : 完整年份 (0000..9999)
%F : 相当于 %Y-%m-%d
2. 在设定时间方面
date -s // 设置当前时间,只有 root 权限才能设置,其他只能查看。
date -s 20080523 // 设置成 20080523 ,这样会把具体时间设置成空 00:00:00
date -s 01:01:01 // 设置具体时间,不会对日期做更改
date -s “01:01:01 2008-05-23″ // 这样可以设置全部时间
date -s “01:01:01 20080523″ // 这样可以设置全部时间
date -s “2008-05-23 01:01:01″ // 这样可以设置全部时间
date -s “20080523 01:01:01″ // 这样可以设置全部时间
3. 时间戳
时间 -> 时间戳: date +%s
时间戳 -> 时间: date -d@1508749502
Unix 时间戳(英文为 Unix epoch, Unix time, POSIX time Unix timestamp )是从 1970 1 1 日( UTC/GMT
午夜)开始所经过的秒数,不考虑闰秒。

时间在计算机这块是很重要的,我们以后是要写日志的,我们可以根据问题出现的时间,来推段这个问题产生的原因,是由人为操作机器导致的,还是别的原因

比如我们写了一个服务器挂了,我们要看看是什么时候挂掉的,我们要根据挂掉的时长来评估问题的严重性

程序运行到每一个关键时刻,都要自己打日志,日志里会包含时间,日志等级,日志信息,还有一些其他的信息,日志后会以行为单位,写入一个文件中,这个文件就被称为日志文件

在Linux中显示时间就使用date

但是这个风格我们看起来很别扭

Linux常见指令-2_第2张图片

我们可以根据需求来提取并指定格式 

Linux常见指令-2_第3张图片

这里是不可以使用空格的,否则会变为两个参数 ,我们使用_即可

Linux常见指令-2_第4张图片

我们用date +%s ,会显示出一长串数字,而且我们连续多次打印发现他会自增

这个就是时间戳,简单来说,时间戳就是为了在互联网上统一时间,而规定的一个标准,是从1970年1月1日累计秒数,我们在日志中如果使用时间戳的话,因为是单调自增,我们在查找问题时就可以非常容易确认范围,从而进行判断

不过时间戳我们看起来非常难受,我们可以把它转换为我们使用的格式吗?

我们可以用-d,然后@,后跟时间戳即可,这里的格式是系统自带的,我们可以根据需求修改

我们加上上面的格式即可 

Linux常见指令-2_第5张图片

我们可以把时间戳减少两位,或者直接输入0,都可以转换为对应时间

但是我们这里发现,0的时间戳并不是零时0分0秒,而是8时,这是因为这个时间规定的地方在欧洲,和我们是有时差的

Linux常见指令-2_第6张图片

我们增加它发现,确实是秒数 

既然是递增的,又是在计算机里,总一天这个时间戳其实是会溢出的,这个溢出其实是很严重的,比如我们转账,买车票等等,转账时间变成2000年前,车票的日期变成几百年前,对于社会影响其实还是很大的,在2038年,时间戳就会溢出,不过这是未来的问题,到时候我们也会解决这个问题

16.cal指令

cal 命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。 阳历 又名 太阳历” ,系以地球绕行太阳一周为一年,为西方各国所通用,故又名 “西
命令格式 cal [ 参数 ][ 月份 ][ 年份 ]
功能 : 用于查看日历等时间信息,如只有一个参数,则表示年份 (1-9999) ,如有两个参数,则表示月份和年份
常用选项
-3  显示系统前一个月,当前月,下一个月的月历
-j   显示在当年中的第几天(一年日期按天算,从 1 1 号算起,默认显示当前月在一年中的天数)
-y   显示当前年份的日历

Linux常见指令-2_第7张图片

 我们可以用cal打印出当前月的日历,cal -3打印出前一个月,本月和下一个月总共三个月的日历,也可以cal 2023,打印出2023年的所有日历

17.find指令

Linux fifind 命令在目录结构中搜索文件,并执行指定的操作。
Linux fifind 命令提供了相当多的查找条件,功能很强大。由于 fifind 具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。
即使系统中含有网络文件系统 ( NFS) fifind 命令在该文件系统中同样有效,只你具有相应的权限。
在运行一个非常消耗资源的 fifind 命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间( 这里是指 30G 字节以上的文件系统 )
语法: fifind pathname -options
功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项:
-name   按照文件名查找文件

find指令选项非常多,我们只讲一个选项

Linux常见指令-2_第8张图片

find后跟目录,这里~是家目录的意思,然后跟-name,后接我们要查找的文件,比如上面我们就有一个test.c文件,我们就使用find找到了它所在的路径

 

我们也可以*.c查找所有的.c文件

Linux常见指令-2_第9张图片

还可以找到我们的指令

 另外,如果我们此时的账号是普通用户,在搜索某些目录时,有可能出现Permission denied的报错,这是权限的问题,我们后续讲解

总结一下,find可以在指定路径下进行文件搜索,是真的在磁盘文件中进行搜索

另外,which也可以搜索 ,只不过which是在指令所在的路径下(/usr/bin)搜索对应的指令文件

Linux常见指令-2_第10张图片

 whereis一般是在系统路径下,显示出包含我们输入的内容

比如我们输入了ls,他就会显示包含ls的文件

比如这里我们查找了stdio.h

 whereis是介于which和find之间,在系统特定的路径下,既可以找到可执行程序,又可以找到手册,安装包,压缩包之类

18.grep指令

语法: grep [ 选项 ] 搜寻字符串文件
功能: 在文件中搜索字符串,将找到的行打印出来
常用选项:
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 ' 搜寻字符串 ' 内容的那一行

 

我们可以使用这条语句输出10000条hello linux

 我们把这1w条hello linux重定向到一个文件里,构造一个大文件

此时我们就有了一个大文件

 Linux常见指令-2_第11张图片

我们可以使用head和tail来查看文件的前面几行或者结尾几行,但是这个文件太大了,我们想要查找中间行时,如果使用less的话需要翻好久,比如这里我们想看有关9的行

Linux常见指令-2_第12张图片

这样就会把所有包含9的行打印出来

Linux常见指令-2_第13张图片

或者是999的

grep是行文本过滤工具 ,grep就是把我们的文件打开按行读取,如果该行没有我们需要的就丢弃,如果包含就显示打印

Linux常见指令-2_第14张图片

我们使用nano重新在该文件里写入内容

 Linux常见指令-2_第15张图片

我们可以看到这里是按world进行子串匹配

Linux常见指令-2_第16张图片

我们还可以使用-v选项,此时会打印出不包含world的行

Linux常见指令-2_第17张图片

我们还可以使用-n选项来给打印出来的行显示编号,另外,如果' '里什么也没写,就会将所有行打印出来,比如上面的第二种

 Linux常见指令-2_第18张图片

我们可以打印出abc,然后使用-i选项,i是忽略大小写的意思

Linux常见指令-2_第19张图片

而使用场景,我们可以和管道相结合

 我们可以先使用find查找文件所在位置,然后使用grep来查看想要的内容

 而且grep后不止可以跟一个文件,是可以跟多个文件的,比如我上面只有一个test.c,如果有多个,我们可以把多个路径写在grep后面,他会根据你的需求显示出你所需要的

我们可以使用-R选项,来直接在目录下把所有包含我们需要的内容显示出来

grep后续我们要使用它配合管道来查找程序,进程等等

19.zip/unzip指令

语法: zip 压缩文件 .zip 目录或文件
功能: 将目录或文件压缩成 zip 格式
常用选项:
-r 递 归处理,将指定目录下的所有文件和子目录一并处理
举例
test2 目录压缩: zip test2.zip test2/*
解压到 tmp 目录: unzip test2.zip -d /tmp

使用zip指令前要看看自己的Linux是否安装了zip,如果报错,我们要使用下面的语句进行安装(在root账号下)

yum install -y zip unzip

我们在传输文件时,经常会谈到打包和压缩这两个概念,打包就是把所有的东西装在一起,压缩就是把东西按照合理的顺序摆放,以节省空间

我们在网络上下载的很多东西都是打包压缩的,这是为什么呢?首先,能被打包压缩的,一定是一个整体,比如我们写了一个软件,这个软件有它所依赖的文件,环境等等,我们打包时要将这些全部打包,打包后就变成了一个文件,一个文件的优点就是不容易造成文件缺失,比如我们传输几千个文件,如果我们分开传输,最难受的是缺失一两个,我们首先要知道的是缺失的是哪一个,而我们打包成一个后就没有这些麻烦了。打包压缩的第二个特点是会使体积变小,现在的互联网网速比以前快多了,我们可以能没什么感觉,如果是以前,对打包压缩的要求非常高,如果体积太大,会带来两个问题,下载时间变长,存储空间变大,所以打包压缩可以使体积变小,下载时间变短,以前上网使用流量是很贵的

因为这些理由,就有了对应的打包压缩工具,Linux充当服务器时,也有各种网络应用场景,满足通讯要求

在Windows下,我们是可以看到压缩信息的

Linux常见指令-2_第20张图片

 在上面的详细信息里也能看到别的一些内容,大家有兴趣可以去看一看

Linux常见指令-2_第21张图片

我在这里创建了一个d1,其中file1.txt里hello world,其余是空文件

 我们下面来演示指令,我们打包整个d1目录

Linux常见指令-2_第22张图片

zip后跟我们打包后的名字,然后跟要打包的文件,执行后我们可以看到出现了d1.zip的文件 

Linux常见指令-2_第23张图片

我们把这个包移动到上级目录

Linux常见指令-2_第24张图片

然后我们把它解压,查看后发现只有一个单独的d1,里面是空的

原因是默认只会把d1当一个文件打包,所以我们解压后只有一个

Linux常见指令-2_第25张图片

要想打包所有内容,需要-r选项

Linux常见指令-2_第26张图片

然后我们再按照之前的步骤,移动,解压,查看,发现是全部都有的,我们再看看file1文件

发现也是有的,以上就是我们对一个目录的打包压缩以及解压等等

如果我们想要把d1和long.txt一起打包呢?

Linux常见指令-2_第27张图片

我们只需要在后续跟上需要打包的文件即可

 另外,我们平时在解压时,还会有解压到的选项,解压到我们指定的路径下

Linux常见指令-2_第28张图片

这里我们就把d1.zip解压到了test目录下,我们来看看是否解压成功

Linux常见指令-2_第29张图片

是解压成功的

20.tar指令

tar [-cxtzjvf]  文件与目录  ....
参数
-c  :建立一个压缩文件的参数指令 (create  的意思 )
-x  :解开一个压缩文件的参数指令!
-t  :查看  tarfifile  里面的文件!
-z  :是否同时具有  gzip  的属性?亦即是否需要用  gzip  压缩?
-j  :是否同时具有  bzip2  的属性?亦即是否需要用  bzip2  压缩?
-v  :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f  :使用档名,请留意,在  f  之后要立即接档名喔!不要再加参数!
-C : 解压到指定目录

打包和压缩的方案有很多种

我们可以通过百度查询,Linux压缩包后缀,是有非常多的种类的

比如.gz,.bz2,.tar,.tar.gz,.tar.bz2,.tar.xz

我们不知道的对应解压命令都可以通过百度来查询

Linux常见指令-2_第30张图片

 c表示创建,我们打包后要变为新的文件,z表示要用zip方式压缩,f表示指明文档名称,也就是code.tar.gz,这里tar.gz可以简写为tgz

Linux常见指令-2_第31张图片

这里我们用t选项进行查看,不过此时我们并没有对文件解压,但是可以看到压缩包里有什么东西,就像我们在Windows下双击压缩包,预览里面的内容

Linux常见指令-2_第32张图片

我们使用x选项,对压缩包进行解压,是没有问题的

总结一下:

tar czf XXX 打包压缩

tar tzf XXX.tgz 预览

tar xzf XXX.tgz 解压解包

大家记住这三个即可,上面的tar是打包后缀,.gz是压缩后缀,简写为tgz

如果我们想要把他解压到别的路径下呢?

Linux常见指令-2_第33张图片

使用-C选项,后跟路径,这样就可以解压到指定路径下了

21.bc指令

bc 命令可以很方便的进行浮点运算
Linux常见指令-2_第34张图片

简单来说,就是计算器,quit是退出 

Linux常见指令-2_第35张图片

我们可以把它和管道结合使用

22.uname –r指令

语法 uname [ 选项
功能 uname 用来获取电脑和操作系统的相关信息。
补充说明 uname 可显示 linux 主机所用的操作系统的版本、硬件的名称等基本信息。
常用选项:
-a –all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称

我们使用Linux时,想到当前的内核版本之类,就可以使用这条指令

 这里我们就使用了-a选项来详细显示

Linux常见指令-2_第36张图片

 x86_64是x64,x86是32位

Linux常见指令-2_第37张图片

在linux下我们可以使用free查内存,大家先了解一下,具体我们后续会讲

Linux常见指令-2_第38张图片

还可以查磁盘

Linux常见指令-2_第39张图片

还有查cpu之类的

Linux常见指令-2_第40张图片

lsmem也可以查内存,未来我们都会学习

22.重要的几个热键

[Tab] 按键 --- 具有『命令补全』和『档案补齐』的功能
[Ctrl]-c 按键 --- 让当前的程序『停掉』
[Ctrl]-d 按键 --- 通常代表着:『键盘输入结束 (End Of File, EOF End OfInput) 』的意思;另外,他也可以用来取代exit

 我们输入w,然后快速按两下tab键就可以显示出所有w开头的指令

如果是whic,我们按一下tab,它会自动补全指令,变为which

 补全后还会带上空格,其他的也是同理,所以我们在输入指令时,可以使用tab进行快速补全,从而提高我们写指令的速度

另外,我们还可以输入a,然后tab两下,看看以a开头的指令有哪些,b开头的等等

另外,如果我们什么也不输入tab两下,可能会没反应,也可能会帮你显示所有的指令

根据我们的系统不同,结果会不同

ctrl+c我们前面介绍过,是终止的意思,这里不再多说

我们再看ctrl+r

是历史命令搜索的意思

根据我们的输入,他会显示出我们历史输入的指令,比如这里我输入了fin,它显示出了我之前使用过的一条指令

Linux会将我们历史上最近的1000条命令进行保存,我们是可以进行检索的,在有时候我们懒的写命令时是可以这样玩的

既然Linux可以记录我们的命令,我们就是可以查看的,使用history即可

Linux常见指令-2_第41张图片

这里的330指令history就是查询历史记录 

下面来看ctrl+d,这是退出的意思,我们按的话会退出xshell

24.关机

语法 shutdown [ 选项 ] ** 常见选项: **
-h : 将系统的服务停掉后,立即关机。
-r : 在将系统的服务停掉之后就重新启动
-t sec -t 后面加秒数,亦即『过几秒后关机』的意思

 关机指令大家了解即可,我们的Linux操作系统(服务器)一般是永不关机的

拓展

◆ 安装和登录命令 login shutdown halt reboot install mount umount chsh exit last
◆ 文件处理命令: fifile mkdir grep dd fifind mv ls diffff cat ln
◆ 系统管理相关命令 df top free quota at lp adduser groupadd kill crontab
◆ 网络操作命令 ifconfifig ip ping netstat telnet ftp route rlogin rcp fifinger mail nslookup
◆ 系统安全相关命令: passwd su umask chgrp chmod chown chattr sudo ps who
◆ 其它命令: tar unzip gunzip unarj mtools man unendcode uudecode

以上为拓展内容,大家感兴趣的话去了解一下即可 

至此,我们的基本指令就全部完了,我们可能用到的其他指令我会在未来博客中进行穿插讲解

以上即为本期全部内容,希望大家可以有所收获

如有错误,还请指正

你可能感兴趣的:(linux,运维,服务器)