前两篇笔记解决了“为什么学习Linux”和“命令行处在什么位置”这两个问题,这一篇开始记录更具体的操作:如何查命令、如何处理文件,以及如何把多个命令串起来
先学会查:man
Linux命令很多,靠记忆不现实。man是最直接的联机手册入口:
man man
man 1 printf
man 2 fork
man 3 printf
man后面的数字表示手册章节。常见的几类包括:
| 章节 | 内容 |
|---|---|
| 1 | 普通用户命令 |
| 2 | 系统调用 |
| 3 | C语言库函数 |
| 5 | 文件格式和配置文件 |
| 8 | 系统管理命令 |
例如,想看Shell中的printf命令,可以查man 1 printf;想看C语言接口,可以查man 3 printf。如果系统提示没有手册,按发行版安装对应的man或man-pages包即可
文件的复制、移动和查看
cp:复制
cp source.txt backup.txt
cp -r project project-backup
-r用于递归复制目录。覆盖已有文件前,可以使用-i让命令先询问确认
mv:移动或重命名
mv draft.md notes.md
mv notes.md archive/
同一个命令既能改名,也能把文件移动到另一个目录。理解这一点后,整理文件时不需要额外记一条“重命名命令”
cat:快速输出文件
cat -n notes.md
cat适合查看短文件或把多个文件连接起来。面对很长的日志时,直接全部输出会让终端很难操作,这时应该换成分页和筛选工具
阅读长文本
less可以前后翻页,也能在文件内部搜索,适合查看日志:
less server.log
进入后可以使用/error向下搜索error,使用?error向上搜索;按n跳到下一个匹配项,按q退出
head和tail用来查看文件开头或结尾的若干行:
head -n 20 server.log
tail -n 20 server.log
组合起来,就可以从一个大文件中取出指定范围。例如,下面的命令会先取前520行,再取其中最后5行:
head -n 520 long.txt | tail -n 5
管道:让命令协作
竖线|会把前一个命令的标准输出交给后一个命令作为输入。它的价值在于可以把简单工具组合成一条清晰的数据处理流程:
cat app.log | grep "ERROR"
ls -la | less
printf '%s\n' *.log | head -n 10
实际排查问题时,常见的思路是“先产生数据,再逐步缩小范围”。比如先用ps列出进程,再用grep筛选目标服务:
ps aux | grep nginx
需要注意,管道默认传递的是标准输出,错误输出不会自动进入后一个命令。如果确实需要把错误输出也交给管道,可以使用Shell的重定向语法显式合并
一个需要牢记的安全习惯
rm删除文件通常不会进入桌面系统那样的回收站,尤其是rm -r和rm -f,误操作后很难恢复。执行删除前,先确认三件事:
pwd
ls -la
rm -i target.txt
如果经常需要整理文件,可以先用mv把文件移动到自己创建的临时目录,确认无误后再统一清理。把“可恢复”作为默认习惯,比给rm设置一个复杂别名更容易理解和维护
小结
man负责让我们知道命令应该怎么用,cp、mv、cat、less、head和tail负责处理文件,管道则把这些小工具连接起来。掌握查手册、单独验证、组合使用的节奏,命令行才会从背诵题变成真正的工作工具
来源
本文为个人学习笔记,根据2301_80171004的《探索Linux命令行:从基础指令到高级管道操作的介绍与实践》提炼并重新组织,保留原文链接供进一步阅读
留言
评论区暂未开放;可先通过 RSS 或「关于」页联系。