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

文章目录

一、时间相关的指令

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的话,会打印出来一个很奇怪的数字

这个数字其实就是时间戳

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

cpp 复制代码
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个数字的文件

cpp 复制代码
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用户

  • 然后输入下面的指令

    shell 复制代码
    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,一般来说都会安装的

输入

shell 复制代码
tar --version

像下面的就是已经安装了

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

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

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

shell 复制代码
tar czf code.tgz d1 log.txt test.c

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

shell 复制代码
tar tzf code.tgz d1 log.txt test.c

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

如果我们想要解包的话

shell 复制代码
tar xzf code.tgz

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

shell 复制代码
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选项

shell 复制代码
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,如果装了,会有下面的显示

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

shell 复制代码
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。

相关推荐
什么鬼昵称1 分钟前
Pikachu- Over Permission-垂直越权
运维·服务器
静听山水11 分钟前
mysql语句执行过程
数据库·mysql
码农小白13 分钟前
linux驱动:(22)中断节点和中断函数
linux·运维·服务器
4647的码农历程14 分钟前
Linux网络编程 -- 网络基础
linux·运维·网络
Mr.Z.41120 分钟前
【历年CSP-S复赛第一题】暴力解法与正解合集(2019-2022)
c++
Death20024 分钟前
使用Qt进行TCP和UDP网络编程
网络·c++·qt·tcp/ip
虽千万人 吾往矣29 分钟前
golang gorm
开发语言·数据库·后端·tcp/ip·golang
郭二哈35 分钟前
C++——list
开发语言·c++·list
2401_857610031 小时前
SpringBoot实现:校园资料分享平台开发指南
服务器·spring boot·php
mariokkm1 小时前
Django一分钟:在Django中怎么存储树形结构的数据,DRF校验递归嵌套模型的替代方案
数据库·django·sqlite