Linux基本指令2

张开发
2026/4/10 16:36:25 15 分钟阅读

分享文章

Linux基本指令2
一、课前复习5分钟正式开始新内容之前我们先快速回顾一下之前讲过的重点。1.1 Linux 历史回顾计算机发展史从 ENIAC1945年到摩尔定律推动计算机小型化操作系统诞生UNIX 由肯·汤普森汇编和丹尼斯·里奇C语言重写开发Linux 诞生1991年芬兰赫尔辛基大学学生林纳斯·托瓦兹开源了 Linux 内核开源 vs 闭源开源系统如 Linux进化速度快性能、稳定性、安全性更优1.2 发行版与内核版本类型说明示例商业化发行版不同厂商打包的 Linux 系统Ubuntu、CentOS、Red Hat、Kali内核版本技术路线数字标识3.10、5.10、6.10不同发行版底层可能使用相同的内核版本。1.3 环境搭建与用户管理推荐方案云服务器 Xshell 远程登录用户管理命令whoami查看当前用户pwd查看当前路径adduser 用户名新建用户passwd 用户名设置密码userdel -r 用户名删除用户必须带-r1.4 核心知识点回顾知识点说明目录 文件夹Linux 中的目录等同于 Windows 的文件夹文件 内容 属性空文件也占用磁盘空间存储属性信息文件类型d目录-普通文件隐藏文件以.开头的文件ls -a查看当前目录/上级目录.当前目录..上级目录路径绝对路径从/开始相对路径从当前位置开始家目录root/root普通用户/home/用户名cd ~快速回家命令本质命令就是可执行文件C/C 程序快捷键CtrlC终止程序上下键翻历史命令二、一切皆文件2.1 核心概念Linux 下一切皆文件Linux 系统不仅把.c、.txt、可执行程序当做文件磁盘、网卡、显卡、键盘、鼠标、显示器等设备在系统层面也被设计成了文件的形式。2.2 默认打开的三个文件我们以前学 C/C 时直接用printf/cout输出、scanf/cin输入从来没有手动打开过键盘或显示器。这是因为系统在启动程序时默认帮我们打开了三个文件stdin标准输入→ 对应键盘stdout标准输出→ 对应显示器stderr标准错误→ 对应显示器所以printf、scanf的本质就是文件操作——向显示器文件写入从键盘文件读取。2.3 终端也是文件当我们用 Xshell 登录 Linux 时系统会在/dev/pts/目录下创建一个设备文件如0、1、2代表当前终端。ls -l /dev/pts # 输出示例 # crw------- 1 root root 136, 0 Sep 10 19:59 0 # crw------- 1 root root 136, 1 Sep 10 19:59 1文件类型为c字符文件代表字符设备终端文件既能接收键盘输入也能显示输出2.4 C 语言验证c #include stdio.h int main() { FILE *fp fopen(/dev/pts/0, w); if (fp NULL) { printf(open error\n); return 1; } fprintf(fp, hello from C to terminal!\n); fclose(fp); return 0; }编译运行后字符串会直接写入到指定的终端设备文件中。三、重定向操作3.1 输出重定向默认情况下echo hello会将字符串写入显示器文件。使用可以改变输出方向echo hello world hello.txt如果hello.txt不存在 → 新建如果hello.txt已存在 →先清空再写入3.2 清空文件 hello.txt # 什么都不写只清空文件3.3 追加重定向echo new line hello.txt # 追加到文件末尾不清空原有内容3.4 输入重定向cat命令默认从键盘读取使用可以从指定文件读取cat hello.txt # 从 hello.txt 读取内容并显示注意这个输入重定向与cat直接打印还有点区别学到后面会细讲。3.5 重定向与 C 语言打开方式的对应重定向操作对应 C 语言打开方式行为fopen(path, w)不存在则新建存在则清空fopen(path, a)追加写入输入重定向从文件读而非键盘四、文件类型详解使用ls -l查看文件详细信息第一列的第一个字符表示文件类型字符文件类型示例说明-普通文件-rw-r--r--文本、可执行程序、图片、视频等d目录文件drwxr-xr-x文件夹c字符设备文件crw-------键盘、显示器、终端b块设备文件brw-rw----磁盘支持随机读写l链接文件lrwxrwxrwx类似 Windows 快捷方式p管道文件prw-r--r--进程间通信s套接字文件srwxrwxrwx网络通信4.1 关于文件后缀Linux 系统不通过后缀区分文件类型而是通过文件属性第一列第一个字符。但这不是说 Linux 禁止使用后缀。GCC 编译器仍然识别.c后缀系统只是不强制要求。# 把 .c 改成 .txt 后gcc 就不认了 mv test.c test.txt gcc test.txt # 报错文件格式不识别 # 改回 .c 后恢复正常 mv test.txt test.c gcc test.c # 正常编译结论后缀在 Linux 中只是文件名的一部分但某些工具如 GCC会依赖后缀来识别文件类型。五、新增指令详解5.1echo— 打印字符串echo hello world # 输出hello world将后面的内容当作字符串打印到显示器默认写入显示器文件会自动在末尾添加换行符\n5.2printf— 格式化打印printf hello %d, %s\n 100 bit # 输出hello 100, bit用法与 C 语言的printf类似不会自动添加换行符需要手动加\n5.3cat— 查看文件内容cat test.c # 显示 test.c 的内容 cat -n test.c # 带行号显示适合查看短文件查看大文件会刷屏5.4tac— 反向查看文件内容tac test.c # 从最后一行开始显示cat的反向拼写功能也是反向的5.5mv— 移动 / 重命名mv 1.txt 2.txt # 重命名1.txt → 2.txt mv file.txt /tmp/ # 移动将 file.txt 移动到 /tmp 目录 mv dir1/ /tmp/ # 移动整个目录如果目标路径是目录 →剪切如果目标路径不是目录且不存在 →重命名5.6more— 分页查看文件more /var/log/temp.txt空格/回车向下翻页/翻行q退出不支持向上翻页5.7less— 更强大的分页查看器推荐less /var/log/messages上下键上下翻行空格/PageDown向下翻页PageUp向上翻页/关键词向下搜索n下一个N上一个?关键词向上搜索q退出推荐使用less功能比more更全面。5.8head— 查看文件开头head -n 10 log.txt # 查看前10行默认10行5.9tail— 查看文件结尾tail -n 10 log.txt # 查看最后10行默认10行 tail -f log.txt # 实时跟踪文件新增内容常用于查看日志5.10date— 查看/设置时间date # 默认格式 date %Y:%m:%d %H:%M:%S # 自定义格式年:月:日 时:分:秒常用格式符%Y年四位数%m月%d日%H时24小时制%M分%S秒5.11 时间戳Timestampdate %s # 显示当前时间戳从1970-01-01 00:00:00 UTC 到现在的秒数格林威治时间戳全球统一的时间计数方式计算机内部维护一个线性递增的计数器每秒11970年1月1日午夜UTC为起点东八区比 UTC 早8小时所以date -d 0显示1970-01-01 08:00:00时间戳与可读时间互转date -d 时间戳 # 时间戳 → 可读时间 date -d 2024-09-10 12:00:00 %s # 可读时间 → 时间戳时间戳的作用计算机内部存储和计算更方便整数递增便于做区间查找如查某段时间内的日志5.12cal— 查看日历cal # 当前月 cal 2024 # 全年 cal 9 2024 # 指定年月的日历5.13find— 查找文件find / -name *.c # 从根目录开始找所有 .c 文件 find /root -name test.c # 在指定目录下查找在整棵目录树中按文件名查找范围大时可能较慢5.14which/whereis— 查找命令位置which ls # /usr/bin/ls whereis ls # 查找命令、源码、手册等相关文件六、管道|6.1 什么是管道管道|可以将左边命令的输出作为右边命令的输入实现命令的组合。命令1 | 命令2 | 命令3 ...6.2 管道示例示例1查看文件第500~510行head -n 510 log.txt | tail -n 10head -n 510取前510行tail -n 10取后10行 → 得到第501~510行示例2统计行数cat log.txt | wc -l # 统计 log.txt 的行数示例3组合多个命令head -n 510 log.txt | tail -n 10 | tac | wc -l取第501~510行 → 反向显示 → 统计行数输出106.3 管道的本质管道也是一个文件内存级文件左边命令向管道文件写入右边命令从管道文件读取实现流水线式的文本处理七、日志与文本处理7.1 什么是日志日志是程序运行时记录的信息用于排查错误追踪用户行为监控系统状态Linux 系统日志通常位于/var/log/目录下如/var/log/syslog。不同的系统有不同差异我的系统是Ubantu。7.2 日志中的时间戳日志通常带时间戳方便定位问题发生的时间段。例如将开始时间和结束时间转换为时间戳在日志中查找该区间内的记录7.3 常用日志查看方式# 查看最新日志实时跟踪 tail -f /var/log/syslog # 搜索包含 error 的行 grep error /var/log/syslog # 分页查看 less /var/log/syslog # 查看某段时间的日志需配合时间戳转换grep命令下节课详细讲解是文本搜索的利器。八、本节课指令清单指令作用常用选项echo打印字符串printf格式化打印cat查看文件内容-n显示行号tac反向查看文件内容mv移动/重命名文件或目录more分页查看仅向下less分页查看支持上下、搜索/搜索q退出head查看文件开头-n指定行数tail查看文件结尾-n指定行数-f实时跟踪date查看/设置时间%Y%m%d...格式化%s时间戳cal查看日历find查找文件-name按名称查找which查找命令位置whereis查找命令及手册位置九、本节课简单总结今天我们围绕 Linux 的核心设计哲学——一切皆文件展开了一系列深入的学习一切皆文件这是理解 Linux 的钥匙。键盘、显示器、终端、甚至管道在系统层面都被抽象成文件。正是因为这个设计我们才能用统一的文件操作接口去处理各种设备。重定向、、让我们可以灵活控制数据的流向把本应输出到屏幕的内容写入文件或从文件读取输入。这本质上对应了 C 语言中fopen的不同打开方式w、a、r。管道|管道让命令可以像流水线一样组合起来左边命令的输出变成右边命令的输入。这是 Linux 命令行小而美哲学的体现——每个命令只做一件事但组合起来可以完成复杂任务。文件类型Linux 通过ls -l第一列的第一个字符区分文件类型-普通文件、d目录、c字符设备、b块设备、l链接等。系统不依赖后缀但工具如 GCC可能依赖。文本查看工具链cat短文件、less分页搜索、head/tail头尾、more已过时配合管道可以做到指哪打哪的文本分析。时间与日志date获取时间时间戳date %s是计算机内部的时间表示方式从 1970-01-01 UTC 开始计数。日志是排查问题的关键时间戳让区间查找成为可能。重点提醒命令本身不需要死记硬背多用自然就记住了。真正重要的是理解一切皆文件的思想以及重定向、管道这些组合方式——它们才是 Linux 命令行的灵魂。

更多文章