Linux 其他基础命令

Linux 其他基础命令

七月 13, 2025 次阅读

上一节命令讲解跳转:Linux 最基础的命令

接下来要讲解的命令都和上一节的 cat 命令息息相关

echo

该命令主要用于在终端输出文本或变量的值

下面是 echo 的基础用法示例:

╭─ljx@VM-16-15-debian ~/linux_review/lesson1/dir1
╰─➤  echo "hello world"
hello world
╭─ljx@VM-16-15-debian ~/linux_review/lesson1/dir1
╰─➤  echo $HOME
/home/ljx

下面是 echo 命令常用的两个选项:

-n

加上该选项后,echo 命令输出信息时会不换行输出

╭─ljx@VM-16-15-debian ~/linux_review/lesson1/dir1
╰─➤  echo -n "hello"; echo " World"
hello World

-e

加上改选项后,echo 命令会检测转义字符

╭─ljx@VM-16-15-debian ~/linux_review/lesson1/dir1
╰─➤  echo -e "hello\nworld"
hello
world

这些是 echo 命令的基础用法,包括上一节讲到的 cat 命令都是一些基础用法,下面我要讲到的一个很重要的知识点是重定向,目前并不需要了解太深,
只需要学会将重定向和这两个指令结合着使用就可以了

Linux 重定向详解(结合 echo 和 cat 实践)

重点!重点!重点!重要的事情说三遍,下面我们将讨论和重定向相关的知识点

一、重定向基础概念

Linux 中有三种标准数据流:

  1. 标准输入(stdin,文件描述符 0)
  2. 标准输出(stdout,文件描述符 1)
  3. 标准错误(stderr,文件描述符 2)

这里提到的文件描述符涉及进程概念,当前并不需要了解太深入,后面进程部分会有讲解,之所以提及这个东西是因为后面
在重定向的使用过程中你会发现有些重定向符号会在前面加上数字,这个数字就对应了上面这三种情况,举个简单的例子,>> 符号是追加重定向,
那么 2>> 就是错误追加重定向(现在你并不需要记住他,只是为了让你待会看到这个符号的时候有个印象)、

首先我们得有一个概念,在 Linux 中一切皆文件,比如说我们的显示屏,虽说它是用来给我们提供显示信息的,让我们的信息可视化,但它之所以可以显示各种信息,
本质上是通过一个叫做显示屏文件的东西将信息显示出来的

这样一来,我们就可以理解到 cat 命令 和 echo 命令的基本底层逻辑了,cat 命令默认是读取后面输入的文件名所对应的信息的,而 echo 默认是将用户
输入的信息显示到显示屏上去的(准确说是输出到标准输出文件 stdout 中去的)(当然,你可以试试输入 cat 命令直接回车,然后你可以尝试输入一段信息并回车,他就会显示什么信息到显示屏,这是因为在你没有指定 cat 的输入流的
时候他会默认从标准输入中读取数据)

因此,下面这些操作本质上就是让 cat 命令和 echo 命令将输入流和输出流控制到别的地方去

二、输出重定向(> 和 >>)

1. 覆盖写入(>)

使用该符号重定向写入的数据会覆盖掉文件中的原始数据

╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ echo "第一行内容" > test.txt
╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ cat test.txt
第一行内容

╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ echo "新内容" > test.txt  # 覆盖原内容
╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ cat test.txt
新内容

2. 追加写入(>>)

╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ echo "第一行" >> log.txt
╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ echo "第二行" >> log.txt
╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ cat log.txt
第一行
第二行

三、输入重定向(< 和 <<)

1. 文件作为输入(<)

╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ cat < log.txt  # 效果等同于 cat log.txt(效果虽然相同,但是他们的底层实现逻辑有本质区别,这个涉及到了文件描述符,因此暂时不深究)
第一行
第二行

2. Here Document(<<)

╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ cat << EOF
> 这是即时输入的内容
> 直到遇到EOF结束标记
> EOF
这是即时输入的内容
直到遇到EOF结束标记

四、错误重定向(2> 和 2>>)

╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ cat not_exist.txt 2> error.log
╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ cat error.log
cat: not_exist.txt: No such file or directory

