
◆ 博主名称: 晓此方-CSDN博客 大家好,欢迎来到晓此方的博客。
⭐️Linux系列个人专栏: 【主题曲】Linux
⭐️ Re系列专栏:我们思考 (Rethink) · 我们重建 (Rebuild) · 我们记录 (Record)

文章目录
- 概要&序論
- 一,打印指令printf/echo与重定向操作
- 一,Linux的万能手册------man指令
- 二,复制指令------cp
- 三,剪切指令------mv与"一切皆文件"深入理解
-
- 3.1指令介绍
- 3.2代码示例
- 3.1深入理解:Linux一切皆文件
-
- 3.1.1统一的接口
- 3.1.2文件都在哪里
- 3.1.3文件类型
- [3.1.4linux 2.6. 内核默认支持的文件系统有哪些?](#3.1.4linux 2.6. 内核默认支持的文件系统有哪些?)
- 四,查看内容------cat/more/less/head/tail指令
- 五,时间与日期------date与cel指令
概要&序論
这里是正在准备完结C++的此方 本文作为指令篇的第二篇,主要介绍了更多的常用指令,并在介绍过程中逐步渗透包括重定向,一切皆文件等Linux中的更多的操作和重要知识。

一,打印指令printf/echo与重定向操作
1.1printf指令的使用
- 指令名称:printf。
- 使用频率:★★★★
- 指令作用:printf用于格式化并打印数据,它不会在末尾自动添加换行符,支持类似于 C 语言 printf() 函数的格式化字符串。
- 指令操作:printf "指定的格式" [参数...]
操作实例: (注意:参数的分隔用空格不用逗号和分号)
Bash
-bash-4.2# printf "%d" 1231
1231-bash-4.2#
-bash-4.2# printf "%d\n" 123465
123465
-bash-4.2#
1.2echo指令的使用
- 指令名称:echo
- 使用频率:★★★★★
- 指令作用:echo 用于在终端输出文本或变量的值。它的优点是简单、快速,主要用于显示提示信息、简单的变量查看或将字符串写入文件。
- 指令操作:echo [选项] [字符串]
指令常用选项:
- -n:不输出行尾的换行符。
- -e:激活转义字符(如解析 \n, \t 等)。
操作实例:(选项一般都不太能用到)
Bash
-bash-4.2# echo nihaodcscscs
nihaodcscscs
-bash-4.2#
1.3重定向操作------以echo为例
上面我们简单了解了:echo默认是在终端上打印内容的。但是我们假如说想要在其他文件里面打印东西,这个时候就必须拿出我们的重定向了。
重定向的定义:重定向是指改变标准输入、标准输出或标准错误输出的默认方向。

1.3.1输出重定向
将指令本该显示在屏幕上的内容,覆盖式地写入到文件中。如果文件不存在则创建;如果已存在,原内容会被清空。
Bash
echo "hellowworld" > test01
1.3.2输入重定向
让指令不再从键盘读取输入,而是从文件内容中读取输入。
Bash
cat < test01
以下这两个指令的区别现在讲不了:

1.3.3追加重定向
将指令的输出内容写入到文件的末尾 。它不会清空原文件,而是在后面"接龙"。
Bash
echo "ciallo wodjksjc" >> test01
1.3.4重定向的特别操作
重定向,但是不做任何操作,可以用来协助新建/清空文件。(本质上是使用了重定向的性质)
- 文件存在------清空。
- 文件不存在------新建。
Bash
[root@bite-alicloud 113]# >log.txt
[root@bite-alicloud 113]# >1.tst
[root@bite-alicloud 113]# ls
1.txt hello.txt log.txt test.c
[root@bite-alicloud 113]# ll
total 8
-rw-r--r-- 1 root root 0 Sep 10 19:36 1.txt
-rw-r--r-- 1 root root 2 Sep 10 19:34 hello.txt
-rw-r--r-- 1 root root 0 Sep 10 19:35 log.txt
-rw-r--r-- 1 root root 10 Sep 10 19:10 test.c
[root@bite-alicloud 113]#
一,Linux的万能手册------man指令
1.1指令介绍
Linux的命令有很多参数,我们不可能全记住,可以通过查看联机手册获取帮助
-
指令名称:man
-
使用频率:★★★★★
-
指令作用 :man 是 Manual pages(帮助手册)的简称。它用于查看 Linux 系统中指令、函数、配置文件或库调用的详细说明文档。
-
指令操作:man [指令名称]
-
常用选项
- -k 根据关键字搜索联机帮助,num 只在第num章节查找
- -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
科普内容
man手册分为9章(不同系统可能会有差别)
是普通的命令 ,最常用 的手册。
是系统调用 ,如open, write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)。
是库函数 ,如printf, fread4是特殊文件,也就是/dev下的各种设备文件。
是指文件的格式 ,比如passwd,就会说明这个文件中各个字段的含义。
是给游戏 留的,由各个游戏自己定义。
是附件还有一些变量 ,比如像environ这种全局变量在这里就有说明。
是系统管理 用的命令,这些命令只能由root使用,如ifconfig。
4和9一个是特殊文件一个是内核,初学者一般不需要了解。
1.2代码示例
代码实例:
Bash
-bash-4.2# man printf
-bash-4.2# man -a printf
--Man-- next: printf(1p) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
^C
#错误示范:
-bash-4.2# man -1 printf
man: invalid option -- '1'
Try 'man --help' or 'man --usage' for more information.
-bash-4.2# man -3 printf
man: invalid option -- '3'
Try 'man --help' or 'man --usage' for more information.
#正确示范:
-bash-4.2# man 1 printf
-bash-4.2# man 3printf
No manual entry for 3printf
(Alternatively, what manual page do you want from section 3printf?)
-bash-4.2# man 3 printf
-bash-4.2#
二,复制指令------cp
2.1指令介绍
- 指令名称:cp
- 使用频率:★★★★★
- 指令作用:cp(copy)用于复制文件或目录。它可以将一个或多个源文件复制到目标文件或指定的目录中。
- 指令操作:cp [选项] 源文件 目标文件
- 说明:
- cp指令用于复制文件或目录
- 如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中
- 常用选项
- f 或 --force 强行复制文件或目录,不论目的文件或目录是否已经存在
- i 或 --interactive 覆盖文件之前先询问用户
- r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
2.2代码示例
代码实例: 文件copy to 目录
Bash
-bash-4.2# tree
.
|-- mulu01
| |-- nihao01
| `-- test789.txt
|-- test23
|-- test.c
`-- \346\254\241\347\224\237\351\242\204\346\241\210.xlsx
2 directories, 11 files
-bash-4.2# cp test23 mulu01
-bash-4.2# tree
.
|-- mulu01
| |-- nihao01
| | `-- test789.txt
| `-- test23
|-- test23
|-- test.c
`-- \346\254\241\347\224\237\351\242\204\346\241\210.xlsx
2 directories, 12 files
-bash-4.2#
代码实例: 目录copy to 目录
Bash
-bash-4.2# tree
.
|-- mulu01
| |-- nihao01
| | `-- test789.txt
| |-- test01
| |-- test02
| |-- test03
| `-- test23
|-- mulu.tgz
|-- mulu.zip
|-- mulu.zip.0
|-- test01
|-- test23
|-- test.c
`-- \346\254\241\347\224\237\351\242\204\346\241\210.xlsx
2 directories, 12 files
-bash-4.2# mkdir mulu59
-bash-4.2# cp mulu01 mulu59
cp: omitting directory 'mulu01'
-bash-4.2# cp -r mulu01 mulu59
-bash-4.2# tree
.
|-- mulu01
| |-- nihao01
| | `-- test789.txt
| |-- test01
| |-- test02
| |-- test03
| `-- test23
|-- mulu59
| `-- mulu01
| |-- nihao01
| | `-- test789.txt
| |-- test01
| |-- test02
| |-- test03
| `-- test23
|-- mulu.tgz
|-- mulu.zip
|-- mulu.zip.0
|-- test01
|-- test23
|-- test.c
`-- \346\254\241\347\224\237\351\242\204\346\241\210.xlsx
5 directories, 17 files
-bash-4.2#
三,剪切指令------mv与"一切皆文件"深入理解
3.1指令介绍
- 指令名称:mv
- 使用频率:★★★★★
- 指令操作:mv [选项] 源文件 目标位置
- 指令功能:
- 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
- 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
- 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
- 常用选项:
- -f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
- -i:若目标文件 (destination) 已经存在时,就会询问是否覆盖!

