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

news/2024/7/24 7:34:00 标签: linux, 服务器, 数据库, c++, c语言

文章目录

  • 一、时间相关的指令
    • 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.使用

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

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

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

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

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

image-20231026125559278

下面是一些加上时分秒的

image-20231026125831779

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

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

这个数字其实就是时间戳

image-20231026130055916

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

date -d @xxxxxxxxx

image-20231026130749246

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

image-20231026131003093

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

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

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

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

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

image-20231026131916109

二、cal指令

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

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

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

常用选项

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

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

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

image-20231026132950897

image-20231026133011656

image-20231026133027062

三、find指令 -name

1.介绍

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

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

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

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

语法: find pathname -options

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

常用选项:

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

2.使用

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

image-20231026135703672

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

image-20231026135917742

也可以去查指令

image-20231026140057426

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

而find与which的区别就是

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

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

image-20231026140759158

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

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

image-20231026144232876

也就是说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个字节

image-20231026145302900

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

image-20231026145459145

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

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

image-20231026152528942

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

image-20231026152617254

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

image-20231026152719235

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

image-20231026152829124

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

image-20231026153037212

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

image-20231026153009820

image-20231026153239306

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

image-20231026153421403

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

image-20231026153834634

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

现在来简单的使用一下

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

image-20231026161529276

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

image-20231026161833515

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

image-20231026162117332

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

image-20231026162201502

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

image-20231026162329920

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

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

image-20231026162711319

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

image-20231026162837579

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

image-20231026163005459

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

image-20231026164139894

然后我们进行解压缩

image-20231026164207090

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

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

image-20231026164645636

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

image-20231026164728554

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

1.介绍

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

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

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

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

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

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

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

  • -C : 解压到指定目录

2.使用

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

输入

tar --version

像下面的就是已经安装了

image-20231026170508906

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

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

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

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

image-20231026171154439

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

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

image-20231026184106350

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

image-20231026184327343

如果我们想要解包的话

tar xzf code.tgz

image-20231026184441497

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

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

image-20231026185515082

七、bc指令

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

image-20231026190026336

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

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

image-20231026190237379

对于bc也可以跟管道结合

八、uname -r指令

1.介绍

语法:uname [选项]

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

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

常用选项:

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

2.使用

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

image-20231026190632804

image-20231026191932964

我们也可以用uname -r来查

image-20231026192007919

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

image-20231026192355733

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

image-20231026192457433

使用lscpu可以查cup

image-20231026192604848

lsmem也可以查内存

image-20231026192659828

九、一些重要的热键

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

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

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

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

Tab的命令补全是这样的

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

image-20231026192846421

image-20231026193010311

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

image-20231026193146434

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

image-20231026193353574

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

image-20231026193645941

文本编辑器nano

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

image-20231026193803502

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

image-20231026193924114

image-20231026193938251

yum -y install nano

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

image-20231026194253696

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

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

image-20231026194404806

十、关机

语法:shutdown [选项]

常见选项

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

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

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

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

image-20231026200603044

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


http://www.niftyadmin.cn/n/5126138.html

相关文章

AUTOSAR汽车电子嵌入式编程精讲300篇-基于 CAN 总线的车辆数据采集与远程监控系统研发(中)

目录 2.3.3 基于 CAN 数据的远程监控系统架构设计 3 基于 CAN 总线的数据采集系统研发 3.1 硬件平台集成

Docker 搭建 LNMP + Wordpress

[TOC](Docker 搭建 LNMP Wordpress 一、项目介绍1.1、项目环境1.2、 服务器环境1.3、 任务需求 二、部署Nginx2.1、建立工作目录2.2、 编写 Dockerfile 脚本2.3、准备 nginx.conf 配置文件2.4、生成镜像2.5、创建自定义网络 三、部署Mysql3.1、建立工作目录3.2、编写 Dockerfi…

带过期时间的localstorage封装

localstorage原本是不带过期时间的,xijs提供了一个带过期时间封装的store工具,但是用起来因为文档基本等于没有,所以干脆直接封装一个用,其中ttl是过期时间,以毫秒计算。 // 设置function setLocalStorageWithExpiry(…

HackTheBox-Starting Point--Tier 1---Crocodile

文章目录 一 题目二 实验过程 一 题目 Tags Web、Network、Custom Applications、Protocols、Apache、FTP、Reconnaissance、Web Site Structure Discovery、Clear Text Credentials、Anonymous/Guest Access译文:Web、网络、定制应用程序、协议、Apache、FTP、侦…

CGAL+QT

先安装CGAL和QT 安装完QT其中MSVC 这两个没配置 1、x32配置选择的是 x64配置选择的是 2、CGAL 5.4.5 - Manual: Using CGAL on Windows (with Visual C) 参数文章配置一些环境变量 3、 测试 新建build 进行cmake QT、Boost、CGAL都自动匹配上了(环境变量已经配…

【C++进阶】pair容器

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

【SA8295P 源码分析 (四)】113 - 88Q5152 Switch 交换机固件签名流程

【SA8295P 源码分析 四】113 - 88Q5152 Switch 交换机固件签名流程 1. Creating a Key Pair and Tokens2. 自定义tocken3. 创建 88Q5152_flash.bin 镜像4. 使用 RSA_2048_5.pem 对pie.rom 签名,生成pie.bin5. 将 pie.bin 打包入 88Q5152_flash.bin系列文章汇总见:《【SA8295P…

NewStarCTF2023week4-依旧是空白(snow隐写)

打开附件的空白图片,CRC报错,很可能是高度被修改 爆出图片正确的宽度和高度并修复 打开看到密码 password: s00_b4by_f0r_y0u 另一个文件是空白的txt文档,大致看了一下像是不可见字符,尝试 white_space,发现不是&…