错误重定向用于将输出的错误信息重定向到指定文件中,当使用 2> 作为错误输出重定向时和直接使用 > 重定向没有本质区别,
但若想追加错误信息重定向就一定得使用 2>> 而不是 >>,当然相信你会有疑问, >> 符号不也是输出追加重定向吗,为什么他就不能
将错误信息追加到文件里面呢

这就涉及到了一个历史遗留的问题了:

五、综合实践案例

案例1:创建配置文件

╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ echo "SERVER_IP=192.168.1.1" > config.env
╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ echo "PORT=8080" >> config.env
╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ cat config.env
SERVER_IP=192.168.1.1
PORT=8080

案例2:日志收集

╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ echo "$(date): 系统启动" >> system.log
╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ cat system.log
Wed Jun 15 10:00:00 CST 2023: 系统启动

案例3:错误处理

╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ cat maybe_exist.txt > output.log 2> error.log
╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ echo "命令退出状态: $?" >> error.log
╭─ljx@VM-16-15-debian ~/linux_review/lesson1
╰─➤ cat error.log
cat: maybe_exist.txt: No such file or directory
命令退出状态: 1

more

more 是 Linux/Unix 系统中一个经典的分页查看工具,用于逐屏查看长文本文件内容。它是早期分页工具,后来被功能更强大的 less 命令部分取代,但在许多场景中仍然实用。


一、基本用法

more [选项] 文件名

