今天是生信星球陪你的第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因为有索引,比一般的路径搜索快了不止万倍】
初学生信,很荣幸带你迈出第一步。
领取专属 10元无门槛券
私享最新 技术干货