Linux系统篇,指令(二):输入与输出的隐含操作、重定向理解、管道及多个基础指令用法
系列文章目录
第一章:Linux的基础指令
前言
本节是学习Linux基础指令的第二节内容,是上一节的延续,在本节将会继续学习基础指令为今后了解Linux的语法奠定基础,那让我们废话少说直接开始今天的内容吧。
一、printf与echo打印指令及重定向操作
1.1 printf指令
- 指令语法: printf “格式字符串” [参数1 参数2 …]
- 指令功能: 按指定格式输出内容,结尾不会附带换行符,类似C语言中的printf,具有占位符使用的功能

对于占位符的使用要注意的是用空格分隔,且大部分使用方法与C语言一致。
1.2 echo指令
- 指令语法: echo [选项] [字符串/变量]
- 指令功能: 在终端打印 / 输出指定的字符串、变量值,借助重定向 > / >>,可以创建 / 写入文件 (printf也能实现)
- 选项:
- -n: 不输出末尾的换行符

- -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 [选项] [⽂件]
- 指令功能: 查看⽬标⽂件的内容**
- 选项:
- -n: 对输出的所有⾏编号

- -b: 对⾮空输出⾏编号,空⾏不做编号

- -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⾏。
- 选项:
- -n<行数>: 显⽰的⾏数

3.5.1 tail指令
- 指令语法: tail 必要参数 [⽂件]
- 指令功能: ⽤于显⽰指定⽂件末尾内容,不指定⽂件时,作为输⼊信息进⾏处理。常⽤查看⽇志⽂件。
- 选项:
- -n<行数>: 显⽰的⾏数

- -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
- 作用:
- 转换为时间:将时间戳转换为生活时间,便以计数
- 查询区间:给的起始与结尾时间戳就可以在日志中查询期间的操作。
时间差异:由于时间差,在各个地区处理时会转为当地的时间。
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
- 指令功能: ⽤于在⽂件树中查找⽂件,并作出相应的处理(可能访问磁盘)
- 常用选项:
- -name: 按照⽂件名查找⽂件

6.3 whereis指令
- 指令语法: whereis [选项] 文件名/命令
- 指令功能: 查找命令、程序、配置文件、帮助文档的所在位置,搜索范围比 which 更广。
- 常用选项:
-b:只查找二进制可执行文件
-m:只查找帮助手册文件
-s:只查找源代码文件
总结
这就是本节的所有内容了,私下要多练习这些指令的具体用法,并理解本节的知识,下节的知识下节聊,感谢您的观看。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐




所有评论(0)