常见Shell
CMD
PowerShell
bash
zsh
fish
/etc
Linux中所有配置文件,都在/etc
/etc/ 系统和应用的配置文件
/etc/shells : 默认shell列表
/etc/group : 用户组信息
/etc/passwd : 用户基本信息
/etc/shadow : 用户加密密码
/etc/hostname : 主机名
/etc/hosts : 本地域名解析
/etc/gpasswd : 用户组密码相关信息
/etc/sudoers : 能使用sudo命令的用户名
/etc/network : 网卡配置文件
/etc/os-release : 系统发行版本
/etc/profile : 系统全局环境变量配置
/etc/resolv.conf : DNS配置
/etc/nignx/ : Nignx配置
/etc/mysql/ : MySQL配置
...
域名解析
- 查看/etc/hosts文件,查看本地域名解析,找IP地址
- 联网询问DNS服务器www.baidu.com的IP地址
Shell执行命令的流程
- Shell解释器接收命令,解析命令
- 如果是内部命令,直接执行,外部命令继续
- Shell在PATH环境变量记录的路径中查找命令的可执行文件
- 程序调用Linux内核提供的底层接口,内核操作
- 程序将结果返回到终端
apt下载流程
- 解析命令,在本地软件源中,找到对应软件包
- 分析完整依赖链
- 电脑向Ubuntu官方服务器(默认)发送下载请求
(准确来说,电脑查看/etc/apt/source/list这个文件的下载地址,向这个地址发送请求) - 从服务器下载完整软件包+所有运行依赖
- 校验下载的安装包完整性
- 自动完成,解压,安装,配置
Linux操作系统(GNU/Linux)组成
(Linux一切皆文件)
Linux操作系统=Linux内核+Shell+应用程序+文件系统+驱动
- Linux内核 : 管理硬件(CPU,内存,硬盘,网卡,显卡...) 管理进程 管理中断 调用
- Shell : bash(最常用的Shell) fish zsh
- 文件系统 : 普通文件(txt conf log),目录,硬盘,进程信息,屏幕,打印机
- 驱动程序 : 内核和硬件之间的翻译官
- 应用程序 : Java Python Go 各种命令工具...
Linux目录结构
bash
/ # 根目录
/bin/ # 基本命令
/sbin/ # root专用命令
/boot/ # 系统启动文件
/etc/ # 配置文件
/home/ # 普通用户家目录
/root/ # root家目录
/lib/ # 库文件
/tmp/ # 临时文件,重启会清空
/var/log # 日志
/dev/ # 设备文件
/opt/ # 第三方大程序
/mnt/ # 挂在U盘
Linux变量
分为 :
环境变量 : 全局生效
本地变量 : 仅当前Shell生效
位置参数变量 : 仅脚本中生效,传递脚本参数
特殊状态变量 : 仅当前Shell会话生效
环境变量
- PATH : 外部命令可执行文件的目录
- HOME : 当前用户家目录位置
- SHELL : 当前用户默认Shell
- USER : 当前登录用户名
- UID : 当前用户UID
- GID :当前用户GID
- LANG : 系统语言/字符编码
- TERM : 终端类型
- PWD : 当前工作目录
- OLDPWD : 上一个工作目录
位置参数变量
$0 当前Shell名称/路径
$1
$2
特殊状态变量
$? 上一条命令执行成功or失败
档期那Shell/进程的PID $# 脚本参数的个数 $\* 脚本所有参数(整体) $@ 脚本所有参数(逐个) ## 正则表达式 明天专门写一集 ## 物质 原子(no)=原子核(+)+核外电子(-) 原子核(+)=质子(+)+中子(no) no表示不带电,-表示带负电,+表示带正电 ## 电流 自由电荷定向移动形成电流 (电流方向 : 负电荷定向移动的反方向) **导电本质** : 部分电子可以在外电场的驱动下脱离原子核的束缚,定向移动到正载,形成电流 所以导电依赖于自由电子 ## 白炽灯+二极管+晶体管+存储器 [链接](https://blog.csdn.net/lx541885/article/details/157618628) ## 类Unix 类Unix操作系统 : Linux MacOS (注意 : Windows是Windows NT内核,是非Unix操作系统) Linux和MacOS都是类Unix操作系统,**内核设计思想/终端命令规范/系统调用逻辑**高度一致 ## uname kernel name : 内核名字 kernel release : 内核发行版本(格式 : 主版本.次版本.修订版.定制后缀) operating system : 操作系统名字 machine architecture : 硬件架构 ## 内核发行版本\&\&系统发行版本 系统发行版本 : 基于内核封装的完整电脑系统,由发行商维护 内核发行版本 : 这个系统的核心发行版本,由Linux内核社区维护 ## 用户登录时操作 * 系统级登录配置文件 : /etc/.profile * 用户级登录配置文件 : \~/.{Shell名}profile * 用户级个性化配置文件 : \~/{Shell名}rc