[Linux系统篇】Linux入门指令详解(二)并认识“Linux万物皆文件”
忧郁兔斯基个人主页个人专栏《从零开始的C学习之旅》《C语言》《数据结构》《Linux学习》《优选算法》励志名言道阻且长行则将至个人介绍目录前言承上启下一、对上一篇文章的总体回顾1.1开篇为什么Linux要用命令行1.2 地基Linux文件系统与目录结构1.3 实战八个基础指令详解二、深入理解文件属性与类型2.1 文件类型标识详解2.2 隐藏文件与路径分隔符2.3 关于文件后缀名的“误区”与“真相”三、echo以及printf指令引出一切皆文件3.1 使用nano以及cat进行写入与读取3.2 echo以及printf直接在屏幕打印3.3 认识什么是“万物皆文件”3.4 重定向操作重要四、文件拷贝、移动与重命名补充mv —— 移动或改名五、文件内容查看五兄弟cat / more / less / head / tail1. cat —— 一次性输出全部内容2. more 和 less —— 分页查看3. head 和 tail —— 只看头尾六、文件查找三剑客find / which / whereis1. find —— 最强大的文件搜索补充通配符*2. which —— 查找命令所在路径3. whereis —— 查找命令的二进制、源码和手册七、文本搜索神器grep八、打包与压缩zip/unzip 和 tar1. zip / unzip —— 通用 ZIP 格式2. tar —— Linux 最核心的归档工具九、时间与日历date 和 cal1. date —— 显示或设置系统时间2. cal —— 显示日历十、其他实用小命令总结与下篇预告前言承上启下在系列第一篇中我们从文件系统结构出发详细介绍了pwd、ls、cd、touch、mkdir、rmdir/rm、man和cp这八个基础命令。相信大家已经能够在目录间自由穿梭并熟练地创建、删除文件和目录了。然而日常开发运维远不止于此。我们还需要查看文件内容、搜索文本、打包压缩、管理时间甚至要控制权限。本篇作为系列第二篇将基于PDF教材、实战笔记以及多篇技术博客综合呈现一份更全面、更接地气的Linux入门指令指南。此外本文将专门设立章节结合/dev/pts目录、设备文件等实例深入探讨Linux那句经典名言——“万物皆文件”。一、对上一篇文章的总体回顾上一篇文章链接【Linux系统篇】Linux入门基础指令(一-CSDN博客1.1开篇为什么Linux要用命令行回答了一个关键问题为什么Linux离不开命令行操作系统发展早期都是黑屏终端指令操作后来分化为两条路Windows走图形化界面面向大众Linux保留了命令行界面面向专业用户。服务器上的Linux几乎只有黑底白字的终端命令的本质就是可执行文件——这是理解Linux操作的第一步。1.2 地基Linux文件系统与目录结构在教命令之前文章花了较大篇幅讲解文件系统文件内容属性即使空文件也占磁盘空间学习Linux文件操作本质上就是操作文件的内容和属性。目录树结构Linux文件系统是一棵以/根目录为根的多叉树。重要目录速览/bin基本命令、/home用户家目录、/etc配置文件、/usr软件资源、/root超级用户家目录。路径绝对路径从根开始和相对路径从当前位置开始以及.和..的用法。1.3 实战八个基础指令详解命令功能核心要点pwd显示当前所在目录最简单的定位命令ls列出目录内容-l显示详细信息-a显示隐藏文件ll是ls -l的别名cd切换目录配合.当前和..上级使用touch新建文件或修改时间戳也可用stat查看文件时间信息mkdir创建目录-p选项可递归创建多级目录rmdir/rm删除目录/文件rm -r删除目录rm -f强制删除rm -rf威力巨大需谨慎man查看命令手册手册分9章可用man 章节号 命令精确定位cp复制文件或目录复制目录需加-r选项二、深入理解文件属性与类型当我们输入ls -l时输出的第一列字符究竟代表了什么ls -l命令会显示文件的详细信息每一列都有其特定含义。以一个典型的输出-rw-------. 1 root root 4434 May 30 13:58 ks.cfg为例位置内容含义第1列-rw-------.文件类型与权限第2列1硬链接次数第3列root文件所有者第4列root文件所属组第5列4434文件大小字节第6-8列May 30 13:58最后修改时间第9列ks.cfg文件名关于目录的链接数对于目录文件第二列的数字表示其第一级子目录的个数。这个值要减2才等于该目录下子目录的实际个数因为Linux中每个目录都自带.当前目录和..上级目录两个特殊目录项。2.1 文件类型标识详解标识符文件类型具体说明与典型示例-普通文件文本文件、可执行程序、库文件、图片、视频等。d目录文件相当于Windows中的文件夹如/home。c字符设备文件按顺序传输数据的设备。例如键盘、显示器、终端。数据具有顺序性先来后到。b块设备文件按块随机存取的设备。例如磁盘/dev/vda*、/dev/sda*。支持快速定位读写。l链接文件软链接符号链接类似于Windows的快捷方式。p管道文件用于进程间通信FIFO。s套接字文件用于网络通信。2.2 隐藏文件与路径分隔符隐藏文件在Linux中以.开头的文件默认是隐藏的。使用ls -a可以强制显示它们例如.bashrc、.gitignore。路径分隔符Linux使用/作为路径分隔符。路径中最开头的/代表根目录根目录是文件系统的起点。2.3 关于文件后缀名的“误区”与“真相”核心认知系统不关心后缀但工具关心。系统层面Linux内核并不靠后缀名来区分文件类型它靠的是文件头部的魔法数字。你可以将一个Shell脚本命名为test.txt只要赋予执行权限它依然能运行。工具层面虽然系统不关心但应用软件非常关心后缀。例如gcc编译器默认寻找.c文件vim根据.py后缀进行Python语法高亮。所以为了方便工具和用户识别我们强烈建议规范使用后缀名。三、echo以及printf指令引出一切皆文件3.1 使用nano以及cat进行写入与读取rootVM-0-15-ubuntu:~/linuxlearn/lesson2# tree . └── test.txt 0 directories, 1 file rootVM-0-15-ubuntu:~/linuxlearn/lesson2# nano test.txt rootVM-0-15-ubuntu:~/linuxlearn/lesson2# cat test.txt aaa bbb rootVM-0-15-ubuntu:~/linuxlearn/lesson2#nano可以对文件进行写入cat可以显示文件的内容。nano下载的指令yum install nano -y按ctrlx 而后按y 以及回车就可以退出nano3.2 echo以及printf直接在屏幕打印rootVM-0-15-ubuntu:~# echo aaabbb aaabbb rootVM-0-15-ubuntu:~# printf hello %s,hello %s\n linux C hello linux,hello C我们对比发现上一组指令是对文件进行读写操作而下一组指令是在终端进行写入在屏幕上直接输出了。在上一篇文章中我们提出万物皆文件下面我们在此基础上重新认识一下到底什么是“万物皆文件”。3.3 认识什么是“万物皆文件”一般有以下几个与我们操作强相关的文件我们说键盘显示器都是文件实际上这些文件在 /dev/pts/ 目录中,会被整合成某个文件以c开头的文件叫做字符文件在/dev/pts目录中其中的数字会随着终端的增加而增加程序启动时一般会默认打开下面的三个文件。理解参考我们使用C/C进行输入以及打印时是不是在显示器上打印这些操作本质上就是文件操作。而我们学过文件操作文件在被操作之前一定要被打开可是我们在Linux指向上面那些指令时好像并没有指向打开的操作啊其实系统会自己帮我们打开不需要我们手动打开。但是呢我空口无凭凭什么说系统就帮我们打开了?如何理解系统帮我们打开了1、以C语言为例C语言中打开文件的指令为fopen,那我们直接man fopen#include stdio.h FILE *fopen(const char *pathname, const char *mode);程序启动时默认会打开这三个文件对应的文件就是键盘、显示器、显示器extern FILE *stdin; extern FILE *stdout; extern FILE *stderr;2、不是说我们写完代码之后就所有都结束了我们写完代码之后编译器、操作系统也会帮我们操作的也可以理解成系统在调用我们的代码之前会给我们添加代码先打开这些文件。3.4 重定向操作重要在3.1以及3.2展示的功能中我们能否通过某些方法来改变这些指令的输入输出方向即将echo输入到文件中答案是可以的我们可以通过重定向操作来实现上述目的下面先进行展示rootVM-0-15-ubuntu:~/linuxlearn/lesson2# cat test.txt aaa bbb rootVM-0-15-ubuntu:~/linuxlearn/lesson2# echo hello linux test.txt rootVM-0-15-ubuntu:~/linuxlearn/lesson2# cat test.txt hello linux我们发现原本echo指令应该是将后面的字符串写入显示器文件中打印出来但是在上述指令中经过输出重定向操作我们将“hello linux写入了test.txt文件中而后使用cat展示。但是我们会发现原本test.txt中的内容是aaa/n bbb被替换成了”hello linux,所以以下是符号的规则以及拓展的用法 文件如果后续的文件不存在会新建该文件如果该文件是存在的会先清空文件中的内容再输入那我们可以开发出下面的两个用法1、利用第一条特性我们可以不使用touch命令来新建文件直接输入 不存在的文件名这样就会新建一个文件2、输入存在的文件名就会清空该文件的内容如果不想让前面的内容被覆盖那么就是使用符号这叫做追加重定向展示rootVM-0-15-ubuntu:~/linuxlearn/lesson2# cat test.txt hello linux rootVM-0-15-ubuntu:~/linuxlearn/lesson2# echo hello world test.txt rootVM-0-15-ubuntu:~/linuxlearn/lesson2# cat test.txt hello linux hello world如果我们使用cat时后面不加指定的文件名那么就会读取键盘文件中的内容即我们输入什么下一行就会输出什么 想要停止按ctrl crootVM-0-15-ubuntu:~/linuxlearn/lesson2# cat aa aa bb bb cc cc这时我们后续如果想让该指令实现显式指定文件的内容就需要使用输入cat 指定文件名 这叫做输入重定向这样看结果与cat文件名的结果是一样的但是实际执行的操作是不一样的后者是利用将文件中的内容重新输入到显示器中前者是调用命令行的指令是执行相关的程序。四、文件拷贝、移动与重命名补充上一篇已经介绍了cp复制这里补上mv移动/重命名。mv—— 移动或改名语法mv [选项] 源 目标如果目标是目录且目录存在则将源文件/目录移入该目录。如果目标是文件且源只有一个则相当于重命名。常用-i选项在覆盖前询问-f强制覆盖。$ touch myfile.txt $ mv myfile.txt yourfile.txt # 重命名 $ mv yourfile.txt ../temp/ # 移动到上级目录的 temp 下五、文件内容查看五兄弟cat / more / less / head / tail1.cat—— 一次性输出全部内容cat是最简单的查看命令适合查看小文件它会将文件所有内容一股脑打印到屏幕。cat [选项] 文件常用选项-n对所有输出行编号包括空行-b仅对非空行编号-s压缩连续空行为一行示例查看一个包含多行文本的文件并带行号。$ cat -n temp.txt 1 hello bite 2 hello bite 3 4 5 hello bite 小技巧cat也常用于快速创建小文件如cat file.txt然后输入内容按 CtrlD 结束。2.more和less—— 分页查看当文件很大比如日志时cat会刷屏此时用more或less更合适。more分页显示按空格翻页按 q 退出但不能向上翻。less功能更强大支持上下翻页PageUp/PageDown、搜索且不会预先加载整个文件打开大文件更快。less常用操作-i 忽略搜索时的大小写-N 显示每行的行号/字符串向下搜索“字符串”的功能字符串向上搜索“字符串”的功能n重复前⼀个搜索与 / 或 有关N反向重复前⼀个搜索与 / 或 有关q:quit示例查看一个 2000 行的文件并显示行号搜索关键词。$ less -N temp.txt 1 hello 0 2 hello 1 3 hello 2 ... /hello 100 # 向下搜索建议养成用less的习惯它才是 Linux 下真正的“正统”文本查看器。3.head和tail—— 只看头尾head默认显示文件前10 行可用-n指定行数。tail默认显示文件末尾10 行同样支持-n还有-f参数用于实时追踪日志更新。示例查看文件前 5 行、后 3 行以及动态监控日志。$ head -5 temp.txt hello 0 hello 1 hello 2 hello 3 hello 4 $ tail -3 temp.txt hello 1998 hello 1999 hello 2000 $ tail -f /var/log/syslog # 实时滚动输出经典组合查看文件中间某一段比如第 180~200 行——利用管道|连接head和tail。利用head tail 可以得到文件的指定或部分的开头以及结尾的内容如果想看中间部分的内容呢1、创建临时文件2、使用 |符号即管道实现指令的组合使用就不需要利用临时文件存储了$ head -200 temp.txt | tail -20 hello 180 hello 181 ... hello 199|符号的理解由于每个指令都会得到结果使用|可以使该结果通过管道流向下一个指令得以实现指令的组合六、文件查找三剑客find / which / whereis1.find—— 最强大的文件搜索find会在指定目录树中实时遍历查找功能强大但可能较慢。语法find [路径] [选项]常用选项-name 文件名按文件名匹配支持通配符-type f或-type d只查文件或只查目录示例在用户家目录下查找所有.c文件。$ find ~ -name *.c /home/whb/test_code/test.c /home/whb/project/main.c补充通配符**是一个通配符匹配当前目录下的所有文件2.which—— 查找命令所在路径which在PATH环境变量中搜索命令的位置。$ which ls /usr/bin/ls $ which pwd /usr/bin/pwd3.whereis—— 查找命令的二进制、源码和手册$ whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz七、文本搜索神器grepgrep用于在文件或标准输入中搜索匹配的行是日志分析、代码检索的必备工具。语法grep [选项] 搜索字符串 文件常用选项-i忽略大小写-n显示匹配行的行号-v反向匹配显示不包含该字符串的行-r递归搜索目录示例$ cat temp.txt abcd ABCD hello bite 1234 $ grep -i abcd temp.txt # 忽略大小写 abcd ABCD $ grep -vn abcd temp.txt # 反向且显示行号 3:hello 4:bite 5:1234八、打包与压缩zip/unzip和tar打包和压缩是什么打包将文件进行合并 压缩减少体积为什么打包防止文件丢失 压缩节省存储空间因为是网络传送可以有效减少网络传送时间查看zip 版本命令 zip --version下载命令apt install zipsz rz 实现windows以及liunx之间的文件传送下载命令apt install -y lrzsz1.zip/unzip—— 通用 ZIP 格式压缩目录需要加-r递归。解压到指定目录用-d。$ zip -r myarchive.zip mydir/ $ unzip myarchive.zip -d /tmp/2.tar—— Linux 最核心的归档工具语法tar 选项 xxx.tgz srcdir 把后者打包压缩成前者常用参数-c创建归档-x解归档-v显示过程verbose-f指定归档文件名必须紧接参数-z通过 gzip 压缩/解压-j通过 bzip2 压缩/解压-C解压到指定目录-t查看归档内容不实际解压tar czf xxx.tgz srcdir 压缩tar xzf xxx.tgz 解压如果要解压到指定文件那么需要在后面加上-C 路径示例# 打包并压缩 /etc 目录 $ tar -czvf etc.tar.gz /etc # 查看压缩包内容 $ tar -tzvf etc.tar.gz # 解压到 /tmp 下 $ tar -xzvf etc.tar.gz -C /tmp # 只解压出单个文件 $ tar -xzvf etc.tar.gz etc/passwd⚠️ 注意tar默认会去除绝对路径的根/这是安全机制不用担心。九、时间与日历date和cal1.date—— 显示或设置系统时间显示时间时支持自定义格式常用格式符%Y年、%m月、%d日、%H时、%M分、%S秒%F相当于%Y-%m-%d%X相当于%H:%M:%S示例$ date %Y/%m/%d-%H:%M:%S 2026/08/08-14:30:25 # 时间戳从1970-01-01开始的秒数 $ date %s 1723105825 # 将时间戳转为可读时间 $ date -d 1723105825 %F 2026-08-08小知识我的计算机已经关机了为什么开机之后他还能获取记录时间呢主板上有纽扣电池记录时间2.cal—— 显示日历cal显示当月日历。cal 2026显示全年。cal -3显示上、当、下三个月。十、其他实用小命令alias给命令起别名如alias llls -l方便日常使用。bc命令行计算器支持浮点运算。uname -r查看内核版本。Uname -a 查看Linux的系统信息 Uname -r 查看内核版本体系结构其实是芯片结构新老内核的问题企业一定不会用新内核新内核存在没有引爆的雷热键Tab命令/文件名自动补全CtrlC终止当前程序CtrlD退出终端EOFshutdown关机或重启shutdown -h now立即关机。总结与下篇预告本篇作为系列第二篇重点覆盖了文本查看与搜索cat/more/less/head/tail/grep查找与打包find/which/whereis/zip/tar时间管理date/cal权限基础与“万物皆文件”的哲学理解接下来的第三篇我们将全面展开Linux 权限管理chmod、chown、umask、粘滞位、sudo并深入讲解shell 运行原理和环境变量。学习 Linux 就像拼图每掌握一条命令你就离系统高手更近一步。如果本篇对你有帮助欢迎点赞、收藏、评论交流附常用命令速查表本篇新增命令功能cat查看小文件内容more/less分页查看大文件head/tail查看文件头/尾grep搜索文本find按条件查找文件which/whereis查找命令位置zip/unzipZIP 压缩/解压tar归档压缩最常用date/cal时间/日历alias自定义命令别名Happy Linuxing!