有很多关于Linux的书籍,博客。大多数都会比较“粗暴“,让未入其门就路过了。
所以我想用一种更为平滑的学习方式, 就是在学习命令时,先用纯语言来介绍Linux背景和动机。就如同所有的的网络游戏都要先介绍游戏的历史观,然后再介绍游戏的操作。
大多数初学者在刚刚接触Linux都会有非常陌生的感觉。往往会有一些疑惑和问题。而我们就沿着这些问题,从远及近,从宏观到微观来理解Linux的简洁和美丽。
问题1: Winows有注册表,为什么Linux没有注册表?
注册表是Windows核心组件,对整个系统进行配置。Linux是以整个文件系统作为"注册表“,Windows注册表的树形结构,可以粗略的对应Linux文件系统的树形结构。
Linux的配置文件就相当于注册表的键,或者说Linux采用是的分布式的注册表。
那么Linux为什么要这样设计呢?因为Linux是所谓的网络操作系统,所以单台电脑不是Linux的界限,如果是多台电脑组成的系统,那么分布式的管理就有着巨大的优势。
例如:一个包含配置文件的磁盘的损害不会让整个系统瘫痪,而可能只是让部分功能失效。
问题2:Windows有完善的图形界面,而Linux为什么要学命令行。
首先,命令行绝对要比图形界面先进的多。命令行是程序员的第一界面,而图形界面是普通用户的第一界面。
也许很多人会有不同意见,其实我们再向前想一步,就很清楚了。
命令行的下一步演化是什么? 很简单就是语音控制,就是把人类自然语言转化为命令。
图形界面的的下一步演化是什么? 是姿势控制。从目前的Windows系统来说一共只有3种姿势, 单击,双击,拖放。而更先进的IPad有拨动,画圈等。
姿势控制很简单,便于用户上手,语音控制很复杂,但是控制精度很高。
作为程序员我们要求电脑完成的工作要比普通用户复杂的多,所以使用命令行会非常高效。
退一步讲,图形界面本质也是命令行,只不过将姿势翻译成命令执行而已。
程序员编程的代码也都是“命令行”,一条一条的指令而已。
总之,只要能打破对Linux命令行的恐惧感,接下来的事就会非常容易了。这个命令行绝对不是你简单想像中的命令行,它是非常智能化的。
问题3:Linux有那么多目录,那么多命令,怎么记得住呢?
首先,Linux目录是Linux系统最灵魂的东西,所有的硬件都可以被抽象为文件,从而实现网络化。(Internet只不过是Unix/Linux的进一步的演化而已)
所以只要掌握了Linux目录的规律,在理解的基础上记忆就可以容易的多。另外Linux的命令行有智能化功能,可以让你少打95%以上的字符来完成命令。
绝非你所想象的傻乎乎的敲一大堆命令,那些用Linux大牛都是绝顶聪明的人,怎么可能让自己辛苦呢?
问题4:Linux的文件夹结构看上去很复杂,怎么理解呢?
我们这里假设,我们就是设计者,如果我们设计一个文件系统,我们会如何去做呢?
我们需要一个起点, 这个起点就叫根目录,用“/”来表示,然后我们需要启动Linux,那么我们就会把所有核心的启动文件(包括Linux核心本身)都放到一个“/boot"目录下。
当系统启动后,我们需要执行一些基本命令在操作系统,这些命令都会放到“/bin"目录下。然后这些命令可能会用到一些库,这些库就被放到“/lib"下面,而这些库可能会会用到一些设备驱动文件,
那么这些驱动文件就会放到“/dev"目录下。
/:根目录
/boot:系统启动和内核
/bin :系统基本命令 (bin是binary的缩写)
/lib : 系统库(不能直接运行的代码)(lib是libary的缩写)
/dev : 设备驱动 (dev是device的缩写)
到目前为止只用5个目录,很简单吧。
问题5:什么是"/usr" ,"/etc"和“/var“
当用户启动系统以后,要做一些更加复杂的工作,这时候就会涉及到一个叫“/usr",这个情况稍微有些复杂,是一个难点。不过也很容易解释清楚。
早期的unix系统都有很多块硬盘,当时硬盘的容量都很小, 所以往往一个硬盘只放一个目录,比如“/boot"可以放在一个单独的"boot"盘上,上面提到的5个目录,是系统运行必不可少的。
而当系统启动以后,我们需要其他一些用于具体工作的程序时,我们就会加载一个“/usr"目录,上面放重要的运行程序。
容易引起疑惑的是"usr"这个名字, 在历史上,原来这个确实是user的缩写,不过现在和user没有任何关系了, 你可以把它看成是"universal software resource"的缩写。
这个“/usr"有点类似Windows里面的Program Files。
因此 /bin 和 /usr/bin的区别,就是 /bin里面的程序更加核心。
与其对未来充满迷茫,不如一门好技术改变人生活。只要你想,梦想就一定会实现。
免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
IT行业、互联网、开发语言(Java、前端HTML5、Python、UI/UE、云计算、自动化测试、大数据、人工智能、物联网、游戏开发、网络安全、GO语言、PHP)相关资讯,大连千锋会第一时间送到大家身边,也可以关注微信公众号【dalianqianfengjiaoyu】了解相关行业资讯。