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

news2024/11/19 1:47:46

文章目录

  • 一、时间相关的指令
    • 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.coloradmin.cn/o/1138372.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++进阶】pair容器

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

基于单片机设计的防煤气泄漏装置

一、前言 煤气泄漏是一个严重的安全隐患,可能导致火灾、爆炸以及对人体健康的威胁。为了提高家庭和工业环境中煤气泄漏的检测和预防能力,设计了一种基于单片机的防煤气泄漏装置。 单片机选择STC89C52作为主控芯片。为了检测煤气泄漏,采用了…

Prompt设计与大语言模型微调

本文主要介绍了Prompt设计、大语言模型SFT和LLM在手机天猫AI导购助理项目应用。 ChatGPT基本原理 “会说话的AI”,“智能体” 简单概括成以下几个步骤: 预处理文本:ChatGPT的输入文本需要进行预处理。输入编码:ChatGPT将经过预处理…

2.9每日一题(定积分的奇偶性以及比较大小)

1、用定积分奇函数和偶函数的性质 2、用常用的基本不等式推出大小 3、用区间相同的情况下被积函数大的定积分大的定理

如何在Node.js中使用环境变量或命令行参数来设置HTTP爬虫ip?

首先,定义问题:在 Node.js 应用程序中,我们可以通过环境变量或命令行参数来设置HTTP爬虫ip,以便在发送请求时使用这些HTTP爬虫ip。 亲身经验:我曾经需要为一个项目设置HTTP爬虫ip,以便在发送请求时使用这些…

Kubernetes Label Selector

Author:rab 目录 前言一、Labels1.1 定义1.2 案例1.2.1 节点标签1.2.2 对象标签 二、Selector2.1 Node Selector2.2 Service Selector2.3 Deployment Selector2.4 StatefulSet Selector2.5 DaemonSet Selector2.6 HorizontalPodAutoscaler Selector2.7 NetworkPolic…

RTCM数据解码

RTCM RTCM数据协议介绍 1. 一帧数据组成 2.数据接收 /*(1) synchronize frame */ if (rtcm.nbyte 0){if (data ! RTCM3PREAMB)//RTCM3PREAMB:同步码return 0;rtcm.buff[rtcm.nbyte] data;return 0;} //(2)添加一B…

Spring Boot整合Spring Fox生成Swagger文档

Spring Fox简介 Springfox是一个用于在Spring应用程序中生成Swagger文档的开源库。它提供了一组注解和工具,可以将你的API代码和文档整合在一起,方便生成和展示API的Swagger文档。 使用Springfox,你可以在Spring Boot项目中集成Swagger&…

设计模式—创建型模式之单例模式

设计模式—创建型模式之单例模式 介绍 单例模式说明:一个单一的类,负责创建自己的对象,同时确保系统中只有单个对象被创建。 单例模式特点: 某个类只能有一个实例;(构造器私有)它必须自行创…

线程间的调度顺序

目录 ♫join和sleep ♫wait ♫notify和notifyAll 我们知道线程是抢占式执行,随机调度的,而这也是诱发线程安全的根本原因。我们虽然无法指定线程之间的调度顺序,但是可以通过JVM提供的一些API让某个线程阻塞,主动放弃CPU&#xf…

vue3响应式对象:ref和reactive

ref() <template><button click"changeMsg">改变信息</button><div>{{ msg }}</div><div>{{ man }}</div> </template><script lang"ts"> import { defineComponent,ref,Ref } from vueexport def…

Android 11.0 禁用插入耳机时弹出的保护听力对话框

1.前言 在11.0的系统开发中,在某些产品中会对耳机音量调节过高限制,在调高到最大音量的70%的时候,会弹出音量过高弹出警告,所以产品 开发的需要要求去掉这个音量弹窗警告功能 2.禁用插入耳机时弹出的保护听力对话框的核心类 frameworks\base\packages\SystemUI\src\com\and…

在el-dialog中使用tinymce 点击工具栏下拉框被遮挡

在el-dialog中使用tinymce控件时&#xff0c;会出现点击工具栏下拉框出现在弹窗下一层&#xff0c;审查元素之后发现是tinymce的下拉框z-index优先级低于el-dialog的z-index导致的&#xff0c;所以需要增加tinymce的下拉框的z-index值。 通过审查元素得到&#xff0c;需要修改t…

物联网设备安全性:构建可信任的智能生态系统

第一章&#xff1a;引言 物联网&#xff08;IoT&#xff09;已经成为现代社会的重要组成部分&#xff0c;将我们的生活变得更加智能化和便利。从智能家居到工业自动化&#xff0c;物联网设备正日益渗透到各个领域。然而&#xff0c;随着物联网设备的普及&#xff0c;安全性问题…

牛客网刷题-(5)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

Spark On Hive原理和配置

目录 一、Spark On Hive原理 &#xff08;1&#xff09;为什么要让Spark On Hive&#xff1f; 二、MySQL安装配置&#xff08;root用户&#xff09; &#xff08;1&#xff09;安装MySQL &#xff08;2&#xff09;启动MySQL设置开机启动 &#xff08;3&#xff09;修改MySQL…

常用应用安装教程---在centos7系统上安装JDK8

在centos7系统上安装JDK8 1&#xff1a;进入oracle官网下载jdk8的tar.gz包&#xff1a; 2&#xff1a;将下载好的包上传到每个服务器上&#xff1a; 3&#xff1a;查看是否上传成功&#xff1a; [rootkafka01 ~]# ls anaconda-ks.cfg jdk-8u333-linux-x64.tar.gz4&#xf…

Ps:简单快速的主背分离方法

将主体与背景分离开来&#xff0c;可大大提高后期调色修片的效率。本文介绍的方法&#xff0c;简单快速&#xff0c;实用性强。 ◆ ◆ ◆ 主背分离一般步骤及说明 1、复制背景图层两次&#xff0c;分别命名为&#xff1a;“主体”和“新背景”。隐藏原背景图层。 2、选取主体…

华为NAT配置实例(含dhcp、ospf配置)

一、网络拓朴如下&#xff1a; 二、要求&#xff1a;PC1 能访问到Server1 三、思路&#xff1a; R2配置DHCP&#xff0c;R2和R1配OSPF&#xff0c;R1出NAT 四、主要配置&#xff1a; R2的DHCP和OSPF&#xff1a; ip pool 1gateway-list 10.1.1.1 network 10.1.1.0 mask 25…

进程/线程/PCB

进程&#xff1a;正在运行中的程序&#xff08;进程是驻留在内存中的&#xff09; 是系统执行资源分配和调度的独立单位每一个进程都有属于自己的存储空间和系统资源注意&#xff1a;进程A 和 进程B 的内存独立不共享 使用jdk自带的工具&#xff0c;jconsole查看当前Java进程中…