linux发展史
unix诞生
1965年时,贝尔实验室(Bell Labs)加入一项由通用电气(General Electric)和麻省理工学院(MIT)合作的项目;该项目要建立一套多使用者、多任务、多层次(multi-user、multi-task、multi-level)的MULTICS操作系统。直到1969年,因MULTICS项目的工作进度太慢,该项目就被停了下来。当时,Ken Thompson已经有一个称为"星际旅行"的程序在GE-635的机器上运行,但是反应非常的慢,正巧被他发现了一台被闲置的PDP-7(Digital的主机),Ken Thompson和Dennis Ritchie就将"星际旅行"的程序移植到PDP-7上。而这部PDP-7就此在整个计算机历史上留下了芳名
1973年,Ken Thompson(肯·汤姆森)和Dennis Ritchie(丹尼斯·里奇)发明了C语言之后,着手将UNIX程序用高阶的C语言改写,这个时候已经是第4版了(C的前身叫B,也是他们两个人发明的,为了改写UNIX,他们将B语言做了一番改进,而成了C语言)。这个划时代的动作让UNIX能够很轻易地被移植到各种不同的机器上。
unix为什么成功
健壮性
功能丰富
移植性
开放性
GNU
GNU是自由软件之父Richard Stallman在1984年组织开发的一个完全基于自由软件的软件体系,与此相应的有一分通用公共许可证(General Public License,简称GPL)。Linux以及与他有关的大量软件是在GPL的推动下开发和发布的。
自由软件之父 – Richard Stallman 像一个神态庄严的传教士一样喋喋不休地到处传播自由软件的福音,阐述他创
立GNU的梦想:“自由的思想,而不是免费的午餐”。这位自由软件的“顶级神甫”为自己的梦想付出了大半生的努
力,他不但自己创作了许多自由软件,如:GCC、和GDB,在他的倡导下,目前人们熟悉的一些软件如BIND、P
erl、Apache、TCP/IP等都成了自由软件的经典之作。
如果说Richard Stallman创立并推动了自由软件的发展,那么,Linus Torvalds毫不犹豫奉献给GNU的Linux,则把
自由软件的发展带入到一个全新的境界。
BSD
386BSD因为法律问题直到1992年还不能发布,NetBSD和FreeBSD是386BSD的后裔,比Linux早。Linus Tor
valds说,当时如果有自由的基于386的Unix-like操作系统,他就可能不会创造Linux。尽管无法预料这给以后的软
件业究竟造成了什么样的影响(如果没有这个法律纠纷,很有可能没有今天的革命性的Linux),但有一点可以肯
定,Linux更加丰富了这块土壤。
Minix
Minix是一种基于微内核架构的类Unix计算机操作系统,由Andrew S. Tanenbaum发明。Minix最初发布于1987
年,开放全部源代码给大学教学和研究工作。2000年重新改为BSD授权,成为自由和开放源码软件。
因为AT&T的政策改变,在Version 7 Unix推出之后,发布新的使用条款,将Unix源代码私有化,在大学中不再能
使用Unix源代码。教授为了能在课堂上教授学生操作系统运作的实务细节,决定在不使用任何AT&T的源代码前
提、下,自行开发与Unix兼容的操作系统,以避免版权上的争议。他以小型Unix(mini-Unix)之意,将它称为Minix。
Minix没有任何代码抄袭Unix,所以它们之间并没有任何继承关系,Minix作为当时有史以来的第一个开源的操作系
统放到网上以后,短期之内得到了飞速发展,大量的人进行下载学习。
由于Minix是教授一人所写,所以存在一些漏洞。这时候有使用者发现漏洞存在,想着去下载一些补丁或者自己写
一些补丁来修补这些漏洞,修补之后发现效果不错,然后就建议教授利用这些补丁完善下Minix,结果呢,教授比
较固执,意思是说:为了维持Minix的纯洁性,不需要任何外来代码。也就是说,根本不打算做商业发行,所以Mi
nux保持了其最原始的风范。
linux的由来
Linux是一套自由加开放源代码的类Unix操作系统,诞生于1991年10月5日(第一次正式向外公布),由芬兰
学生Linus Torvalds和后来陆续加入的众多爱好者共同开发完成。
Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软
件、应用程序和网络协议,可支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定
的多用户网络操作系统。
Linux存在着许多不同的版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如:手
机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且
使用GNU工程各种工具和数据库的操作系统
在后来的几年内,由于计算机硬件工业的强力运作,以Intel主导的x86系统架构的个人计算机大行其道,所以个人
计算机算是相当流行的一个机器了。但在此时,人们使用的大多还是DOS操作系统。此时,芬兰赫尔辛基大学有
个叫Linus Torvalds的学生做了件不寻常的事情。当时他正好有一台386的计算机,由于并不喜欢自己电脑上的DO
S系统,所以就想:既然Minix这么棒、这么稳定,那我何不将它移植到个人计算机 (好在由于Stallman提倡的Op
en Source理念,他得以接触到一些Source Code,而经由这样的一个想法,O(∩_∩)O~他就很有心的读取了Unix
核心,并且去除较为繁复的核心程序,将它改写成可以适用于一般个人计算机的x86系统上面)。
到了1991年,他终于将0.02版的原始码hobby放到网络上面供大家下载,由于hobby受到大家的肯定,相当多的朋
友一起投入这个工作中。终于在1994年,将第一个完整的核心Version 1.0释出,并且造成目前的大流行。。。由
于Linux kernel的发展是由虚拟团队所达成的,大家都是透过网络取得Linux的核心原始码,经由自己精心改造后再
回传给Linux社群,进而一步一步的发展完成完整的Linux系统,至于Linus Torvalds是这个集团中的发起者。由于
这个群策群力的缘故,Linus Torvalds将Linux定为同样造福大家的GNU授权模式!
Linux是Linus Torvalds受到Minix的影响而作成的。但在设计哲学上,Linux则和Minix大相迳庭。Minix在内核设计上
采用微内核的原则,但Linux则和原始的Unix相同都采用宏内核的概念。在Linux发展之初,双方还于1992年在新
闻组上有过一场精彩的理念争论。Minix的作者和支持者认为Linux的单内核构造是“向七十年代的大倒退”,而Linux
的支持者认为Minix本身没有实用性
linux的发行版
Redhat : Redhat,应称为Redhat系列,包括RHEL(Redhat Enterprise Linux,为收费版本)、Fedora Core(由Redhat桌面版本发展而来,免费)、CentOS(RHEL的社区克隆版本,免费)。Redhat可以说是在国内使用最多的Linux版本,甚至有人将Redhat等同于Linux。这个版本的特点就是使用人数多,资源多,而且网上的许多Linux教程也都以Redhat为例进行讲解。
Debian: 或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,也最遵循GNU规范。Debian分为三个分支: stable, testing和unstable。
Ubuntu: 严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以说Ubuntu是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。
Gentoo: Gentoo是Linux最年轻的发行版本,因此也吸取之前的发行版本的优点,这也是Gentoo被称为最完美的Linux发行版本的原因之一。Gentoo最初由DanielRobbins(FreeBSD的开发者之一)创建,由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美FreeBSD的广受美誉的ports系统——Portage包管理系统。不同于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软件而言比较慢,不过正因为所有软件都是在本地机器编译的,在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是所有Linux发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本
FreeBSD : FreeBSD并不是一个Linux系统,但FreeBSD与Linux支持的硬件环境比较一致,采用的软件也比较类似,用户也有许多重合。所以可以将FreeBSD视为一个Linux版本来比较。FreeBSD拥有两个分支:stable和current。其中,stable是稳定版,而current则是添加了新技术的测试版。
CentOS:虽然社区企业操作系统(Community ENTerprise Operating System)是Linux服务器最有名最常用的发行版,但是它的桌面版本还在继续不断完善中。
Elementary OS:其开发人员标榜Elementary OS是“Windows和OS X快速又开放的替代品”,这款漂亮精致基于Ubuntu LTS的桌面Linux发行版,第一版发行于2011年,目前发行的是第三个稳定版本(代号“Freya”)
openSUSE :既 可作为一个滚动发布,又可当作是一个独立的定期发布版本,openSUSE根据其开发人员的不同,是系统管理员、开发人员和桌面用户Linux发行版的选 择,无论你的经验水平处于哪种级别(受到初学者和极客们的一致好评)。最重要的是,著名又屡获殊荣的SUSE Linux Enterprise产品基于openSUSE
Linux Mint :Linux Mint的著名口号(“From freedom came elegance”),不只是说说而已。基于Ubuntu的Linux Mint,是一个稳定、功能强大、完整、易于使用的Linux发行版——我们还有很多很多的褒义词可以用来形容Mint
linux的哲学思
1、一切皆文件
2、单一目的的小程序
3、组合小程序完成复杂任务
4、文本文件保存配置信息
5、尽量避免跟用户交互
虚拟化
在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率
命令适用
ls用法:ls [选项]… [文件]…
-L, --dereference 当显示符号链接的文件信息时,显示符号链接所指示
-a, –all 不隐藏任何以. 开始的项目
cd 目录切换命令
pwd 显示当前目录
-L, --logical
显示当前目录
-P, --physical
显示当前目录的实际物理地址
--help 帮助
--version 版本
mv [选项]... [-T] 源文件 目标文件
--backup[=CONTROL] 为每个已存在的目标文件创建备份
-b 类似--backup 但不接受参数
-f, --force 覆盖前不询问
-i, --interactive 覆盖前询问
-n, --no-clobber 不覆盖已存在文件
如果您指定了-i、-f、-n 中的多个,仅最后一个生效。
--strip-trailing-slashes 去掉每个源文件参数尾部的斜线
-S, --suffix=SUFFIX 替换常用的备份文件后缀
-t, --target-directory=DIRECTORY 将所有参数指定的源文件或目录
移动至 指定目录
-T, --no-target-directory 将目标文件视作普通文件处理
-u, --update 只在源文件文件比目标文件新,或目标文件
不存在时才进行移动
-v, --verbose 详细显示进行的步骤
--help 显示此帮助信息并退出
--version 显示版本信息并退出
cp 用法:cp [选项]... [-T] 源文件 目标文件
长选项必须使用的参数对于短选项时也是必需使用的。
-a, --archive 等于-dR --preserve=all
--backup[=CONTROL 为每个已存在的目标文件创建备份
-b 类似--backup 但不接受参数
--copy-contents 在递归处理是复制特殊文件内容
-d 等于--no-dereference --preserve=links
-f, --force 如果目标文件无法打开则将其移除并重试(当 -n 选项
存在时则不需再选此项)
-i, --interactive 覆盖前询问(使前面的 -n 选项失效)
-H 跟随源文件中的命令行符号链接
-l, --link 链接文件而不复制
-L, --dereference 总是跟随符号链接
-n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
-P, --no-dereference 不跟随源文件中的符号链接
-p 等于--preserve=模式,所有权,时间戳
--preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果
可能保持附加属性:环境、链接、xattr 等
-c same as --preserve=context
--sno-preserve=属性列表 不保留指定的文件属性
--parents 复制前在目标目录创建来源文件路径中的所有目录
-R, -r, --recursive 递归复制目录及其子目录内的所有内容
--reflink[=WHEN] 控制克隆/CoW 副本。请查看下面的内如。
--remove-destination 尝试打开目标文件前先删除已存在的目的地
文件 (相对于 --force 选项)
--sparse=WHEN 控制创建稀疏文件的方式
--strip-trailing-slashes 删除参数中所有源文件/目录末端的斜杠
-s, --symbolic-link 只创建符号链接而不复制文件
-S, --suffix=后缀 自行指定备份文件的后缀
-t, --target-directory=目录 将所有参数指定的源文件/目录
复制至目标目录
-T, --no-target-directory 将目标目录视作普通文件
-u, --update copy only when the SOURCE file is newer
than the destination file or when the
destination file is missing
-v, --verbose explain what is being done
-x, --one-file-system stay on this file system
-Z, --context=CONTEXT set security context of copy to CONTEXT
--help 显示此帮助信息并退出
--version 显示版本信息并退出
wget 用法: wget [选项]... [URL]...
下载:
-t, --tries=NUMBER 设置重试次数为 NUMBER (0 代表无限制)。
--retry-connrefused 即使拒绝连接也是重试。
-O, --output-document=FILE 将文档写入 FILE。
-nc, --no-clobber skip downloads that would download to
existing files (overwriting them).
-c, --continue 断点续传下载文件。
--progress=TYPE 选择进度条类型。
-N, --timestamping 只获取比本地文件新的文件。
yum whatprovides 查看命令的工具包名称
yum install telnet tree htop 安装
systemctl restart NetworkManager.service 重启网卡服务
dhclient 命令使用动态主机配置协议动态的配置网络接口的网络参数
vi 文字编辑器
h :光标左移一个字符
l :光标右移一个字符
space:光标右移一个字符
Backspace:光标左移一个字符
k或Ctrl+p:光标上移一行
j或Ctrl+n :光标下移一行
Enter :光标下移一行
w或W :光标右移一个字至字首
b或B :光标左移一个字至字首
e或E :光标右移一个字至字尾
) :光标移至句尾
( :光标移至句首
}:光标移至段落开头
{:光标移至段落结尾
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾
su : 用法 su-用户名 【切换用户】
usradd :用法 useradd - 【帐 号 建 立 或 更 新 新 使 用 者 的 资 讯】
basename:(获取基名)用法:basename 名称 [后缀] 或:basename 选项
去掉前导的目录部分后打印“名称”。
如果指定的话,还会去掉尾随的“后缀”。
--help 显示此帮助信息并退出
--version 输出版本信息并退出
mkdir: 用法:mkdir [选项]... 目录...
-m, --mode=模式 设置权限模式(类似chmod),而不是rwxrwxrwx 减umask
-p, --parents 需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理
-v, --verbose 每次创建新目录都显示信息
-Z, --context=CTX 将每个创建的目录的SELinux 安全环境设置为CTX
--help 显示此帮助信息并退出
--version 显示版本信息并退出
uname:(查看内核版本号)
-a(显示所有信息)
-r(只显示内核版本号)
who: 用法:who [选项]... [ 文件 | 参数1 参数2 ]
-a, --all 等于-b -d --login -p -r -t -T -u 选项的组合
-b, --boot 上次系统启动时间
-d, --dead 显示已死的进程
-H, --heading 输出头部的标题列
--ips print ips instead of hostnames. with --lookup,
canonicalizes based on stored IP, if available,
rather than stored hostname
-l,--login 显示系统登录进程
--lookup 尝试通过 DNS 规范化主机名
-m 只针对和标准输入有直接交互的主机和用户
-p, --process 显示由 init 进程衍生的活动进程
-q, --count 列出所有已登录用户的登录名与用户数量
-r, --runlevel 显示当前的运行级别
-s, --short 只显示名称、线路和时间(默认)
-T, -w, --mesg 用+,- 或 ? 标注用户消息状态
-u, --users 列出已登录的用户
--message 等于-T
--writable 等于-T
--help 显示此帮助信息并退出
--version 显示版本信息并退出
whoami: 用法 whoani【选项】
--help 显示此帮助信息并退出 --version 输出版本信息并退出
tty : 用法 tty【选项】
-s, --silent, --quiet 什么也不显示,只返回退出状态值 --help 显示此帮助信息并退出 --version 显示版本信息并退出
原创文章,作者:mxl,如若转载,请注明出处:http://www.178linux.com/51691