系列文章目录

第一章:Linux的基础指令



前言

  本节是学习Linux基础指令的第二节内容,是上一节的延续,在本节将会继续学习基础指令为今后了解Linux的语法奠定基础,那让我们废话少说直接开始今天的内容吧。


一、printf与echo打印指令及重定向操作

1.1 printf指令

  • 指令语法: printf “格式字符串” [参数1 参数2 …]
  • 指令功能: 按指定格式输出内容,结尾不会附带换行符,类似C语言中的printf,具有占位符使用的功能

在这里插入图片描述

  对于占位符的使用要注意的是用空格分隔,且大部分使用方法与C语言一致

1.2 echo指令

  • 指令语法: echo [选项] [字符串/变量]
  • 指令功能: 在终端打印 / 输出指定的字符串、变量值,借助重定向 > / >>,可以创建 / 写入文件 (printf也能实现)
  • 选项:
  1. -n: 不输出末尾的换行符
    在这里插入图片描述
  2. -e: 启用转义字符(如 \n 换行、\t 制表符)
    tips:有些Linux操作系统会自动开启该模式
    在这里插入图片描述

1.3 重定向操作

  有上面的的操作可知它们都是在控制台上打印内容的,而如果我们想写入文件,应该如何呢?是nano打开文件吗? 其实Linux的重定向操作就可以实现这个目的,下面以echo为示例讲解。

1.3.1读取与输入的隐含操作

  从Linux来讲有着“一切皆文件”的底层逻辑,那我们回忆一下C语言中文件的读写,可以想到它们运行的前提是文件打开,这些读写都是向显示器操作的———本质上就是在读写显示器对应的设备文件

  既然如此我们使输入和输出不读写显示器文件,而是处理普通文件会怎么样呢? 恭喜,你成功的实现了重定向操作。

重定向的定义:重定向是指改变标准输入、标准输出或标准错误输出的默认方向。

在这里插入图片描述

1.3.2 输出重定向

  输出重定向: 就是把命令原本默认要打印到屏幕(终端)的结果,改成写入文件里。

1.3.2.1 单次追加

  echo 字符串 > 文件,如果文件不存在则会创建,已经存在则会清空 (这种特性也可以用来创建普通文件)在这里插入图片描述

1.3.2.2 继承追加(追加重定向)

  echo 字符串 >> 文件,在保留文件已有的数据下换行写新内容。
在这里插入图片描述

1.3.3 输入重定向

  命令 < 文件名 把命令的输入源从默认的键盘改成文件或其他来源。(这里的cat指令将在下一处讲解)
在这里插入图片描述

  所以这些设备文件必须先被打开,那这些文件在我们没有处理时就能使用读写的功能是怎么实现的呢? 其实是系统自己打开的这些文件


二、cat指令(看短文件)

  • 指令语法: cat [选项] [⽂件]
  • 指令功能: 查看⽬标⽂件的内容**
  • 选项:
  1. -n: 对输出的所有⾏编号
    在这里插入图片描述
  2. -b: 对⾮空输出⾏编号,空⾏不做编号
    在这里插入图片描述
  3. -s: 不输出多⾏空行

2.1 镜像打印

  我们如果想直接看到文件的最后一行,可以用tac即cat的倒写成的指令,语法与cat一致。

在这里插入图片描述

三、日志及信息查询

3.1日志

  我们在学习工作中,都会对机器进行无数次的操作,如果突然出现异常我们应该怎么查询呢?这时候就可以查询文件或机器的日志。

指系统、应用程序、服务或设备在运行过程中,自动生成并记录的事件、操作、状态、错误、时间、流程等信息的记录文件或数据集合。

Linux日志存储:/var/log/messages

c日志会自动储存操作信息,但也不是一直存储的,通常会几Mb存储更新。

3.2 信息查询操作

3.2.1 more指令

  • 指令语法: more [选项]
  • 指令功能: more命令,功能类似cat
  • 选项:

-n 指定输出⾏数
-q 退出more

  more 文件夹(这里以日志演示),more的作用可以使得文本信息不一次性列出,而是回车继续查询,并且还可以通过**/查询**。

3.3.1 less指令

  • 指令语法: less [参数] ⽂件
  • 指令功能: ess与more类似,但使⽤less可以随意浏览⽂件,⽽more仅能向前移动,却不能向后移动,⽽且less在查看之前不会加载整个⽂件。
  • 选项:

