【Linux】第四站:Linux基本指令(三)

文章目录

  • 一、时间相关的指令
    • 1.指令简介
    • 2.使用
  • 二、cal指令
  • 三、find指令 -name
    • 1.介绍
    • 2.使用
  • 四、grep指令
    • 1.介绍
    • 2.使用
  • 五、zip/unzip指令
    • 1.介绍
    • 2.zip的安装
    • 3.使用
  • 六、tar指令:打包解包,不打开它、直接看内容
    • 1.介绍
    • 2.使用
  • 七、bc指令
  • 八、uname -r指令
    • 1.介绍
    • 2.使用
  • 九、一些重要的热键
  • 十、关机
  • 十一、一些其他的指令

一、时间相关的指令

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.使用

在实际的写代码中,有一个很重要的东西就是日志

程序运行到自己的每一个关键时刻,都要自己打日志

日志:时间,日志等级,日志具体信息,其他信息

这些东西都要放入一个文件中,也就是日志文件

如下所示都是时间指令的基本使用

【Linux】第四站:Linux基本指令(三)_第1张图片

下面是一些加上时分秒的

image-20231026125831779

使用起来很简单,但是需要注意的是,date后面+号后必须是一个连续的字符串,不可以加上空格。

不过上面我们注意到了,如果是%s的话,会打印出来一个很奇怪的数字

这个数字其实就是时间戳

【Linux】第四站:Linux基本指令(三)_第2张图片

我们知道对于每一个时间都有唯一确定的时间戳,所以,我们可以使用下面这条指令去恢复出时间,但是这样的是系统默认的格式,我们可以像前面那样指定格式

date -d @xxxxxxxxx

【Linux】第四站:Linux基本指令(三)_第3张图片

但是当我们去查看时间戳为0的时候

image-20231026131003093

我们注意到,是早上八点,但是这个时间不应该是凌晨开始的吗?

其实这是因为我们处于东八区,要早八个小时

既然这个时间戳在一直变化,那么就说明是有一个变量存储着它。那么它会不会有一天溢出呢?

当然会,不过那就已经很多年以后了

比如下面的linux系统中,我们可以看到至少都在20亿年以后了,那时候或许早就打败三体文明了

image-20231026131916109

二、cal指令

cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。

命令格式: cal [参数][月份][年份]

功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份

常用选项

  • -3 显示系统前一个月,当前月,下一个月的月历

  • -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)

  • -y 显示当前年份的日历

【Linux】第四站:Linux基本指令(三)_第4张图片

【Linux】第四站:Linux基本指令(三)_第5张图片

【Linux】第四站:Linux基本指令(三)_第6张图片

三、find指令 -name

1.介绍

  • Linux下find命令在目录结构中搜索文件,并执行指定的操作。

  • Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。

  • 即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。

  • 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)

语法: find pathname -options

功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)

常用选项:

  • -name 按照文件名查找文件

2.使用

第二个参数是指定目录的,而~就是当前用户的目录,所以我们可以在我们这个整个用户中查到我们的文件,结合通配符就非常好用了

【Linux】第四站:Linux基本指令(三)_第7张图片

我们也可以指定根目录,当然由于权限,很多文件是看不到的

【Linux】第四站:Linux基本指令(三)_第8张图片

也可以去查指令

【Linux】第四站:Linux基本指令(三)_第9张图片

find可以在指定的路径下进行文件的搜索 --真的在磁盘文件中搜索

而find与which的区别就是

which只是在/usr/bin指令路径下查询,搜索指令文件,而find是在指定的文件下

而且which指令可以显示它的一些重命名的信息

【Linux】第四站:Linux基本指令(三)_第10张图片

除了which以外,在查找的时候还可以去使用whereis指令

它可以帮助我们在usr路径下找到只要涵盖了这个名字的全部文件,包括压缩包、文件、指令等等

【Linux】第四站:Linux基本指令(三)_第11张图片

也就是说whereis:在系统特定路径下查找,既可以找到可执行程序,又可以找到手册,安装包压缩包之类的

image-20231026144524624

四、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个字节

【Linux】第四站:Linux基本指令(三)_第12张图片

然后我们知道这个文件很多,如果我们想将其中包含9999的全部打印出来,我们就可以使用这个命令

【Linux】第四站:Linux基本指令(三)_第13张图片

所以grep其实就是一个行文本过滤工具

