第一讲
Linux 的起源、历史、特点、定义
起源
1991 年 Linus Torvalds 仿造 Minix 开发了与 UNIX 兼容的 Linux 操作系统内核。
历史
1991 年 10 月发布linux0.02 版本
1993 年发布linux0.99 版本
1994 年 3 月发布linux1.0 版本,遵循GPL 协议
1994 年加入GNU 组织
…
当前最新稳定内核版本为:6.3.4
https://www.kernel.org
特点
-
开放性(遵循标准)
-
多用户
-
多任务
-
良好的用户界面
-
设备独立性(把外部设备当作文件处理)
-
丰富的网络功能
-
可靠的系统安全
-
良好的可移植性
定义
什么是 linux?
是一个类 UNIX 内核的可以自由发布的实现版本,是一个操作系统的底层核心(内核)
Linux => 内核
Linux 系统 => 内核 + 工具 + 配套软件
GNU GPL
GNU GPL 全称是 GNU General Public License(自由文件许可)
GPL核心思想:
保证任何人有共享、修改、发布自由软件的自由
自由软件的衍生作品必须以 GPL 为重新发布的许可证
允许公司销售自由软件(硬件/服务),提供源代码
常见的发行版本
Linux 类型
- Linux 系统:内核 + 实用工具(专家才会用)
- Linux 发行版:内核 + 配套软件(普通用户也能使用)
常见的发行版本有:Centos、Ubuntu、Debian
软件提供方式
-
自由软件
- 源码公开
- 任何人都可以自由传播、下载、使用、改写、重新发布
- 自由软件不一定免费
- 举例:gcc、make
-
免费软件
- 免费
- 不一定公开源码。
- 举例:QQ、WeChat
-
商业软件
- 由开发者出售并提供技术服务
- 用户只有使用权
- 不提供源代码
- 举例:Photoshop
-
共享(试用)软件
- 用户在试用该程序拷贝一段时间之后,必须向开发者交纳使用费用,否则不能继续使用
- 不提供源代码
- 举例:VMware
第二讲
Linux 的安装方式、安装过程、远程连接方式
安装方式
- 虚拟机安装
- 云主机
虚拟机安装方式
- 好处
- 独立于原系统,可随时增删
- 与宿主之间文件共享
- 快照,随时恢复
- 共享网络
- 解决驱动问题
- 不足
- 对宿主机硬件设备要求较高
云主机安装方式
- 好处
- 动态扩容
- 有网就能访问
- 不足
- 付费
- 受限于网速
远程连接方式
- SSH 客户端
Linux 内核版本号
-
稳定版
内核的特性已经固定,代码运行稳定可靠,不再增加新的特性,要改进也只是修改代码中的错误。
-
2.6 及以下版本(x.y.zz)
- 次版本号=偶数 => 稳定版本
- 次版本号=奇数 => 测试版本
-
3.0 开始
次版本号不再表示一个内核是稳定版本还是测试版本,所有发布出来的正式版本都是稳定版本
目录结构
Windows 下一般分了 C、D、E、F 盘等
Linux 下没有分磁盘,在根路径下存在许多系统文件,它们都有特定的用途:
- bin:常用系统程序目录
- boot:开机设定目录,也是摆放核心 vmlinuz 的地方
- dev:系统设备装置文件目录
- etc:系统配置文件
- etc/rc.d/init.d:系统开机时载入服务的 scripts 的摆放地点
- home:系统使用者的目录
- lib:Linux 执行或编译程序函数库目录
- mnt:软驱与光驱接入挂载的地方
- proc:系统核心与执行程序的一些信息
- root:系统管理员目录
- usr/bin./bin:一般执行文件摆放的地方
- usr/sbin./sbin:系统管理员常用指令集
- var:系统日志文件
- lost+fount:系统不正常产生错误时遗失的片段
系统结构、主要组件构成
系统结构图:
主要组件:
关机/重启命令
命令 | 选项 | 含义 | 常用命令例子 |
---|---|---|---|
shutdown | -h | 关闭系统并停止电源 | shutdown -h now 关闭系统并立即停止电源 |
作用:关机 | -r | 关闭系统并重新启动 | shutdown -r +5 关闭系统并在 5 分钟后重新启动 |
-c | 取消之前的关机计划 | shutdown -c 取消之前的关机计划 | |
-k | 发送警告信息而不进行关机操作 | shutdown -k +10 发送警告信息并在 10 分钟后进行关机操作 | |
init | 0 | 关闭系统并停止电源 | init 0 关闭系统并停止电源 |
作用:切换运行模式 | 6 | 关闭系统并重新启动 | init 6 关闭系统并重新启动 |
3 | 进入多用户模式,允许多个用户登录使用 | init 3 进入多用户模式,允许多个用户登录使用 | |
5 | 进入图形化界面模式,允许用户登录使用图形化界面 | init 5 进入图形化界面模式,允许用户登录使用图形化界面 | |
halt | -p | 关闭系统并停止电源 | halt -p 关闭系统并停止电源 |
作用:关机 | -d | 不要在wtmp中记录 | halt -d 关闭系统,但不留下日记记录 |
reboot | -f | 强制重启,不进行正常的系统关机操作 | reboot -f 强制重启,不进行正常的系统关机操作 |
作用:重新启动 | -d | 不要在wtmp中记录 | reboot -d 重启系统,但不留下日记记录 |
系统说明文档查询
命令:man xxx(xxx为命令名)
- 回车 下一行
- 空格 下一页
- q 退出
例如:man ls
安装 man 命令:yum install -y man man-pages
第三讲
Linux交互方式
- shell
- 操作系统
- 图形界面
Shell的作用、种类
Shell 是一个作为实现虚拟终端的一种程序,它允许用户向操作系统输入需要执行的命令,返回执行结果。
种类
-
ash
贝尔实验室开发的Shell,bsh是对ash的符号链接
-
bash(GNU Linux操作系统上默认的 Shell)
是GNU的Bourne Again Shell。sh以及bash2都是对它的符号链接
-
tcsh
是Berkeley UNIX C Shell。csh是对它的符号链接
-
ksh
Korn Shell的语法与Bourne Shell相同,同时具备了C Shell的易用特点
-
zsh
Korn Shell 的一个增强版本,具备bash Shell的许多特点
Shell的功能
- Shell提示符(# $)
- 命令自动补全(tab键)
- 历史记录查看(键盘上下键)
- 输入输出重定向(> >> <)
- 管道(|)
常用快捷键:
-
ctrl + r
反向搜索命令历史记录
-
ctrl + a
ahead 移动光标到行首
-
ctrl + e
end 移动光标到行尾
-
ctrl + d
delete 删除光标所在字符
-
ctrl + u
光标所在位置剪切到行首
-
ctrl + k
光标所在位置剪切到行尾
-
ctrl + y
粘贴剪切板内容
重定向
-
输出重定向
文件不存在则创建,文件存在则覆盖
echo abc > list.txt
-
追加重定向
文件不存在则创建,文件存在则在末尾追加内容
echo abc >> list.txt
高级重定向
文件描述符有以下三种
- 0 标准输入
- 1 标准输出
- 2 错误输出
# 默认情况,将正常输出和错误输出都输出到屏幕
ls /usr/abc
# 通过重定向,改变标准输出的位置
ls /usr/abc > ok.txt
# 文件描述符 1 即为标准输出
ls /usr/abc 1> ok.txt
# 指定文件描述符 2 改变标准错误输出的位置
ls /usr/abc 2> err.txt
# 同时改变标准输出和标准错误输出的位置
ls /usr/abc 1> ok.txt 2> err.txt
管道
将第一个命令的输出传递给第二个命令
文件类型
-
普通文件(regular file):[-]
纯文字文件(ascii)或二进制文件(binary)
-
目录(directory):[d]
-
链接文件(link):[I]
-
设备文件(device):
- 块(block)设备文件:[b]
- 字符(character)设备文件:[c]
-
管道文件(Pipe):[p]
-
Socket文件(Socket):[s]
路径
相对路径
指从用户工作目录开始的路径
绝对路径
指从 根 开始的路径,也称为完全路径
~ 当前用户主目录
/ 根路径
目录
工作目录
用户某一时刻处在的目录,也成为当前目录
用户主目录
每个用户都有自己的目录。root用户在/root下,普通用户一般在/home下。
用户主目录可以用符号 ~ 表示
特殊目录
- . 代表该目录自己
- … 代表该目录的父目录
- 对于根目录,. 和 … 都代表其自己
常用命令
echo
作用:打印内容
格式:echo [-n] 字符串
-n 表示输出字符串的最后不换行
clear
作用:清空屏幕
格式:clear
ls
作用:显示指定工作目录下的内容
格式:ls [选项] <路径>
选项 | 作用 |
---|---|
-a | all,列出所有文件,包含隐藏文件 |
-l | long,长格式打印 |
-i | inode,列出 inode 节点的值 |
-t | time,按时间排序 |
-S | size,按文件大小排序 |
-d | directory,如果是目录,则只显示目录,不显示目录下的内容 |
-R | recursive,递归显示目录及子目录的内容 |
pwd
作用:显示当前路径
格式:pwd
cd
作用:切换路径
格式:cd <路径>
mkdir
作用:创建目录
格式:mkdir [选项] <目录>
-p 自动创建不存在的中间目录
例子:
# 自动创建中间不存在的目录
mkdir -p dir4/dir5
rmdir
作用:删除目录。(只能删除空目录)
格式:rmdir [选项] <目录>
-p 删除路径中的空目录
rm
作用:删除文件或目录
格式:rm [选项] <路径>
-r 递归删除子目录的内容
-f 强制删除不进行提示
touch
作用:用于改变文件的时间记录/创建一个空文件
格式:touch [选项] <文件>
-a 改变档案的读取时间记录
-m 改变档案的修改时间记录
-r 使用参考档的时间记录
-d 设定时间与日期,可以使用各种不同的格式
cat
作用:连接文件并打印到标准输出设备上
格式:cat [选项] <文件>
-n 给每行编号
-b 除了空白行,给每行编号
more
作用:分页显示文件内容
格式:more [选项] <文件>
+n 从第 n 行开始显示
-S 把连续的多行空行显示为一行
基本操作:
q:退出
空格:下一页
回车:下一行
less
作用:分页显示文件内容
格式:less [选项] <文件>
-e 当文件显示结束后,自动退出
-f 强迫打开特殊文件
-i 忽略搜索时的大小写
-N 显示每行的行号
-S 显示连续空行为一行
基本操作:
q:退出
空格:下一页
回车:下一行
上下移动键:上下移动
命令 | 区别 |
---|---|
less | 支持向前和向后翻页,可以搜索文本,支持多种操作和快捷键。less 按需加载,速度会比 more 快一些 |
more | 只支持向前翻页,无法向后翻页,只能使用空格键翻页,不能搜索文本。 |
head
作用:显示文件的开头的内容。默认情况下显示文件的前 10 行内容。
格式:head [选项] <文件>
-q 隐藏文件名
-v 显示文件名
-c<数目> 显示的字节数
-n<行数> 显示的行数
例子:
# 显示前 5 行内容
head -5 file
head -n 5 file
# 显示前 20 个字符的内容
head -c 20 file
tail
作用:显示文件的结尾的内容。默认情况下显示文件的最后 10 行内容。
格式:tail [选项] <文件>
-f 当文件发生变化时,输出文件新增内容
-c<数目> 显示的字符数
-n<行数> 显示的行数
-v 显示详细的处理信息
例子:
# 显示最后 5 行内容
tail -5 file
tail -n 5 file
# 显示最后 20 个字符的内容
tail -c 20 file
# 实时监控文件的内容
tail -f file
cp
作用:文件或目录的复制
格式:cp [选项] 原路径 目标路径
-a 复制目录时,保留连接、文件属性,并复制目录下的所有内容
-f 覆盖已存在的目标文件而不进行提示
-p 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中
-r 递归复制目录中的所有内容,包括子目录
mv
作用:移动文件或