我们本期继续学习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账号,之后我们都将使用普通用户账号,因为我们未来使用的是普通用户账号
我在这里创建了一个新的目录,后面的操作在里面演示
date 显示date 指定格式显示时间: date +%Y:%m:%ddate 用法: 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-%d2. 在设定时间方面date -s // 设置当前时间,只有 root 权限才能设置,其他只能查看。date -s 20080523 // 设置成 20080523 ,这样会把具体时间设置成空 00:00:00date -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@1508749502Unix 时间戳(英文为 Unix epoch, Unix time, POSIX time 或 Unix timestamp )是从 1970 年 1 月 1 日( UTC/GMT 的午夜)开始所经过的秒数,不考虑闰秒。
时间在计算机这块是很重要的,我们以后是要写日志的,我们可以根据问题出现的时间,来推段这个问题产生的原因,是由人为操作机器导致的,还是别的原因
比如我们写了一个服务器挂了,我们要看看是什么时候挂掉的,我们要根据挂掉的时长来评估问题的严重性
程序运行到每一个关键时刻,都要自己打日志,日志里会包含时间,日志等级,日志信息,还有一些其他的信息,日志后会以行为单位,写入一个文件中,这个文件就被称为日志文件
在Linux中显示时间就使用date
但是这个风格我们看起来很别扭
我们可以根据需求来提取并指定格式
这里是不可以使用空格的,否则会变为两个参数 ,我们使用_即可
我们用date +%s ,会显示出一长串数字,而且我们连续多次打印发现他会自增
这个就是时间戳,简单来说,时间戳就是为了在互联网上统一时间,而规定的一个标准,是从1970年1月1日累计秒数,我们在日志中如果使用时间戳的话,因为是单调自增,我们在查找问题时就可以非常容易确认范围,从而进行判断
不过时间戳我们看起来非常难受,我们可以把它转换为我们使用的格式吗?
我们可以用-d,然后@,后跟时间戳即可,这里的格式是系统自带的,我们可以根据需求修改
我们加上上面的格式即可
我们可以把时间戳减少两位,或者直接输入0,都可以转换为对应时间
但是我们这里发现,0的时间戳并不是零时0分0秒,而是8时,这是因为这个时间规定的地方在欧洲,和我们是有时差的
我们增加它发现,确实是秒数
既然是递增的,又是在计算机里,总一天这个时间戳其实是会溢出的,这个溢出其实是很严重的,比如我们转账,买车票等等,转账时间变成2000年前,车票的日期变成几百年前,对于社会影响其实还是很大的,在2038年,时间戳就会溢出,不过这是未来的问题,到时候我们也会解决这个问题
cal 命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。 “ 阳历 ” 又名 “ 太阳历” ,系以地球绕行太阳一周为一年,为西方各国所通用,故又名 “西 历 ” 。命令格式 : cal [ 参数 ][ 月份 ][ 年份 ]功能 : 用于查看日历等时间信息,如只有一个参数,则表示年份 (1-9999) ,如有两个参数,则表示月份和年份常用选项 :-3 显示系统前一个月,当前月,下一个月的月历-j 显示在当年中的第几天(一年日期按天算,从 1 月 1 号算起,默认显示当前月在一年中的天数)-y 显示当前年份的日历
我们可以用cal打印出当前月的日历,cal -3打印出前一个月,本月和下一个月总共三个月的日历,也可以cal 2023,打印出2023年的所有日历
Linux 下 fifind 命令在目录结构中搜索文件,并执行指定的操作。Linux 下 fifind 命令提供了相当多的查找条件,功能很强大。由于 fifind 具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统 ( NFS) , fifind 命令在该文件系统中同样有效,只你具有相应的权限。在运行一个非常消耗资源的 fifind 命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间( 这里是指 30G 字节以上的文件系统 ) 。语法: fifind pathname -options功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)常用选项:-name 按照文件名查找文件
find指令选项非常多,我们只讲一个选项
find后跟目录,这里~是家目录的意思,然后跟-name,后接我们要查找的文件,比如上面我们就有一个test.c文件,我们就使用find找到了它所在的路径
我们也可以*.c查找所有的.c文件
还可以找到我们的指令
另外,如果我们此时的账号是普通用户,在搜索某些目录时,有可能出现Permission denied的报错,这是权限的问题,我们后续讲解
总结一下,find可以在指定路径下进行文件搜索,是真的在磁盘文件中进行搜索
另外,which也可以搜索 ,只不过which是在指令所在的路径下(/usr/bin)搜索对应的指令文件
whereis一般是在系统路径下,显示出包含我们输入的内容
比如我们输入了ls,他就会显示包含ls的文件
比如这里我们查找了stdio.h
whereis是介于which和find之间,在系统特定的路径下,既可以找到可执行程序,又可以找到手册,安装包,压缩包之类
语法: grep [ 选项 ] 搜寻字符串文件功能: 在文件中搜索字符串,将找到的行打印出来常用选项:-i :忽略大小写的不同,所以大小写视为相同-n :顺便输出行号-v :反向选择,亦即显示出没有 ' 搜寻字符串 ' 内容的那一行
我们可以使用这条语句输出10000条hello linux
我们把这1w条hello linux重定向到一个文件里,构造一个大文件
此时我们就有了一个大文件
我们可以使用head和tail来查看文件的前面几行或者结尾几行,但是这个文件太大了,我们想要查找中间行时,如果使用less的话需要翻好久,比如这里我们想看有关9的行
这样就会把所有包含9的行打印出来
或者是999的
grep是行文本过滤工具 ,grep就是把我们的文件打开按行读取,如果该行没有我们需要的就丢弃,如果包含就显示打印
我们使用nano重新在该文件里写入内容
我们可以看到这里是按world进行子串匹配
我们还可以使用-v选项,此时会打印出不包含world的行
我们还可以使用-n选项来给打印出来的行显示编号,另外,如果' '里什么也没写,就会将所有行打印出来,比如上面的第二种
我们可以打印出abc,然后使用-i选项,i是忽略大小写的意思
而使用场景,我们可以和管道相结合
我们可以先使用find查找文件所在位置,然后使用grep来查看想要的内容
而且grep后不止可以跟一个文件,是可以跟多个文件的,比如我上面只有一个test.c,如果有多个,我们可以把多个路径写在grep后面,他会根据你的需求显示出你所需要的
我们可以使用-R选项,来直接在目录下把所有包含我们需要的内容显示出来
grep后续我们要使用它配合管道来查找程序,进程等等
语法: 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下,我们是可以看到压缩信息的
在上面的详细信息里也能看到别的一些内容,大家有兴趣可以去看一看
我在这里创建了一个d1,其中file1.txt里hello world,其余是空文件
我们下面来演示指令,我们打包整个d1目录
zip后跟我们打包后的名字,然后跟要打包的文件,执行后我们可以看到出现了d1.zip的文件
我们把这个包移动到上级目录
然后我们把它解压,查看后发现只有一个单独的d1,里面是空的
原因是默认只会把d1当一个文件打包,所以我们解压后只有一个
要想打包所有内容,需要-r选项
然后我们再按照之前的步骤,移动,解压,查看,发现是全部都有的,我们再看看file1文件
发现也是有的,以上就是我们对一个目录的打包压缩以及解压等等
如果我们想要把d1和long.txt一起打包呢?
我们只需要在后续跟上需要打包的文件即可
另外,我们平时在解压时,还会有解压到的选项,解压到我们指定的路径下
这里我们就把d1.zip解压到了test目录下,我们来看看是否解压成功
是解压成功的
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
我们不知道的对应解压命令都可以通过百度来查询
c表示创建,我们打包后要变为新的文件,z表示要用zip方式压缩,f表示指明文档名称,也就是code.tar.gz,这里tar.gz可以简写为tgz
这里我们用t选项进行查看,不过此时我们并没有对文件解压,但是可以看到压缩包里有什么东西,就像我们在Windows下双击压缩包,预览里面的内容
我们使用x选项,对压缩包进行解压,是没有问题的
总结一下:
tar czf XXX 打包压缩
tar tzf XXX.tgz 预览
tar xzf XXX.tgz 解压解包
大家记住这三个即可,上面的tar是打包后缀,.gz是压缩后缀,简写为tgz
如果我们想要把他解压到别的路径下呢?
使用-C选项,后跟路径,这样就可以解压到指定路径下了
简单来说,就是计算器,quit是退出
我们可以把它和管道结合使用
语法 : uname [ 选项 ]功能 : uname 用来获取电脑和操作系统的相关信息。补充说明 : uname 可显示 linux 主机所用的操作系统的版本、硬件的名称等基本信息。常用选项:-a 或 –all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
我们使用Linux时,想到当前的内核版本之类,就可以使用这条指令
x86_64是x64,x86是32位
在linux下我们可以使用free查内存,大家先了解一下,具体我们后续会讲
还可以查磁盘
还有查cpu之类的
lsmem也可以查内存,未来我们都会学习
[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即可
这里的330指令history就是查询历史记录
下面来看ctrl+d,这是退出的意思,我们按的话会退出xshell
语法 : 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 。
以上为拓展内容,大家感兴趣的话去了解一下即可
至此,我们的基本指令就全部完了,我们可能用到的其他指令我会在未来博客中进行穿插讲解
以上即为本期全部内容,希望大家可以有所收获
如有错误,还请指正