-i :忽略搜索时的⼤⼩写
-N:显⽰每⾏的⾏号
/ :字符串:向下搜索“字符串”的功能
?: 字符串:向上搜索“字符串”的功能
n:重复前⼀个搜索(与/或?有关)
N:反向重复前⼀个搜索(与/或?有关)
q:quit

3.4.1 head指令

  • 指令语法: head[参数]… [⽂件]…
  • 指令功能: head⽤来显⽰档案的开头⾄标准输出中,默认head命令打印其相应⽂件的开头10⾏。
  • 选项:
  1. -n<行数>: 显⽰的⾏数
    在这里插入图片描述

3.5.1 tail指令

  • 指令语法: tail 必要参数 [⽂件]
  • 指令功能: ⽤于显⽰指定⽂件末尾内容,不指定⽂件时,作为输⼊信息进⾏处理。常⽤查看⽇志⽂件。
  • 选项:
  1. -n<行数>: 显⽰的⾏数在这里插入图片描述
  2. -f: 循环读取,如在日志中只会显示尾部的给定行数。

四、管道

  我们在文件查询时想要查询中间的信息,我们可以使用文件存储head几行,再在文件里tail几行取到目的信息。
  既然这样我们为什么不直接head后直接tail操作呢?Linux中的管道语法就可以实现这样的操作。

管道:Linux/Unix Shell 中,使用符号 |,将前一个命令的标准输出,直接作为后一个命令的标准输入,实现多个命令连续处理数据的机制。

如下,我们可以通过管道查询100到110行的信息。

head -100 test.txt | tail - 10

五、时间指令

5.1 data指令

  • 指令语法: date [OPTION]… [+FORMAT]
  • 指令功能: 用于设定和显示时间。
  • 选项:

显示时间选项
%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

在这里插入图片描述

小知识:
电脑主板上有纽扣电池,可以在电脑没电时还可以持续记录时间,保证电脑的时间准确无误,但电池没电后就会失效了。

5.2 世界戳

  Linux时间:Unix时间戳

Unix 时间戳(Epoch Time)是从 1970-01-01 00:00:00 UTC 到当前时间的秒数,是一个纯数字,比如 1737907200

  • 作用:
  1. 转换为时间:将时间戳转换为生活时间,便以计数
  2. 查询区间:给的起始与结尾时间戳就可以在日志中查询期间的操作。

时间差异:由于时间差,在各个地区处理时会转为当地的时间。

5.3 cal指令

  • 指令语法: cal 参数 [年份]
  • 指令功能: ⽤于查看⽇历等时间信息,如只有⼀个参数,则表⽰年份(1-9999),如有两个参数,则表⽰⽉份和年份。
  • 选项:

-3 :显⽰系统前⼀个⽉,当前⽉,下⼀个⽉的⽉历
-j :显⽰在当年中的第⼏天(⼀年⽇期按天算,从1⽉1号算起,默认显⽰当前⽉在⼀年中的天数)
-y: 显⽰当前年份的⽇历


六、查找

6.1 which指令

  • 指令语法: which [选项] 命令名
  • 指令功能: 用于查找指定命令的可执行文件路径,根据 $PATH 环境变量搜索并输出匹配结果。
  • 常用选项:
    • -a:显示所有匹配的路径(包含 $PATH 中所有同名命令)
    • -V:显示 which 命令的版本信息
      在这里插入图片描述

局限性:只能查询指令的位置

6.2 find指令(最常用)

  • 指令语法: find pathname -options
  • 指令功能: ⽤于在⽂件树中查找⽂件,并作出相应的处理(可能访问磁盘)
  • 常用选项:
  1. -name: 按照⽂件名查找⽂件
    在这里插入图片描述

6.3 whereis指令

  • 指令语法: whereis [选项] 文件名/命令
  • 指令功能: 查找命令、程序、配置文件、帮助文档的所在位置,搜索范围比 which 更广。
  • 常用选项:
    -b:只查找二进制可执行文件
    -m:只查找帮助手册文件
    -s:只查找源代码文件

总结

  这就是本节的所有内容了,私下要多练习这些指令的具体用法,并理解本节的知识,下节的知识下节聊,感谢您的观看。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