目标是否"存在"决定行为
- "存在且是目录 → 移动进去"
- "不存在 → 重命名"
- "存在且是文件 → 覆盖"
3.2代码示例
Bash
-bash-4.2# tree
.
|-- mulu01
| |-- nihao01
| | `-- test789.txt
| |-- test01
| |-- test02
| |-- test03
| `-- test23
|-- mulu59
| `-- mulu01
| |-- nihao01
| | `-- test789.txt
| |-- test01
| |-- test02
| |-- test03
| `-- test23
|-- mulu.tgz
|-- mulu.zip
|-- mulu.zip.0
|-- test01
|-- test23
|-- test.c
`-- \346\254\241\347\224\237\351\242\204\346\241\210.xlsx
5 directories, 17 files
-bash-4.2# mv test01 test99
-bash-4.2# ll
total 40
drwxr-xr-x 3 root root 4096 Apr 15 20:18 mulu01
drwxr-xr-x 3 root root 4096 Apr 15 20:22 mulu59
-rw-r--r-- 1 root root 1296 Apr 14 17:51 mulu.tgz
-rw-r--r-- 1 root root 2532 Apr 14 17:50 mulu.zip
-rw-r--r-- 1 root root 2532 Apr 14 17:50 mulu.zip.0
-rw-r--r-- 1 root root 0 Apr 15 20:18 test23
-rw-r--r-- 1 root root 28 Apr 15 19:55 test99
-rw-r--r-- 1 root root 95 Apr 14 17:33 test.c
-rw-r--r-- 1 root root 10993 Oct 14 2025 次生预案.xlsx
-bash-4.2# mv test01 test23
mv: cannot stat 'test01': No such file or directory
-bash-4.2# mv test99 test23
-bash-4.2# mv mulu01 mulu66
-bash-4.2# mv mulu59 mulu01
-bash-4.2# tree
.
|-- mulu01
| `-- mulu01
| |-- nihao01
| | `-- test789.txt
| |-- test01
| |-- test02
| |-- test03
| `-- test23
|-- mulu66
| |-- nihao01
| | `-- test789.txt
| |-- test01
| |-- test02
| |-- test03
| `-- test23
|-- mulu.tgz
|-- mulu.zip
|-- mulu.zip.0
|-- test23
|-- test.c
`-- \346\254\241\347\224\237\351\242\204\346\241\210.xlsx
5 directories, 16 files
-bash-4.2#
3.1深入理解:Linux一切皆文件
3.1.1统一的接口
在 Windows 里,操作硬盘文件、打印机、摄像头可能需要完全不同的软件和逻辑 。但在 Linux 里,操作系统把所有的硬件和资源都"伪装"成了文件。
核心逻辑: 无论对方是硬盘上的文本、键盘、还是显示器(Virtual Display),显示器(实体显示器),对程序员来说,都是文件,操作它们的方式只有简单的四步:Open(打开) -> Read(读取) -> Write(写入) -> Close(关闭)。
例子:
- 读取键盘输入 = 读取一个文件。
- 在显示器打印字符 = 向一个文件写入内容。
有的文件是我们自己打开操作的,有的文件是在开机的时候系统自动帮我们打开的。
举个例子:终端也是文件。新建终端,这里的 div/pts 的列表展示出来就会多一个数字------表示你新打开的那个终端。 可以输出重定向,在1号终端写入数据到0号终端,如图