我们现在重新写一个小一点的文件方便我们后序观察

【Linux】第四站:Linux基本指令(三)_第14张图片

如果直接grep就是找到包含这个字符串的那一部分,如果加上-v选项,那么就是不包含这个字符串的那一部分

【Linux】第四站:Linux基本指令(三)_第15张图片

如果加上-n那么就会天然的给我们这个文件加上编号,注意我们这里由于找的是空串,所以全部都可以找得到

【Linux】第四站:Linux基本指令(三)_第16张图片

当然如果我们是nv的话,就什么也没有了

image-20231026152829124

对于这个行号,它打印的时候,打印的是这个的行坐标不会从1开始,而是原来是多少行就是多少行

image-20231026153037212

如果我们加上-i,就代表ignore,忽略大小写

【Linux】第四站:Linux基本指令(三)_第17张图片

【Linux】第四站:Linux基本指令(三)_第18张图片

我们还可以结合管道去打印

【Linux】第四站:Linux基本指令(三)_第19张图片

对于这个grep指令,当我们想要找到一个程序的main函数,尤其是大文件的时候,就非常好用

【Linux】第四站:Linux基本指令(三)_第20张图片

而且这个grep不仅仅可以找一个文件,我们可以在它后面跟很多个文件(注意空格隔开),只要可以匹配到,就会打印出来

但是要注意这个我们不可以直接跟一个目录,如果要跟目录的话,那么必须带上-R选项,也就是递归式找

image-20231026154242432

而且这个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等

现在来简单的使用一下

如下所示是我们先创建一些文件

【Linux】第四站:Linux基本指令(三)_第21张图片

然后我们在file1和file4中写一些东西

【Linux】第四站:Linux基本指令(三)_第22张图片

如下所示,我们可以先这个将d1给压缩

【Linux】第四站:Linux基本指令(三)_第23张图片

然后我们使用mv将d1.zip挪到上级目录

【Linux】第四站:Linux基本指令(三)_第24张图片

然后我们对d1.zip进行解包,但是我们发现了一个问题,d1里面的东西都没有了,只有它一个目录,里面的东西都没有打上来

【Linux】第四站:Linux基本指令(三)_第25张图片

其实原因很简单,因为这个zip默认d1是一个文件只把它压缩了,如果这个d1是一个普通文件那就很舒服了,但这个d1是一个目录。所以打包的是错误的

我们先删掉我们压缩的,然后重新压缩,我们其实应该要带上-r选项,因为我们需要递归式压缩

【Linux】第四站:Linux基本指令(三)_第26张图片

然后我们将这个文件挪到上级目录,最后并进行解压缩。可以看到现在的就是正常的了

【Linux】第四站:Linux基本指令(三)_第27张图片

我们也可以看到,刚刚我们输入进去的东西也都是有的

【Linux】第四站:Linux基本指令(三)_第28张图片

上面是压缩一个目录的,如果是一个多个目录或者文件混合呢?很简单,我们只需要往后接着就可以了

【Linux】第四站:Linux基本指令(三)_第29张图片

然后我们进行解压缩

【Linux】第四站:Linux基本指令(三)_第30张图片

还有一种情况就是我们想要解压到指定的目录里面去。我们可以这样做

比如下面的场景,我们需要将d1.zip解压到test目录里面去

【Linux】第四站:Linux基本指令(三)_第31张图片

如下所示,我们也可以看到在解压的时候包括了test了,我们只需要加上-d选项就可以了

【Linux】第四站:Linux基本指令(三)_第32张图片

六、tar指令:打包解包,不打开它、直接看内容

1.介绍

tar [-cxtzjvf] 文件与目录 参数

  • -c :建立一个压缩文件的参数指令(create 的意思);

  • -x :解开一个压缩文件的参数指令!

  • -t :查看 tarfile 里面的文件!

  • -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
  • -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?

  • -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!

  • -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!

  • -C : 解压到指定目录

2.使用

我们先检测一下是否安装了tar,一般来说都会安装的

输入

tar --version

像下面的就是已经安装了

【Linux】第四站:Linux基本指令(三)_第33张图片

像在linux中是有很多的打包压缩算法的,我们肯定是无法记住的

当我们不知道的时候,我们只需要去搜一下就可以了,只要记住最常用的就可以了

如下所示,我们还是将那三个文件给打包压缩,如下代码所示,这里的czf中,c代表的就是创造一个压缩文件,z代表的就是gizp压缩

