
大家好,欢迎来到 huangjin007_ 的博客
⭐
个人主页:huangjin007_
🔥
文章收录专栏:Linux 内功修炼手册(系统篇)
总会有一些坚持能从冰封的土地里培育出十万朵怒放的蔷薇
Linux 系统篇(二) —— 基础指令详解(二)
文章目录
- Linux 系统篇(二) —— 基础指令详解(二)
-
- 一、文件与目录的移动和改名:`mv`
- 二、查看文件内容的基础:`cat`、`more`、`less`
-
- 2.1 `cat`指令
- 2.2 `more` 指令
- 2.3 `less`指令
- 三、只看头尾:`head` 和 `tail`
-
- 3.1 `head` —— 看开头
- 3.2 `tail` —— 看结尾
- 3.3 `head` 与 `tail` 搭配看中间
- 四、文本统计与简易输出:`wc`、`echo`、`printf`
-
- 4.1 `wc`指令
- 4.2 `echo` 和 `printf` 指令
- 五、输入输出重定向与文件描述符
-
- 5.1 什么是标准文件描述符?
- 5.2 重定向操作符
- 六、系统时间与日历:`date` 和 `cal`
-
- 6.1 `date` —— 时间的显示与设置
- 6.2 Unix 时间戳
- 6.3 `cal` —— 打印日历
- 七、文件查找与命令定位:`find`、`which`、`whereis`
-
- 7.1 `find` 指令
- 7.2 `which` 指令
- 7.3 `whereis` 指令
- 八、进阶认知
-
- 8.1 “一切皆文件”
- 结语:
一、文件与目录的移动和改名:mv
mv 是 move 的缩写,这个命令身兼两职:移动文件 和 重命名文件。
基本语法
mv [选项] 源文件或目录 目标文件或目录
功能详解 mv 如何工作,完全取决于第二个参数(目标)是什么:
如果目标是一个已存在的目录 mv 会把所有源文件(可以多个)都搬进这个目录里。 
如果目标不是一个已存在的目录(或者是一个文件名) mv 会执行重命名操作。此时源文件只能有一个,mv 会将这个源文件的名字改成目标的名字。 
这里有一个容易误解的点:如果你想把一个文件移动到不存在的目录中,mv 并不会自动创建这个目录,而是会认为你想把源文件“重命名”成那个目录名。所以,移动文件前请确保目标目录已经存在!
常用选项
-
-f(force):强制执行。如果目标文件已经存在,mv 会不询问直接覆盖。

-
-i(interactive):交互模式。如果目标文件已经存在,mv 会弹出询问是否覆盖。
二、查看文件内容的基础:cat、more、less
经常需要快速看一眼文件里写了什么,又不想打开编辑器,此时就要用到文本查看命令。
2.1 cat指令
cat 是 concatenate(连接)的缩写,它最常用的功能是显示文件的全部内容。当你把多个文件名作为参数时,cat 会把它们的内容按顺序拼接后一起输出。
基本语法
cat [选项] [文件...]
常用选项
- -n:给输出的每一行都加上行号(包括空行)。
- -b:只给非空行加行号,空行跳过不编号。这对阅读带许多空行的代码或配置文件非常友好。
- -s:压缩连续的空行。如果文件中出现多个连续的空行,-s 会将其压缩为一行,让输出更紧凑。

偷偷告诉你
-
cat > newfile.txt 可以把接下来你在终端输入的内容保存到文件中(按 Ctrl+D 结束输入)。这个小技巧在快速新建小文件时非常顺手。

-
tac 命令(cat 的反写)可以倒序输出文件内容,即最后一行先显示,偶尔有奇效。

cat 虽好,但如果文件有几千行,内容一下子刷屏过去,前面的根本来不及看。这时候就要请出分页工具了。
2.2 more 指令
more 命令会让你一页一页地阅读文件,每次只显示一屏内容。
基本语法
more [选项] [文件]
常用操作
- 翻页:按空格键向下翻一页,按回车键向下滚动一行。
- -n 选项:指定每屏显示的行数。比如 more -10 file.txt 表示每屏只显示 10 行。
- 退出:按 q 键退出 more。
- 搜索:按 / 后输入字符串可以向下搜索,但 more 的搜索功能很弱。
more 最大的局限是:只能向下翻页,不能往回看。当你翻过一页之后,就没法再看到上一页的内容了。这种“有去无回”的体验确实不太友好,于是就有了它的升级版 —— less。
2.3 less指令
基本语法
less [参数] 文件
为什么它叫 less?
其实它最早是从 more 的改进版发展而来的,意指“你需要的比 more 更少一些限制”。less 在打开文件时不会一次性加载全部内容,而是按需读取,所以打开大文件(比如几百 MB 的日志)也比编辑器快得多,而且不占用大量内存。
核心操作
- 上下滚动:
-
- j / k 或 方向键上下:逐行滚动。
-
- PageDown / PageUp 或 Ctrl+F / Ctrl+B:向下 / 向上翻一整屏。
-
- g:跳到文件开头。G:跳到文件末尾。
- 搜索功能:
-
- /字符串:向下搜索这个字符串。按 n 跳到下一个匹配项,N 跳到上一个匹配项。
-
- ?字符串:向上搜索这个字符串。同样 n 和 N 分别表示“继续同方向”和“反向查找”。
- 显示行号:
-
- 启动时加 -N 选项:less -N file.txt,每行前会显示行号,方便定位。
- 退出:按 q。
三、只看头尾:head 和 tail
有时候你只关心文件的开头几行或最后几行,比如查看日志的最新记录、检查配置文件的头几行注释,这时候用 cat 就太“重”了。
3.1 head —— 看开头
head 默认显示文件的前 10 行。
语法
head [参数]... [文件]...
选项
- -n <行数>:显示指定的行数。比如 head -n 20 file.txt 显示前 20 行。
- 也可以简写为 -20,效果等同于 -n 20。