抑或是执行程序在另外一个终端文件中打印:

3.1.2文件都在哪里
Linux 将不同类型的资源分到了不同的"伪装路径"下:
- 普通文件: 你熟悉的 .txt, .c, .jpg。
- 目录文件: 在 Linux 眼里,文件夹也是一种特殊的文件,里面记录着它包含的文件列表。
- 设备文件 (在 /dev 下):
- /dev/sda: 代表你的硬盘。
- /dev/pts/0: 代表你正在使用的终端窗口。
- /dev/random: 一个产生随机数的"文件"。
3.1.3文件类型
文件的完整信息中的第一个字符代表文件的类型

-:普通文件
d:目录文件
c:字符文件,键盘、显示器、终端,输入的数据具有顺序性
b:块设备文件,磁盘
l:连接文件
p:管道文件

3.1.4linux 2.6. 内核默认支持的文件系统有哪些?
ext2 & ext3
这是 Linux 2.6 时代最主流的默认文件系统。ext3 是在 ext2 基础上增加了日志功能(Journaling),在 2.6 内核中属于"标配"。
ext4ext4 在 Linux 2.6.28 版本中被正式宣布为稳定版。
xfsXFS 最初由 SGI 开发,在 Linux 2.6.0 内核中就被合并到了主线版本中,因此也是默认支持的。
ufsUFS (Unix File System) 是 Solaris/BSD 等系统的原生文件系统。虽然 Linux 内核通过配置可以提供对 UFS 的只读(或有限的写入)支持,但它并不被视为 Linux 系统的"默认支持"或主流原生文件系统。
四,查看内容------cat/more/less/head/tail指令
4.1指令介绍
- 指令名称:cat
- 使用频率:★★★★★
- 指令操作:cat [选项] [文件]
- 指令功能 :全量显示。将文件内容一次性全部输出到屏幕上。常用于查看短小文件,或通过重定向合并文件。
- 常用选项:
- -b 对非空输出行编号,空行不做编号
- -n 对输出的所有行编号
- -s 不输出多行空行(压缩连续空行为一行)
- 指令名称:more
- 使用频率:★★★☆☆
- 指令操作:more [文件]
- 指令功能 :分页查看(基础版)。允许用户一页一页地阅读文件。由于功能受限(只能向后翻页),目前多被 less 取代。
- 常用操作:
- Space 向下翻一页
- Enter 向下滚动一行
- q 退出查看界面
- 指令名称:less
- 使用频率:★★★★★
- 指令操作:less [选项] [文件]
- 指令功能 :分页查看(增强版)。Linux 中最强大的查看工具,支持前后翻页、快速搜索。它不会预加载整个文件,看超大日志时速度极快。
- 常用操作:
- b 向上翻一页
- f / Space 向下翻一页
- /关键词 搜索指定内容(n 查找下一个)
- g 跳到文件开头
- G 跳到文件末尾
- q 退出
- 详细介绍与注意事项
- less 的用法比起 more 更加的有弹性 ,在 more 的时候,我们并没有办法向前面翻,只能往后面看
- 但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件 ,更容易用来查看一个文件的内容
- 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜
- 指令名称:head
- 使用频率:★★★★☆
- 指令操作:head [选项] [文件]
- 指令功能 :查看开头。默认显示文件的前 10 行。常用于快速检查文件格式或确认表头信息。
- 常用选项:
- -n [数字] 指定查看文件开头的前 n 行
- -c [数字] 指定查看文件开头的前 n 个字节
- 指令名称:tail
- 使用频率:★★★★★
- 指令操作:tail [选项] [文件]
- 指令功能 :查看末尾。默认显示文件的最后 10 行。是程序员监控日志、排查实时报错的神器。
- 常用选项:
- -n [数字] 指定查看文件末尾的后 n 行
- -f 循环读取(实时追踪文件新增内容,直到按下 Ctrl+C 退出)
- -s 与 -f 连用,指定每次读取间隔的秒数

