💖作者:小树苗渴望变成参天大树
❤️🩹作者宣言:认真写好每一篇博客
💨作者gitee:gitee
💞作者专栏:C语言,数据结构初阶,Linux,C++
文章目录
- 前言
- 一、时间相关的指令
- 二、cal指令
- 三、find -name指令
- 四、grep指令
- 五、zip和unzip指令
- 六、tar指令
- 七、bc指令
- 八、uname -r指令
- 九、重要的几个热键[Tab],[ctrl]-c, [ctrl]-d
- 十、关机
- 十一、总结
前言
今天我将把Linux指令讲完,难度其实还好,但是细节太多,大家一定要理解好,看文章的时候不要急于求成,一个指令的过,这样才能学到更好,并且今天我将切换到普通用户来跟大家讲解,这样对指令的理解徽更好,接下来我们开始进入正文的讲解
一、时间相关的指令
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.时间戳
Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
那时间是我们人为规定的,而且地球是一个圆,个地方时间不一样,所以我们要想办法把时间统一起来,解决时差的问题,不能所以国家·时间都一样,那样就对不上,再计算机中我们采用时间戳的方式来记录时间,我们来看看怎么看Linux上的时间戳:
时间->时间戳:date +%s
这个时间戳我们看到是单调递增的,这上面的数字是从起始时间到现在时间经过了多少秒,我们来看看怎么通过时间戳来看具体时间:
时间戳->时间:date -d@1508749502
我们再来看一个时间戳的案例:
不是说从午夜开始吗??为什么我们是八点开始呢??原因是起始时间是再欧洲那一块,我们这属于东八区,所以比他们早八个小时看到太阳,所以我们从八点开始计算时间戳。
相信到这我把时间戳的概念应该让大家有所了解了吧。
二、cal指令
cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。
命令格式: cal [参数][月份][年份]
功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
常用选项:
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
这个指令没有什么可具体介绍的,就是查看日历的,接下来将的这个非常重要
三、find -name指令
这个指令是非常重要的,而且他的功能非常的强大,有许多选项,今天我就简单的介绍一下
Linux下find命令在目录结构中搜索文件,并执行指定的操作。
Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。
即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统
语法: find pathname -options
功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项:-name 按照文件名查找文件
如果我们想要看到现在我们写过了多少个.c文件
find ~ -name *.c//~是家目录
对于我这个机器我就写了一个.c文件,两个.txt文件
也可以查找想要的指令:
我们看到第一个再绝对路径下查找直接就查找到,再上一级路径下,我们就出现这样的提示,没有权限,再root账户下可能几乎看不到这样的提示,因为root的权限比较大,再学习Linux第一节我就讲过所有目录形成一个树形结构
对于刚才查找的指令,因为我们是普通用户,当查到没有权限的目录下,就会有提示,锁喉才找到我们想要的指令,usr目录下肯定有普通用户访问不了目录。
所以有了这样的知识储备后,我们的普通用户其实是再home目录的一个子目录:
只要再xdh目录下的所有目录,我们进行查找的时候就没有任何限制,就必须加/home/xdh这样的前缀,除非再xdh这个目录下,不然访问都有可能受限制
find可以再指定的路径下对文件进行搜索
我们再学习alias指令的时候,提到过怎么查找指令,which
对于which:只能查找指令,并且把详细的信息显示出来
还有一个查找指令:whereis
这个.gz后面就会讲到就是压缩包的意思,我们也看到man目录,就是手册的位置
whereis:再系统特定的路径下,即可以找到可执行程序,有可以找到手册,安装包,压缩包等
对于这三个指令,都有自己特定使用的场景,大家到时候自己选择使用哪个就好了
补充知识点:
du -k test.txt//按kb计算文件大小
du -m test.txt//按mb计算大小
四、grep指令
语法: grep [选项] 搜寻字符串 文件
功能: 在文件中搜索字符串,将找到的行打印出来
常用选项:
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行
我们先来使用一个脚本,创建一个大文本,简单的测试一下grep指令
cnt=1; while [ $cnt -le 10000 ]; do echo "hello Linux $cnt"; let cnt++; done > test.txt
test.txt里面是10000个这样的数据,我们来查查出现‘999’的行
他是按照一行给你现实出来,所以也叫行文本过滤工具
接下来我们创建一个文件,再里面写一些相关的内容,随便写都行。来测试对应的选项
-i:忽略大小写的不同,所以大小写视为相同
-n:顺便输出行号(把所查找到的内容再文件的第几行显示出来)
-v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行
大家对于在文件中搜索字符串应该理解了吧
grep后可接多个文件,把每个文件中想要的查找的内容显示出来。
五、zip和unzip指令
在我们Windows中,我们经常将文件进行的打包压缩,那我们为什么要这么做呢??原因是有的文件太大了,下载起来太慢了,给用户的体验太差了,所以我们将他们压缩成比较小的文件,其次打包压缩可以将多个文件变成同一个压缩包,不容易造成文件的丢失
总结:
1.能被打包压缩的,一定是一个整体,有多个文件->一个文件,不容易造成文件的丢失
2.打包压缩的,大小变小了,下载时间变成短,用户体验变好了。
所以在Windows上有了许多压缩工具,在Linux也有对应的压缩工具zip和unzip
有的机器默认是没有安装的,所以你单独输入zip unzip 出现了not found 就代表没有安装,输入下面指令进行安装:
yum install -y zip unzip
我们来具体看看再Linux下的压缩解压时怎么完成的,我们先创建一个压缩文件目录,再里面创建一些其他目录和文件。
语法: zip 压缩文件.zip 目录或文件
功能: 将目录或文件压缩成zip格式
常用选项:
-r 递 归处理,将指定目录下的所有文件和子目录一并处理
将test2目录压缩:zip test2.zip test2
我们将zip1目录打包压缩成d1.zip
我们解压一下看看 使用unzip:
解压到指定的tmp目录:unzip test2.zip -d /tmp
我们把d1.zip解压到test1目录下,然后再查看里面的内容就没有了,原因是直接压缩,他会把你的目录直接当成文件进行压缩,里面的就没有,所以看不到里面的内容,我们比较加一个选项才能完成递归式压缩
**-r:**递 归处理,将指定目录下的所有文件和子目录一并处理
这样才可以达到我们想要的效果,所以我建议不管啥时候都带上-r是一个比较好的选择
也可以将统一目录下的文件和子目录一起打包,不需要都放在一个目录下,对一个目录进行打包,这个灵活性比较大
六、tar指令
这也是一个非常重要的指令,这个指令也是关于压缩解压的,但功能比上面两个还要强大,这个指令的选项和find的一样,非常的多,压缩和解压都是这一个指令,用不同的选项而已,所以我只讲常用的和重要的
tar [-cxtzjvf] 文件与目录 … 参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C : 解压到指定目录
这个指令几乎是每个机器都有指令,来使用这个指令看有没有这个指令:
tar --version
出现这个行了
对于这个指令,我们给文件进行压缩打包的后缀就不是zip了,而是tar.gz
tar-打包的后缀
gz-压缩的后缀
打包压缩的缩写为tgz
我们看到上面有许多选项,我们只需要掌握三个就行了
-czf:打包压缩
-tzf:预览
再Windows你点开压缩包会出现下面的情况,让你先预览一下,但这个时候还没有进行解压
再Linux上,使用tar -tzf来预览
-xzf和-C:解压到指定目录下
一个指令解决zip和unzip的所有事,我们目前只需要记住这三个组合选项就行了,而且对于解压到指定路径下zip是-d,tar是-C,这和zip还是有点差别的
我们再来单独看看打包和压缩
仅压缩
打包和压缩可以分开指向也可以一起执行,这个灵活性特别强,现在掌握我最开始讲的三个组合选项就够了,其余的就当了解了。
七、bc指令
这指令就好比我们Windows上的计算机,可以很简单的计算浮点运算,我们具体来看看怎么使用的吧
退出可以按Ctrl+c,这个指令可以配合管道来使用,我们来看看操作
其他没什么好讲解的,我们开始讲解下一个指令
八、uname -r指令
有的时候想看自己的机器是什么版本的话,就需要使用到这个指令
语法:uname [选项]
功能: uname用来获取电脑和操作系统的相关信息。
补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。
常用选项:
-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
九、重要的几个热键[Tab],[ctrl]-c, [ctrl]-d
[Tab]按键—具有『命令补全』和『档案补齐』的功能
[Ctrl]-c按键—让当前的程序『停掉』
[Ctrl]-d按键—通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用来取代exit
这几个热键大家下来可以自己尝试一下,博主就不在这里做具体介绍了
十、关机
语法:shutdown [选项] ** 常见选项:**
-h : 将系统的服务停掉后,立即关机。
-r : 在将系统的服务停掉之后就重新启动
-t sec : -t 后面加秒数,亦即『过几秒后关机』的意思
Windows下也有相关的挂你就按指令,再cmd下运行就行了,大家可以自己去尝试一下。
十一、总结
到这里博主几乎把Linux的操作指令讲解完成了,大家可以操作Linux了,还有许多其他的指令,那都是修改,查看等一下指令,和操作指令不同,其他指令后面遇到在细讲,我先方出来让大家见见:
◆ 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;
◆ 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;
◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab;
◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup;
◆ 系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who;
◆ 其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。
大家先看一下,三篇博客讲解指令,博主也是刚开始学习,指令要多敲才能孰能生巧,所以大家也要多练习,下篇博主将讲解权限的概念,细节很多,大家要做好准备。