公众号旧文
为什么学 Linux 最重要的不是敲命令?
你是不是在刚接触 Linux 时,也和之前的我一样,背命令?
网上的教程,也大多是《Linux 常用命令》、《运维必备命令大全》。
但当学了一段时间后。
我发现自己虽然会敲命令了,却还是不知道 Linux 到底是什么。
直到最近,我换了一个思路。
既然 Linux 号称万物皆文件。
那我为什么不直接从文件开始学?
于是我开始看 Linux 的各个目录。
终于意识到,之前学的那些命令只是工具。
Linux 真正的本体,是下面的这些文件。
一、Linux 像一座城市
Windows 里很多东西都被 GUI 藏起来了。
你知道有开始菜单,但你未必知道程序放在哪里。
而 Linux 不一样,Linux 像一座摊开的城市。
你一层层往下看,会发现整个操作系统,几乎都暴露在文件系统里。
比如:
/bin
这里放的是最基础的命令。
像:
ls
cp
rm
cat
本质上,你每敲一次命令,都只是执行了对应的一个文件。
二、配置文件真的就是文件
后来我又看到了:
/etc
这里几乎全是配置文件。
比如:
/etc/hosts
/etc/passwd
/etc/nginx/nginx.conf
我以前一直觉得系统配置应该是用的数据库,而 Linux 直接用文本文件。
甚至很多服务,本质上就是启动时读取配置文件,改配置,就是改文本。
三、最震撼的是 /proc
后来我又发现了一个特别的目录:
/proc
这里面居然有:
/proc/cpuinfo
/proc/meminfo
CPU 信息、内存信息,为什么会是文件?
原来这里很多东西,根本不在硬盘上。
而是 Linux 内核实时生成的。
也就是说,你看到的文件,是系统当前状态。
这一刻,我才真正理解万物皆文件并不是一句玩笑。
四、Linux 连硬件都能当文件
接着我又看到了:
/dev
这里更抽象。
里面全是:
/dev/sda
/dev/null
/dev/tty
Linux 甚至把硬盘、终端、键盘,都抽象成了文件。
比如:
/dev/sda
可能就是你的整个硬盘。
而:
/dev/null
则是著名的黑洞。
你往里面写什么,都会消失。
此时我突然意识到,Linux 的核心思想是:
把不同的东西,统一成文件这种接口。
五、我终于明白了为什么 Linux 这么自由
Linux 的很多神奇操作,都和这种设计有关。
比如程序正在运行时,你可以直接删除程序文件。
因为真正运行的,很多时候已经是内存里的进程。
磁盘上的文件,只是启动材料。
再比如很多日志,本质也只是文本文件:
/var/log
你可以:
cat
grep
tail
分析整个系统。
六、学 Linux 最重要的事情
可能不是先背命令,而是先建立地图感。
知道:
/bin放什么/etc放什么/proc是什么/dev是什么/var/log为什么重要
因为当你真正理解这些目录之后,很多命令会不学自通。
你会从此意识到 Linux 不是黑盒,而是把一切都摊开放在你面前的系统。