4.2代码示例
测试cat/head/tail
Bash
-bash-4.2# nano test23
-bash-4.2# cat test23
fast response
deep learning
efficient execution
data driven
user experience
system architecture
concurrency control
memory management
network communication
distributed system
real time processing
security mechanism
code optimization
automated testing
continuous integration
continuous deployment
fault tolerant design
load balancing
service governance
log analysis
performance tuning
resource scheduling
exception handling
state management
-bash-4.2# head test23
fast response
deep learning
efficient execution
data driven
user experience
system architecture
concurrency control
memory management
network communication
-bash-4.2# tail test23
dynamic allocation
static analysis
runtime environment
garbage collection
event driven model
message queue
publish subscribe
microservice architecture
container orchestration
cloud computing
-bash-4.2#
more和less示例: more和less都是打印一整页,more可以用enter往下翻,但是往下翻了之后就看不到上面的了。less不同。
Bash
**查看日志:**
less /var/log/messages
more /var/log/messages

按回车向下滚动:

less支持 ?[关键词]向上查找 ,和 /[关键词] 向下查找。more只支持 /[关键词] 向下查找,但是总的来讲真不好用。

4.3常用操作
4.3.1终止异常
当我们的程序发生异常而停不下来的时候按Ctrl+C可以停下来。 如下:想要打印日志,我们执行cat /var/log/messages,屏幕会被大量的日志文件刷屏,这个时候想要停下来就按Ctrl+C,没反应过来就多按几次。
简单介绍日志: 日志记录你的操作的痕迹我们历史上执行的命令也被记录了。软件领域必须有日志。未来查询日志是很常见的。

