从获取ip地址到unix哲学

我们以unix的继承者->Linux为主体,来说明unix哲学:

 

1. 机制(具体层面)和策略(抽象层面)分离。

Linux提供机制,策略由用户实现。以个人感觉而言,这条哲学似乎贯穿了整个unix哲学的全部。举个例子,比如现在想要查看ip地址。如果直接用

ifconfig

的话,只能打印出所有网络接口的所有信息。接着尝试ifconfig自带的功能,指定一个网络接口:

ifconfig wifi0

打印出了wifi所分配的ip地址!

而这时候的信息还是太多,我们只要一个ip地址,要怎么办呢?恰好此时Linux又提供了一大把文本处理命令:sed, grep, awk...对Linux稍有接触的同学应该已经猜到了,我们只需把ifconfig所输出的信息用管道重定向到sed中,一步一步裁剪成自己想要的样子,事情就这么成了!

仔细观察,包含有我们想要的ip的那行,是以inet开头的。现在要做的就是把这行给筛选出来。我们的操作仅仅是通过管道符|,把ifconfig的输出连接到grep命令的输入,至于具体连接过程我们就先不要管了,那是操作系统的事:

ifconfig wifi0 | grep "inet "

把想要的那一行抓出来了,最后一步就是把这个输出给洗干净,剩下一个ip地址就好。同样用管道再把输出导到输入:

ifconfig wifi0 | grep "inet " | sed 's/^.*addr://' | sed 's/ *Bcast.*$//'

Congratulation!通过Linux提供的工具的组合,成功地写出了一条属于自己的工具指令!

你看,Linux并不提供什么一下子就能直接查看ip的工具,而是把一大堆零件都摆在那,让你随意挑选,组装成自己趁手的模样,这就是机制(ifconfig, sed)与策略(想要查看ip地址)的分离。

有些同学可能会觉得sed指令太难懂了,改成其他自己趁手的命令可不可以?太可以了!这就是unix哲学所说的,策略和机制分离的好处。一种策略(比如获取ip地址),可能会有千万种方式来实现它(grep, sed, awk, 甚至直接使用ip addr替换ifconfig)。而Linux提供给你大量的工具,至于你想要怎么用,这些全都决定于你自己!

几乎大部分的unix哲学,目的都在于实现上述的这点。Linux里那些很有特色的概念:一切皆为文件,管道,重定向,makefile,脚本,文本化配置.....一切的一切,都是为了让策略与机制分离,把计算机的能力发挥到极致!

 

2. KISS原则:Keep It Simple and Stupid。

相当于Do one thing and do it well,专心做一件事并把它做到极致。其实这点在某种程度上,也相当于是上一条unix哲学的补充。每个人都把所有的精力放在实现一个很具体的工具上,不去想它到底会被用在做什么,只要知道把它该有的功能发挥到极限就好了。

比如上面所说的ifconfig命令,它的设计者就只需要考虑如何更好跟快更强(好像有点耳熟)地获取网络接口的相关信息就好了,至于这些信息会被怎么处理,就完全不用去管他了!用户可以像我们一样拿去查看ip,当然也可以查看ipv6地址,MAC地址,等等等等,想要做什么完全由用户来决定,你只需要做好你的本分的事就行了!

人的精力总是有限的,很难把每一件事都做到完美(当然不敢说真的有大神能做到。。。)。这一条设计哲学就是把人的精力集中放在某一件具体的事上并做到最好。某种程度上来说,这种方法论和现代社会很像:农民专门负责种粮食,工人负责施工建设,设计师管理建设,程序员写程序,科学家做前沿研究,政府管理社会的方方面面。而经济就像管道一样,把这些人的劳动成果(程序的输出)给串起来,形成一个有机的整体,把整体利益发挥到最大。要是每个人生活都是粮食自己种,房子自己盖,自己研究科学,过着与世隔绝的生活,得多累啊!

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值