查看长输出、搜索文本和编辑文件是三种不同任务。把它们都交给同一个命令,容易出现刷屏、终端乱码,甚至误以为程序已经退出。

长输出交给分页器

例如:

ls -l /etc | less
find ./demo -type f -name '1.png' | less

管道把前一个程序的标准输出交给 less。第二条限定在示例目录中查找,不从整个系统无边界扫描。

less 是分页器,不是编辑器,可以前后浏览和搜索。常见操作是空格向后翻一屏、b 向前翻一屏、q 退出;具体行为也受版本和配置影响。less 官方说明

cat 主要把内容输出到标准输出,本身没有供你输入斜杠查找的交互界面。需要边看边搜时,直接用 less 打开文本文件即可。

Vim 和 less 的搜索不是 cat 的功能

在 Vim 普通模式中:

输入含义
/pattern 后回车向文件后续内容搜索
?pattern 后回车向前搜索
n按最近搜索方向继续
N沿相反方向继续

Vim 的搜索表达式还有正则和选项语义,不要把任意含特殊字符的文本当成无需处理的固定字面量。Vim 搜索命令

less 也支持常见的 /、? 和重复搜索操作,但两者不是同一个程序。需要编辑就直接用 Vim,不必运行 vim | less;全屏编辑器的终端控制输出不是普通文本流。

正常退出与挂起要分清

less 通常用 q 退出。Vim 先按 Esc 回到普通模式,再按需求使用 :q;有未保存内容时它会拒绝直接退出。:wq 会保存修改,:q! 会丢弃未保存修改,不能在不知道自己改了什么时机械使用。

在启用了作业控制的常见交互 Bash 中,Ctrl+Z 通常暂停前台作业并把提示符交回 shell,进程仍然存在:

jobs
fg %1

先用 jobs 看实际作业编号,再用对应编号恢复;%1 只是示例,不保证就是你要操作的作业。恢复到前台后再按程序自己的方式正常退出。Bash 作业控制

Ctrl+C 通常向前台作业发送中断信号,程序如何处理由它自己决定,也不是所有程序的“无损退出键”。

保存输出要先确认目标

重定向符号 > 通常会创建或截断目标文件,追加符号 >> 则有另一种含义。两边加空格便于阅读,但不是所有情况下必须有空格才能识别。

保存查找结果前,应确认目标是允许新建或覆盖的文件,而不是直接借用一个现有配置名。提示符回来了、输出没显示和程序已经退出,也都不能互相替代判断。