二、核心功能特点

  1. 分页显示

    • 自动在终端高度处暂停
    • 显示已阅读百分比(如 --More--(15%)
  2. 基础导航

    • 空格键:向下翻一页
    • 回车键:向下翻一行
    • q:立即退出
  3. 搜索功能

    • /关键词:向前搜索(按 n 跳转到下一个匹配)

三、常用操作指令

按键 功能
空格 下一页
Enter 下一行
q 退出
= 显示当前行号
:f 显示文件名和当前行号
/pattern 搜索指定模式(正则表达式支持有限)
!cmd 执行shell命令(如 !ls

四、与 less 命令的对比

特性 more less
回滚 只能向前 支持前后滚动
搜索 只能向前搜索 支持双向搜索
大文件 加载全部内容 按需加载(更高效)
功能 基础功能 支持标签、多文件等高级功能
系统资源 占用较多内存 更节省内存

五、实用技巧示例

1. 从特定行开始查看

more +100 /var/log/nginx/access.log  # 从第100行开始显示

2. 配合管道使用

grep "ERROR" system.log | more      # 过滤错误日志后分页查看

3. 查看多个文件

more file1.txt file2.txt           # 按 `:n` 切换到下一个文件

4. 快速跳转(较新版本支持)

more +/error system.log           # 搜索"error"并跳转到第一个匹配处

下面要重点介绍的是 less 命令:

Linux less 命令讲解

less 是 Linux/Unix 系统中功能最强大的分页查看工具,相比 more 具有更丰富的功能和更高的效率,是系统管理员和开发者的必备工具。


一、核心优势

  1. 双向浏览:支持向前/向后滚动
  2. 高效内存管理:不会加载整个文件到内存
  3. 高级搜索:支持正则表达式和反向搜索
  4. 多文件操作:可同时打开多个文件
  5. 自定义界面:可调整显示方式和快捷键

二、基本用法

less [选项] 文件名

常用启动选项:

选项 说明
-N 显示行号
-i 忽略搜索大小写
-S 截断长行(不换行)
-F 文件小于一屏时自动退出
+F 实时跟踪模式(类似 tail -f

三、导航命令大全

基础移动:

按键 功能
空格/f 前进一屏
b 后退一屏
/j 下一行
/k 上一行
G 跳转到文件末尾
1G/gg 跳转到文件开头
50% 跳转到50%位置

高级跳转:

命令 功能
10j 向下10行
20↓ 向下20行
:n 下一个文件(多文件时)
:p 上一个文件

四、搜索功能详解

1. 文本搜索:

命令 功能
/pattern 向前搜索
?pattern 向后搜索
n 下一个匹配项
N 上一个匹配项
&pattern 只显示匹配行

2. 正则搜索:

/[0-9]{3}-[0-9]{4}  # 搜索电话号码模式

3. 搜索高亮:

less -p "error" log.txt  # 启动时直接搜索并高亮"error"

五、实用功能技巧

下面这些并不需要你记住,包括上面的一些用法,在需要的时候学会查询文档就可以了,常用的选项其实就那么几个

1. 多文件操作:

less file1.txt file2.txt
  • :n 下一个文件
  • :p 上一个文件
  • :e 打开新文件

2. 实时监控(替代 tail -f):

less +F /var/log/syslog
  • Ctrl+C 退出跟踪模式
  • F 重新进入跟踪模式

3. 编辑当前文件:

v  # 用默认编辑器打开当前文件

4. 标记位置:

ma  # 标记当前位置为a
'a  # 跳转到标记a

head 以及 tail 指令

这两个指令一个是用来指定看文件的前多少行,另一个则用来查看问价你的最后多少行,我直接给你们一个示例你们自然就懂了:

╭─ljx@VM-16-15-debian ~/linux_review/lesson1/dir1
╰─➤  head -10 test.txt                                                                                              1 ↵
hello linux 1
hello linux 2
hello linux 3
hello linux 4
hello linux 5
hello linux 6
hello linux 7
hello linux 8
hello linux 9
hello linux 10
╭─ljx@VM-16-15-debian ~/linux_review/lesson1/dir1
╰─➤  tail -10 test.txt
hello linux 9991
hello linux 9992
hello linux 9993
hello linux 9994
hello linux 9995
hello linux 9996
hello linux 9997
hello linux 9998
hello linux 9999
hello linux 10000

会用了吧,接下来咱进阶一下,假如说我想要读取某个文件从第1300行开始的10行数据怎么办?

你肯定会和我一样立刻产生一个想法,那我先通过 head 读取前1310行数据,再读取这1310行数据的最后10行不就可以了吗?

没错,为了达成这个目的,我们就要讲到一个叫做管道的东西了:

这里我们不需要理解太深刻,先把这个例子的实现搬出来:

╭─ljx@VM-16-15-debian ~/linux_review/lesson1/dir1
╰─➤  head -1310 test.txt | tail -10
hello linux 1301
hello linux 1302
hello linux 1303
hello linux 1304
hello linux 1305
hello linux 1306
hello linux 1307
hello linux 1308
hello linux 1309
hello linux 1310

可以看到,我们先读取文件的钱1310行,然后有一个 | 符号,这个符号就是管道,它的作用是,将管道左边的输出流(文件的前1310行数据)作为右边数据访问的输入流,这样
tail 所操作的数据就是文件的钱1310行了。

find

改命令用于查找文件名所在目录,这个命令的选项很多,但我们常用的就一个 -name 选项

# 从 /home/ljx 中查找所有叫 test.txt 文件的所在路径
╭─ljx@VM-16-15-debian ~/linux_review/lesson1/dir1
╰─➤  find /home/ljx -name test.txt                                                                                130 ↵
/home/ljx/linux_review/lesson1/dir1/test.txt
/home/ljx/linux_review/lesson1/test.txt
/home/ljx/linux_lesson/lesson11/test.txt
/home/ljx/cpp_code/Logging-System/build/Draft/logfile/test.txt

grep

这个命令是用来查询文件中包含指定内容的数据,示例如下:

# 查询 test.txt 中包含 999 的 行
╭─ljx@VM-16-15-debian ~/linux_review/lesson1/dir1
╰─➤  grep 999 test.txt                                                                                              2 ↵
hello linux 999
hello linux 1999
hello linux 2999
hello linux 3999
hello linux 4999
hello linux 5999
hello linux 6999
hello linux 7999
hello linux 8999
hello linux 9990
hello linux 9991
hello linux 9992
hello linux 9993
hello linux 9994
hello linux 9995
hello linux 9996
hello linux 9997
hello linux 9998
hello linux 9999

grep 命令还有很多作用,这里先只介绍这一种,具体的后面用到时会详细介绍