一、时间相关的指令
1.指令简介
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的午夜)开始所经过的秒数,不考虑闰秒
2.使用
在实际的写代码中,有一个很重要的东西就是日志
程序运行到自己的每一个关键时刻,都要自己打日志
日志:时间,日志等级,日志具体信息,其他信息
这些东西都要放入一个文件中,也就是日志文件
如下所示都是时间指令的基本使用
下面是一些加上时分秒的
使用起来很简单,但是需要注意的是,date后面+号后必须是一个连续的字符串,不可以加上空格。
不过上面我们注意到了,如果是%s的话,会打印出来一个很奇怪的数字
这个数字其实就是时间戳
我们知道对于每一个时间都有唯一确定的时间戳,所以,我们可以使用下面这条指令去恢复出时间,但是这样的是系统默认的格式,我们可以像前面那样指定格式
date -d @xxxxxxxxx
但是当我们去查看时间戳为0的时候
我们注意到,是早上八点,但是这个时间不应该是凌晨开始的吗?
其实这是因为我们处于东八区,要早八个小时
既然这个时间戳在一直变化,那么就说明是有一个变量存储着它。那么它会不会有一天溢出呢?
当然会,不过那就已经很多年以后了
比如下面的linux系统中,我们可以看到至少都在20亿年以后了,那时候或许早就打败三体文明了
二、cal指令
cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。
命令格式: cal [参数][月份][年份]
功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
常用选项:
- -3 显示系统前一个月,当前月,下一个月的月历
- -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
- -y 显示当前年份的日历
三、find指令 -name
1.介绍
- Linux下find命令在目录结构中搜索文件,并执行指定的操作。
- Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。
- 即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。
- 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)
语法: find pathname -options
功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项:
- -name 按照文件名查找文件
2.使用
第二个参数是指定目录的,而~就是当前用户的目录,所以我们可以在我们这个整个用户中查到我们的文件,结合通配符就非常好用了
我们也可以指定根目录,当然由于权限,很多文件是看不到的
也可以去查指令
find可以在指定的路径下进行文件的搜索 --真的在磁盘文件中搜索
而find与which的区别就是
which只是在/usr/bin指令路径下查询,搜索指令文件,而find是在指定的文件下
而且which指令可以显示它的一些重命名的信息
除了which以外,在查找的时候还可以去使用whereis指令
它可以帮助我们在usr路径下找到只要涵盖了这个名字的全部文件,包括压缩包、文件、指令等等
也就是说whereis:在系统特定路径下查找,既可以找到可执行程序,又可以找到手册,安装包压缩包之类的
四、grep指令
1.介绍
语法: grep [选项] 搜寻字符串 文件
功能: 在文件中搜索字符串,将找到的行打印出来
常用选项:
- -i :忽略大小写的不同,所以大小写视为相同
- -n :顺便输出行号
- -v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行
2.使用
我们先生成一个10w个数字的文件
cnt=1;while [ $cnt -le 100000 ];do echo "Hello world $cnt";let cnt++;done > log.txt
然后我们可以看到这个文件大概有2M个字节
然后我们知道这个文件很多,如果我们想将其中包含9999的全部打印出来,我们就可以使用这个命令
所以grep其实就是一个行文本过滤工具
我们现在重新写一个小一点的文件方便我们后序观察
如果直接grep就是找到包含这个字符串的那一部分,如果加上-v选项,那么就是不包含这个字符串的那一部分
如果加上-n那么就会天然的给我们这个文件加上编号,注意我们这里由于找的是空串,所以全部都可以找得到
当然如果我们是nv的话,就什么也没有了
对于这个行号,它打印的时候,打印的是这个的行坐标不会从1开始,而是原来是多少行就是多少行
如果我们加上-i,就代表ignore,忽略大小写
我们还可以结合管道去打印
对于这个grep指令,当我们想要找到一个程序的main函数,尤其是大文件的时候,就非常好用
而且这个grep不仅仅可以找一个文件,我们可以在它后面跟很多个文件(注意空格隔开),只要可以匹配到,就会打印出来
但是要注意这个我们不可以直接跟一个目录,如果要跟目录的话,那么必须带上-R选项,也就是递归式找
而且这个grep也可以去找进程
五、zip/unzip指令
1.介绍
语法: zip 压缩文件.zip 目录或文件
功能: 将目录或文件压缩成zip格式
常用选项:
- -r 递 归处理,将指定目录下的所有文件和子目录一并处理
- unzip [被解压文件] -d [解压到目标目录]
2.zip的安装
有时候我们的linux系统上没有zip,所以我们需要安装一下
- 首先我们以root方式登录,可以使用ssh/su/su-三种方式切换到root用户
- 然后输入下面的指令
yum install -y zip unzip
然后linux就会自动安装zip了
3.使用
首先来说以下打包和压缩的概念
打包就是将所有的东西放在一起,而压缩就是将东西合理的摆放,挤压它的空间,使得占用的空间变小
那么为什么要打包和压缩呢?
能被打包压缩的,一定是一个整体,由多个文件–>一个文件–>不容器造成文件缺失。因为如果丢文件的话,如果打包压缩了,要么全丢要么不丢,不会像以前那样只丢一个两个,还得去找哪几个丢了
其次打包压缩,使得体积变小了,从而下载时间变短,存储占据空间变小。
所以有了以上两个理由,那么就有了很多的打包压缩工具。而linux也是需要打包压缩的,因为linux充当服务器的时候,也需要各种网络应用场景满足通讯的需求
而打包压缩的时候就由比如由zip/unzip,还有tar等
现在来简单的使用一下
如下所示是我们先创建一些文件
然后我们在file1和file4中写一些东西
如下所示,我们可以先这个将d1给压缩
然后我们使用mv将d1.zip挪到上级目录
然后我们对d1.zip进行解包,但是我们发现了一个问题,d1里面的东西都没有了,只有它一个目录,里面的东西都没有打上来
其实原因很简单,因为这个zip默认d1是一个文件只把它压缩了,如果这个d1是一个普通文件那就很舒服了,但这个d1是一个目录。所以打包的是错误的
我们先删掉我们压缩的,然后重新压缩,我们其实应该要带上-r选项,因为我们需要递归式压缩
然后我们将这个文件挪到上级目录,最后并进行解压缩。可以看到现在的就是正常的了
我们也可以看到,刚刚我们输入进去的东西也都是有的
上面是压缩一个目录的,如果是一个多个目录或者文件混合呢?很简单,我们只需要往后接着就可以了
然后我们进行解压缩
还有一种情况就是我们想要解压到指定的目录里面去。我们可以这样做
比如下面的场景,我们需要将d1.zip解压到test目录里面去
如下所示,我们也可以看到在解压的时候包括了test了,我们只需要加上-d选项就可以了
六、tar指令:打包解包,不打开它、直接看内容
1.介绍
tar [-cxtzjvf]文件与目录…参数:
- -c :建立一个压缩文件的参数指令(create 的意思);
- -x :解开一个压缩文件的参数指令!
- -t :查看 tarfile 里面的文件!
- -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
- -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
- -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
- -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
- -C : 解压到指定目录
2.使用
我们先检测一下是否安装了tar,一般来说都会安装的
输入
tar --version
像下面的就是已经安装了
像在linux中是有很多的打包压缩算法的,我们肯定是无法记住的
当我们不知道的时候,我们只需要去搜一下就可以了,只要记住最常用的就可以了
如下所示,我们还是将那三个文件给打包压缩,如下代码所示,这里的czf中,c代表的就是创造一个压缩文件,z代表的就是gizp压缩
tar czf code.tgz d1 log.txt test.c
如果我们使用tzf,那么就是预览,而不解压,如下所示
tar tzf code.tgz d1 log.txt test.c
后面跟着的文件就是我们想要预览的文件
如果我们想要解包的话
tar xzf code.tgz
所以说,下面就是我们上面的压缩三个操作
tar czf xxx.tgz a b c----打包压缩a、b、c变为xxx.tgz tar tzf xxx.tgz a b ----预览xxx.tgz中的a、b,但不解压 tar xzf xxx.tgz ----解压xxx
我们需要注意的是上面tgz后缀其实是tar.gz的简写,.tar是打包后缀,.gz是压缩后缀。所以XXX.tgz == XXX.tar.gz
上面这是最常用的压缩解压方式。但是压缩方式有很多,如果遇到其他陌生的,都是类似的,我们直接搜索用法即可
对于上面的压缩方式,如果我们想要压缩到指定路径下,我们可以这样做,使用-C选项
tar xzf code.tgz -C ..
七、bc指令
bc指令其实就是一个计算器,如下所示,当我们输入bc以后,我们就可以输入我们想要运算的数字,然后就可以进行运算了
当我们想要退出的时候直接输入quit就可以了
如果是windows的话,我们可以输入calc指令,也可以进入计算器
对于bc也可以跟管道结合
八、uname -r指令
1.介绍
语法:uname [选项]
功能: uname用来获取电脑和操作系统的相关信息。
补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。
常用选项:
- -a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
2.使用
如下所示,我们可以简单的去使用
我们也可以用uname -r来查
初次以外我们话可以看内存,使用free指令即可,后面的选项代表单位,kb,mb,gb等
也可以使用df -h指令去查磁盘
使用lscpu可以查cup
lsmem也可以查内存
九、一些重要的热键
[Tab],[ctrl]-c, [ctrl]-d
- [Tab]按键—具有『命令补全』和『档案补齐』的功能
- [Ctrl]-c按键—让当前的程序『停掉』
- [Ctrl]-d按键—通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用来取代exit
Tab的命令补全是这样的
当我们输入指令的前几个字母的时候,我们可以连续按两次Tab按键,这样的话如果已经可以唯一确定这个指令了,那么自动补全,如果不能那么就列举出可能的指令
如果我们什么也不输入,直接按两次Tab,那么可能会显示目前的所有指令的数量,注意是可能,因为有的机器不支持
还有一个热键是CTRL + R,它的作用是搜索历史中输入的指令,如下所示,我们输入while,就会显示这个我们之前用过的指令
我们可以使用history指令来查找我们之前用过的指令,不过这个一般会保存近1000多条,而且这个是可以修改的
文本编辑器nano
我们可以使用nano --version来查看我们是否装了nano,如果装了,会有下面的显示
如果我们没有装,我们可以直接去百度上搜索
yum -y install nano
我们可以直接使用root账号去安装一下,有了nano,就可以直接去在上面写一段代码
然后CTRL + X 然后Y,然后回车。
最后我们gcc test.c ,然后./a.out就可以了
十、关机
语法:shutdown [选项]
常见选项
-h : 将系统的服务停掉后,立即关机。
-r : 在将系统的服务停掉之后就重新启动
-t sec : -t 后面加秒数,亦即『过几秒后关机』的意思
如下所示,除了shutdown以外,我们还可以使用halt来关机,不过我们必须要root权限
其实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。