4.3.2管道操作
管道符 | 做的事情不是"拼接命令",而是:把左边进程的 stdout连接到右边进程的 stdin: 如下,我们用|将tail -100 test01 和head -10连接在一起,可以查看文件test01中"最后一百个数据的前10个"
Bash
-bash-4.2# tail -100 test01 | head -10
hello 401
hello 402
hello 403
hello 404
hello 405
hello 406
hello 407
hello 408
hello 409
hello 410
-bash-4.2#

4.3.3阻塞操作
cat 加上回车。这里光标移动到下一行卡住,这里叫"阻塞" ,然后我们键盘输入,它能够给我们显示出来叫:从键盘文件中读取并显示在显示器
Bash
-bash-4.2# cat
1
1
1
1
2
2
8
8
9
9
^C
-bash-4.2#
4.3.4镜像打印
我想要直接看到文件的最后一行,cat倒过来就是tac。tac可以镜像打印文件,跟cat完全反着来:
Bash
-bash-4.2# tac test23
cloud computing
container orchestration
microservice architecture
publish subscribe
message queue
event driven model
garbage collection
runtime environment
static analysis
dynamic allocation
virtual memory
user space
kernel space
lock free structure
locking mechanism
thread safety
instruction pipeline
五,时间与日期------date与cel指令
5.1date指令
- date 指令
- 指定格式显示时间:date +%Y:%m:%d
- 用法: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
指令测试:(标记之间的分隔符随便写)
Bash
-bash-4.2# date
Thu Apr 16 09:27:20 CST 2026
-bash-4.2# date +%Y:%m:%d
2026:04:16
-bash-4.2#
科普知识:电脑关机后谁在帮助你维护时间信息
纽扣电池(CMOS 电池)是主板上的一块小型电源 ,在电脑断电后持续为实时时钟(RTC)供电 ,从而保证系统时间不会丢失;由于RTC功耗极低,这种电池通常可以维持数年时间,一旦电量耗尽,就会导致开机时间重置或不准确。
5.2cal指令
- cal 指令
- cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。"阳历"又名"太阳历",系以地球绕行太阳一周为一年,为西方各国所通用,故又名"西历"。
- 命令格式:cal 参数 [年份]
- 功能:用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
- 常用选项:
- -3 显示系统前一个月,当前月,下一个月的月历
- -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
- -y 显示当前年份的日历。
Bash
-bash-4.2# cal -y
2026
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 1 2 3 4 5 6 7 1 2 3 4 5 6 7
4 5 6 7 8 9 10 8 9 10 11 12 13 14 8 9 10 11 12 13 14
11 12 13 14 15 16 17 15 16 17 18 19 20 21 15 16 17 18 19 20 21
18 19 20 21 22 23 24 22 23 24 25 26 27 28 22 23 24 25 26 27 28
25 26 27 28 29 30 31 29 30 31
April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 1 2 1 2 3 4 5 6
5 6 7 8 9 10 11 3 4 5 6 7 8 9 7 8 9 10 11 12 13
12 13 14 15 16 17 18 10 11 12 13 14 15 16 14 15 16 17 18 19 20
19 20 21 22 23 24 25 17 18 19 20 21 22 23 21 22 23 24 25 26 27
26 27 28 29 30 24 25 26 27 28 29 30 28 29 30
31
July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 1 1 2 3 4 5
5 6 7 8 9 10 11 2 3 4 5 6 7 8 6 7 8 9 10 11 12
12 13 14 15 16 17 18 9 10 11 12 13 14 15 13 14 15 16 17 18 19
19 20 21 22 23 24 25 16 17 18 19 20 21 22 20 21 22 23 24 25 26
26 27 28 29 30 31 23 24 25 26 27 28 29 27 28 29 30
30 31
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 1 2 3 4 5 6 7 1 2 3 4 5
4 5 6 7 8 9 10 8 9 10 11 12 13 14 6 7 8 9 10 11 12
11 12 13 14 15 16 17 15 16 17 18 19 20 21 13 14 15 16 17 18 19
18 19 20 21 22 23 24 22 23 24 25 26 27 28 20 21 22 23 24 25 26
25 26 27 28 29 30 31 29 30 27 28 29 30 31
-bash-4.2#
好了,本期内容到此结束,我是此方,我们下期再见。バイバイ!