3.2 tail —— 看结尾
tail 默认显示文件的末尾 10 行。
语法
tail [必要参数] [文件]
选项
- -n <行数>:同 head,指定显示末尾多少行。

3.3 head 与 tail 搭配看中间
先来认识一个符号:
管道符 |:把前一个命令的标准输出,直接当作后一个命令的标准输入。

四、文本统计与简易输出:wc、echo、printf
4.1 wc指令
wc 是 word count 的缩写,用来统计文件中的行数、单词数和字符数。
常用选项
- -l:只统计行数(lines)。
- -w:只统计单词数(words)。单词是以空白字符(空格、制表符等)分隔的连续字符。
- -c:只统计字符数(bytes,严格说是字节数)。
- 不带任何选项时,会依次输出:行数、单词数、字符数、文件名。

wc 通常结合管道使用,例如 ls | wc -l 统计当前目录下有多少个文件(夹)。
4.2 echo 和 printf 指令
这两个命令用来在终端输出文本。
-
echo "内容":原样输出字符串,末尾自动加换行。

-
printf "格式" 参数…:类似 C 语言的 printf,支持格式化输出,默认不换行,需要自己加 \\n。

五、输入输出重定向与文件描述符
5.1 什么是标准文件描述符?
Linux 中每个进程(正在运行的程序)在启动时,操作系统都会为它打开三个默认的“数据流”,并给它们分配固定的编号:
| 0 | 标准输入 | 程序的输入数据来源 | 键盘 |
| 1 | 标准输出 | 程序正常输出的目的地 | 终端屏幕 |
| 2 | 标准错误 | 程序错误信息的输出地 | 终端屏幕 |
也就是说,当你在程序里 printf 打印内容时,这些内容其实是写入了文件描述符 1;报错信息则写入文件描述符 2。而“重定向”就是改变这些数据流的方向,让输出不显示在屏幕上,而是存到文件里。
5.2 重定向操作符
> 覆盖重定向(标准输出)
把 echo 命令本来要打印到屏幕的“hello”写入文件 1.txt。如果 1.txt 原本有内容,会先清空再写入(覆盖)。

>> 追加重定向(标准输出)

同样写入 1.txt,但不覆盖原内容,而是追加到文件末尾。
六、系统时间与日历:date 和 cal
6.1 date —— 时间的显示与设置
date 既可以看时间,也能以指定的格式输出时间,甚至修改系统时间(需要 root 权限)。
显示时间 直接输入 date 会给出当前日期和时间,格式为系统默认。如果希望自定义格式,就用 + 后接格式符号:
常用格式符号速查表:
| %Y | 完整年份(0000-9999) |
| %m | 月份(01-12) |
| %d | 日期(01-31) |
| %H | 小时(00-23) |
| %M | 分钟(00-59) |
| %S | 秒(00-59) |
| %F | 相当于 %Y-%m-%d |
| %X | 相当于 %H:%M:%S |

6.2 Unix 时间戳
Unix 世界用从 1970 年 1 月 1 日 00:00:00 UTC 起经过的总秒数来记录时间,这叫 Unix 时间戳(timestamp)。它和人类可读的日期之间可以互相转换:
- 日期 -> 时间戳:

- 时间戳 -> 日期:

- 注意 -d 参数后面跟 @数字 表示该数字是一个时间戳。
6.3 cal —— 打印日历
cal 命令可以显示简单的日历,帮你快速查日期。
- 默认:显示当前月的日历
- -y:显示整年的日历。
- -3:同时显示上个月、本月、下个月。

- -j:显示这一天是当年中的第几天(1 月 1 日为 1)。

- 参数可以指定年份和月份。
七、文件查找与命令定位:find、which、whereis
7.1 find 指令
find 是一个极其强大的文件搜索工具,可以在目录树中根据文件名、大小、权限、修改时间等各种条件查找文件。本篇我们先介绍最常用的一个。
基本语法
find 搜索路径 [选项] [操作]
如果不指定搜索路径,默认是当前目录 .。
按文件名查找(-name)
find /home -name "*.txt" # 在 /home 下查找所有以 .txt 结尾的文件
find /etc -name "passwd" # 精确查找名为 passwd 的文件

7.2 which 指令
当你输入 ls 时,Shell 是怎么知道要运行 /bin/ls 的呢?which 能告诉你某个命令对应的可执行文件路径。 
7.3 whereis 指令
whereis 比 which 更全面,它不光查找二进制可执行文件,还会一并找到相关的源代码和手册页(man page) 的位置。

八、进阶认知
8.1 “一切皆文件”
在 Linux 中,几乎所有的资源都被抽象成了“文件”,你可以用统一的接口去操作它们(open, read, write, close)。用 ls -l 可以看到文件类型标识符:
| – | 普通文件 | 文本、图片、可执行程序 |
| d | 目录 | 文件夹 |
| l | 软链接(符号链接) | 类似 Windows 快捷方式 |
| b | 块设备文件 | 硬盘、USB 存储器 |
| c | 字符设备文件 | 键盘、鼠标、串口 |
| p | 管道文件 | 用于进程间通信 |
结语:
今天的内容到这里就结束了,希望你能有所收获~
干货整理到手抖,觉得有用的话,赏个三连回回血?__(:ᗤ」ㄥ)_ _