tar czf code.tgz d1 log.txt test.c

【Linux】第四站:Linux基本指令(三)_第34张图片

如果我们使用tzf,那么就是预览,而不解压,如下所示

tar tzf code.tgz d1 log.txt test.c

【Linux】第四站:Linux基本指令(三)_第35张图片

后面跟着的文件就是我们想要预览的文件

【Linux】第四站:Linux基本指令(三)_第36张图片

如果我们想要解包的话

tar xzf code.tgz

【Linux】第四站:Linux基本指令(三)_第37张图片

所以说,下面就是我们上面的压缩三个操作

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 ..

【Linux】第四站:Linux基本指令(三)_第38张图片

七、bc指令

bc指令其实就是一个计算器,如下所示,当我们输入bc以后,我们就可以输入我们想要运算的数字,然后就可以进行运算了

【Linux】第四站:Linux基本指令(三)_第39张图片

当我们想要退出的时候直接输入quit就可以了

如果是windows的话,我们可以输入calc指令,也可以进入计算器

【Linux】第四站:Linux基本指令(三)_第40张图片

对于bc也可以跟管道结合

八、uname -r指令

1.介绍

语法:uname [选项]

功能: uname用来获取电脑和操作系统的相关信息。

补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。

常用选项:

  • -a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称

2.使用

如下所示,我们可以简单的去使用

image-20231026190632804

image-20231026191932964

我们也可以用uname -r来查

【Linux】第四站:Linux基本指令(三)_第41张图片

初次以外我们话可以看内存,使用free指令即可,后面的选项代表单位,kb,mb,gb等

【Linux】第四站:Linux基本指令(三)_第42张图片

也可以使用df -h指令去查磁盘

【Linux】第四站:Linux基本指令(三)_第43张图片

使用lscpu可以查cup

【Linux】第四站:Linux基本指令(三)_第44张图片

lsmem也可以查内存

【Linux】第四站:Linux基本指令(三)_第45张图片

九、一些重要的热键

[Tab],[ctrl]-c, [ctrl]-d

  • [Tab]按键—具有『命令补全』和『档案补齐』的功能

  • [Ctrl]-c按键—让当前的程序『停掉』

  • [Ctrl]-d按键—通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用来取代exit

Tab的命令补全是这样的

当我们输入指令的前几个字母的时候,我们可以连续按两次Tab按键,这样的话如果已经可以唯一确定这个指令了,那么自动补全,如果不能那么就列举出可能的指令

【Linux】第四站:Linux基本指令(三)_第46张图片

【Linux】第四站:Linux基本指令(三)_第47张图片

如果我们什么也不输入,直接按两次Tab,那么可能会显示目前的所有指令的数量,注意是可能,因为有的机器不支持

image-20231026193146434

还有一个热键是CTRL + R,它的作用是搜索历史中输入的指令,如下所示,我们输入while,就会显示这个我们之前用过的指令

image-20231026193353574

我们可以使用history指令来查找我们之前用过的指令,不过这个一般会保存近1000多条,而且这个是可以修改的

【Linux】第四站:Linux基本指令(三)_第48张图片

文本编辑器nano

我们可以使用nano --version来查看我们是否装了nano,如果装了,会有下面的显示

image-20231026193803502

如果我们没有装,我们可以直接去百度上搜索

【Linux】第四站:Linux基本指令(三)_第49张图片

【Linux】第四站:Linux基本指令(三)_第50张图片

yum -y install nano

我们可以直接使用root账号去安装一下,有了nano,就可以直接去在上面写一段代码

【Linux】第四站:Linux基本指令(三)_第51张图片

然后CTRL + X 然后Y,然后回车。

最后我们gcc test.c ,然后./a.out就可以了

【Linux】第四站:Linux基本指令(三)_第52张图片

十、关机

语法:shutdown [选项]

常见选项

-h : 将系统的服务停掉后,立即关机。

-r : 在将系统的服务停掉之后就重新启动

-t sec : -t 后面加秒数,亦即『过几秒后关机』的意思

如下所示,除了shutdown以外,我们还可以使用halt来关机,不过我们必须要root权限

【Linux】第四站:Linux基本指令(三)_第53张图片

其实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。

你可能感兴趣的:(【Linux】,linux,服务器,数据库,c++,c语言)