目录
一、Linux操作系统发展历史
Unix
- 1965年之前,电脑只有军事或者学院的研究机构碰的起,当时大型主机至多能提供30台终端(30个键盘、显示器)的连接。
- 1965年左后由贝尔实验室、麻省理工学院 以及 通用电气共同发起了Multics项目,想让大型主机支持300台终端
- 1969年前后这个项目进度缓慢,资金短缺,贝尔实验室退出了研究
- 1969年从这个项目中退出的Ken Thompson当时在实验室无聊时,为了让一台空闲的电脑上能够运行“星际旅行”游行,在8月份左右趁着其妻子探亲的时间,用了1个月的时间编写出了 Unix操作系统的原型
- 1970年,美国贝尔实验室的 Ken Thompson,以 BCPL语言 为基础,设计出很简单且很接近硬件的 B语言(取BCPL的首字母),并且他用B语言写了第一个UNIX操作系统。
- 因为B语言的跨平台性较差,为了能够在其他的电脑上也能够运行这个非常棒的Unix操作系统,Dennis Ritchie和Ken Thompson 从B语言的基础上准备研究一个更好的语言
- 1972年,美国贝尔实验室的 Dennis Ritchie在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言
- 1973年初,C语言的主体完成。Thompson和Ritchie迫不及待地开始用它完全重写了现在大名鼎鼎的Unix操作系统
Minix
因为AT&T(通用电气)的政策改变,在Version 7 Unix推出之后,发布新的使用条款,将UNIX源代码私有化,在大学中不再能使用UNIX源代码。Andrew S. Tanenbaum(塔能鲍姆)教授为了能在课堂上教授学生操作系统运作的实务细节,决定在不使用任何AT&T的源代码前提下,自行开发与UNIX兼容的操作系统,以避免版权上的争议。他以小型UNIX(mini-UNIX)之意,将它称为MINIX。
Linux
因为Minix只是教学使用,因此功能并不强,因此Torvalds利用GNU的bash当做开发环境,gcc当做编译工具,编写了Linux内核-v0.02,但是一开始Linux并不能兼容Unix,即Unix上跑的应用程序不能在Linux上跑,即应用程序与内核之间的接口不一致,因为Unix是遵循POSIX规范的,因此Torvalds修改了Linux,并遵循POSIX(Portable Operating System Interface,他规范了应用程序与内核的接口规范); 一开始Linux只适用于386,后来经过全世界的网友的帮助,最终能够兼容多种硬件
二、Linux简介
Linux是什么
- Linux是一种自由和开放源码的类UNIX操作系统,1991年由林纳斯托瓦兹创建,主要受Minix和UNIX思想启发。
- Linux遵循GNU通用公共许可证(GPL),所有人都可以自由使用源代码,也可以自由修改并重新发布
- Linux是基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统
- Linux能运行主要的UNIX工具软件、应用程序和网络协议,继承了UNIX以网络为核心的设计思想。
Linux的版本
Linux内核版本
内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。
稳定版:具有工业级强度,可以广泛地应用和部署。新的稳定版相对于较旧的只是修正一些bug或加入一些新的驱动程序。
开发版:由于要试验各种解决方案,所以变化很快。
内核源码网址:http://www.kernel.org 所有来自全世界的对Linux源码的修改最终都会汇总到这个网站,由Linus领导的开源社区对其进行甄别和修改最终决定是否进入到Linux主线内核源码中。
Linux发行版本
Linux发行版 (也被叫做 GNU/Linux 发行版) 通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件。简单的来说就是将Linux内核和应用软件做封装
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
Linux应用领域?
从嵌入式设备到超级计算机、并到服务器领域确定了地位、通常服务器使用LAMP(Linux+Apache+Mysql+PHP)和LNMP(Linux+Nginx+Mysql+PHP)组合
目前,linux不仅在家庭中,企业中使用国家层面也在使用Linux
Linux注意事项
- linux严格区分大小写
- linux一切皆文件
- linux不靠扩展名区分文件类型
- linux所有存储设备都必须挂载后才能使用
- Windows程序不能直接在linux中使用
- linux文件默认使用\n换行(LF),window默认使用\r\n(CR LF),ios默认使用\r(CR)
三、Linux目录
系统目录
- /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
- /bin: /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
- /boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。
- /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。
- /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
- /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,表示当前用户的家目录,edu 表示用户 edu 的家目录。
- /lib: /usr/lib: /usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
- /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。
- /mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。
- /opt:给主机额外安装软件所摆放的目录。
- /proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
- /root:系统管理员root的家目录。
- /sbin: /usr/sbin: /usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。
- /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
- /srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。
- /usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录。
- /var:放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。
目录 | 作用 |
/bin | 存放系统命令的目录 |
/sbin | 存放系统命令的目录 |
/boot | 系统启动目录 |
/dev | 设备文件目录 |
/etc | 配置文件目录 |
/home | 普通用户家目录 |
/lib | 系统调用的函数库 |
/mnt | 挂载目录 |
/opt | 软件安装目录 |
/proc | 虚拟文件目录(进程、内核、外部设备状态、网络状态) |
/sys | 虚拟文件目录(内核相关) |
/root | root家目录 |
/tmp | 临时目录 |
/usr | 系统软件资源目录 |
/var | 动态数据保存目录(缓存、日志、软件允许文件) |
用户目录
位于/home/计算机名,称之为用户工作目录或家目录,表示方式:
/home/你的计算机名
~
从/目录开始描述的路径为绝对路径,如:
cd /home
ls /ls
从当前位置开始描述的路径为相对路径,如:
cd ../../
文件颜色
文件的颜色 | 含义 |
---|---|
蓝色 | 目录 |
绿色 | 可执行文件 |
红色 | 压缩文件 |
浅蓝色 | 链接文件 |
灰色 | 其他文件 |
四、Linux命令行基本操作
Linux命令格式:
command [-options] [parameter1] …
command: 命令名; [-options]:选项,可用来对命令进行控制,也可以省略,
[]代表可选
parameter1 …:传给命令的参数:可以是零个一个或多个
查看帮助文档
一般是linux命令自带的帮助信息
语法:
command --help
tab键自动补全
在敲出命令的前几个字母的同时,按下tab键,系统会自动帮我们补全命令(如果有多个命令,前几个字母相同,则会让我们选择某一个)
命令输入历史
命令:
history
当系统执行过一些命令后,可按上下键翻看以前的命令,history将执行过的命令列举出来
history保留了最近执行的命令记录,默认可以保留1000。
历史清单从0开始编号到最大值。
常见用法:
history N 显示最近N条命令
history -c 清除所有的历史记录
history -w xxx.txt 保存历史记录到文本xxx.txt
命令行中的ctrl组合键
- Ctrl+c 结束正在运行的程序
- Ctrl+d 结束输入或退出shell
- Ctrl+s 暂停屏幕输出【锁住终端】
- Ctrl+q 恢复屏幕输出【解锁终端】
- Ctrl+l 清屏,【是字母L的小写】等同于Clear
- 当前光标到行首:ctrl+a
- 当前光标到行尾:ctrl+e
- 删除当前光标到行首:ctrl+u
- 删除当前光标到行尾:ctrl+k
- Ctrl+y 在光标处粘贴剪切的内容
- Ctrl+r 查找历史命令【输入关键字,就能调出以前执行过的命令】
- Ctrl+t 调换光标所在处与其之前字符位置,并把光标移到下个字符
- Ctrl+x+u 撤销操作
- Ctrl+z 转入后台运行