一个关于Linux的故事

今天是生信星球陪你的第53天

你想找辆共享单车,发现满街都是别家车,没有一辆你能骑。

你想学点生信,搜了“初学者教程”,满眼尽是高大上,没有一句能看懂。

终于你跨越茫茫宇宙,来到生信星球,发现了初学者的新大陆!

Linux的发展历史:

这是一段很精彩的历史~ 豆豆搜集整理出来的

早期Unix,后来收费--> 荷兰教授Andrew: 仿照Unix,开发Minix(在欧洲教学)

--> 【芬兰赫尔辛基 Linus:Linux之父 】+ 【Stallman:倡导软件自由获取、修改、学习,创办GNU运动, (有意思的递归式缩写GNU is Not Unix),提出GPL协议(General Public License) 。研发了很多优秀产品:Emacs:文本编辑器; gcc: GNU C Complier C语言编译器】

--> Linux只是个内核,它本身不是应用程序。它的库(API)是glibc,一个C库。利用glibc和gcc能移植其他软件,比如bash

--> 完整的系统应被称作GNU/Linux,因为GNU提供了必备的软件 --> 无论linux还是GNU,他们都是源代码,使用C开发的程序

--> 要想运行起来,必须编译成二进制(0、1代码)

--> 自己操作很复杂,所以诞生了一些团队将源代码linux在通用平台上编译、打包成可直接执行的二进制程序

--> 1991年的SLS、1992年的德国研究人员开发的Debian (他妻子名字Deb开头,他的名字ian结尾,比较感人了)、1993年的redhat、还有德国的SUSE【他们都被称为发行商release】其实他们内核一样,软件一样,可能只是配置文件不一样,加入了自己的logo,调整的参数等等

--> 开始打包的发行本包括了2万多软件,有些臃肿,又不便于软件管理,所以想要寻求一款软件管理工具

--> Debian开发了dpt (debian package tools)的工具; redhat模仿Debian开发了rpm(redhat package manager)。这样就能实现软件查询、安装、升级、卸载、校验等功能

-->后来redhat虽然给了编译好的二进制版本,但是有些后期补丁不放出来,而且虽然不像微软赚版权费,但它赚服务费,交的钱越多,它帮你解决问题修复漏洞速度越快

--> 有组织看不下去,他叫CentOS (Community enterprise OS, 旨在社区共享、开放),除了不提供服务保障,其他和redhat都一样 ,算是redhat的二次发行版本

--> redhat主要针对企业,后来出来了针对个人的Fedora, 更新速度很快,基本每6个月就会更新,测试稳定后又引入redhat。Fedora其实就是为企业版提供测试开发的。

--> Debian没有专业公司维护,入门比较难用,适合高阶用户;redhat/ CentOS在国内、北美很流行;SUSE在欧洲较流行

--> 基于Debian也开发了二次发行版本Ubuntu,适用于PC机 --> 基于Ubuntu又开发了它的二次发行版Mint,界面更加好看

Linux发展版本:

Linux是内核,内核是有版本的。91年是0.1,94年是1.0,然后几个著名的版本2.0, 2.2, 2.4, 2.6,3.0, 最新的是4.17.2。

发行版本:例如Ubuntu 16.04.4 , CentOS 7。他们的核心都是linux 4.0+

Linux的哲学思想:

由目的单一的小程序组成;组合小程序完成复杂任务

一切皆文件

尽量避免和用户交互,中间不需要输入任何内容

配置文件 /etc 保存为纯文件格式

能简写绝不写全称

Linux登陆login:

切换用户:

半切换:使得切换完还保留root --> su (switch user)

完全切换:su -l user

退出切换: exit

换密码:passwd

用户管理的几个层级:

用户名:用户ID,可以被查找 【root用户创建新用户名:使用useradd 】

认证机制:Authentication,识别某个人就是它声称的那个人,比如密码

【前两个用于登陆】

授权:Authorization, 例如经理比普通员工享有某些特殊权限

审计:Audition (生成日志log)防止特权用户滥用权限

权限:

有九位,对应属主(u)、属组(g)、其他组(o)的权限

对于文件:

r: 可读,使用类似cat等命令查看文件内容

w:可写,可以编辑或删除

x:可执行,eXecutable,可在命令提示符下当作命令提交给内核运行

对于目录:

r:可对此目录进行 ls 操作列出内部所有文件

w:可以创建文件,但能否删除还要看具体文件

x:可使用cd切换进此目录,也可以 ls -l 查看内部文件详细信息

【默认一般文件不建议对外开执行权限,但目录可以】

Linux命令(Command):

命令提示符:prompt 登陆成功后显示的东西【#:root用户;$:普通用户

命令格式:命令选项参数

命令:shell传递给内核,并由内核判断该程序是否有执行权限,以及是否能执行,从什么时候开始执行。(任何一个程序想要执行,必须要有执行入口)

例如: ls 是命令, -a、-l是短选项

选项:( options,用来修改命令的执行方式)

短选项: -character,多个选项可以组合 ,可以写ls -l -a 或者 ls -la

长选项: --word,不能组合,要分开

参数:(arguments) 命令作用对象【!多个参数要用空格隔开】

命令类型

内置命令(shell builtin 内置)

外部命令:某个路径下有一个与命令名称相应的可执行文件

命令执行

魔数:magic number 用于标示二进制程序的执行格式

Windows和linux执行的魔数是不同的,所以说即使二者的C语言库一致,

linux上编译的程序也未必能在windows上运行。

比如,写脚本时第一行总要加上之类的

外部命令的快速执行需要环境变量

它是内存上划分出的一块空间,用于命名

用于定义当前用户的工作环境 就能看到当前的环境

环境变量包括什么?

PATH、HISTORY、SHELL等【注意都要大些】

查看时统一使用echo $

其中有个PATH分管程序:它是使用冒号分割的路径。

当执行程序时,会按次序从PATH下一个个去找,直到第一次找到为止。以后如果再次使用,就不再从头找,会把第一次找到的路径放进缓存直接调用。

【 就相当于bash自带的缓存,记录了登陆之后使用的所有命令路径,告诉你哪个 命令hits命中多少次

CACHE IS KING!缓存为王!hash因为有索引,比一般的路径搜索快了不止万倍】

初学生信,很荣幸带你迈出第一步。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180702G1PPZ300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券