Linux 的架构
说起来 Shell 是什么
Shell 是 “ 用于与操作系统对话的接口 ”
是 控制命令等 的 “ 环境 ”
如果没有这个 Shell 即使登录 也不会显示任何东西 或者会返回到登录屏幕
也就是说 几乎什么都做不到 我认为 Shell 内核 和 终端 变得越来越难理解 这是一种关系
如下图所示:
命令
Linux 的哲学思想
一切皆文件 系统中所有的一切皆为文件【命令 硬件 设备 程序 网卡等 并且都可进行编辑】每个文件都有确定的用途
比如: 在 Linux中 有一个文件存放在 etc 目录下的 yum.repo.d 目录 名为:yum.repo
etc 目录:为系统配置文件存放的目录
yum.repo.d 目录是干什么的呢:为 Linux系统 Yum仓库配置文件存放的目录
yum.repo:为 Yum仓库的配置文件
Yum 是一个仓库的管理程序
Yum 源 相当于 Linux上的 应用商城
用于存放软件的程序
Linux 目录结构
FHS [ Filesystem Hierarchy Standard 文件系统层次结构标准 ]
定义了Linux的主要目录及目录内容和作用
一切目录及文件都由跟 [ / ] 开始
所有文件及目录都是存放在 根目录 下的
Linux 中目录是一个树状结构 如图:
/ 根目录
├── bin 存放普通的基本命令 > usr/bin
├── boot 存放引导程序文件 如kernel, grub 一般是单独分区
├── dev 存放设备和特殊文件
├── etc 系统配置文件
├── home 普通用户家目录
├── lib > usr/lib 存放32位程序的共享库文件 此目录是链接到 /usr/lib
├── lib64 > usr/lib64 存放64位程序的共享库文件 此目录是链接到 /usr/lib64
├── media 可移动媒体设备的挂载点
├── mnt 临时挂载点 (只读)
├── opt 用于存放安装附加软件包的路径
├── proc 虚拟文件系统 将内核与进程状态归档为文本文件(系统信息都存放这目录下)
├── root root用户的家目录
├── run 自最后一次启动以来运行中的系统的信息
├── sbin > usr/sbin 必要的系统二进制文件(命令) 该目录下的文件只有root用户可执行
├── srv 服务站点数据
├── sys 设备驱动文件节点
├── tmp 临时文件,重启后目录中的文件不会被保留
├── usr 默认软件存放目录
└── var 可变文件目录(文件内容不断变化) 如邮件 日志
[ root ] 超级用户 [ 权限最高 ] 默认家目录:/root
[ wan ] 普通用户 [ 权限较低 ] 默认家目录:/home/wan
什么是家目录 ?
ssh root@192.168.0.105
使用上述命令登录主机 登录成功后所处的目录即为家目录
也就是 ~ 波浪线也有等于用户家目录的意思
命令media 可移动媒体设备的挂载点
Linux 主机插入U盘 系统会自行将 U盘 挂载在 media 目录下
- pwd 显示当前路径 [ 显示的路径为绝对路径 ]- ls 列出路径下的文件和目录 后面不加路径 则默认列出当前路径下的文件或目录- ls -l 显示出文件或目录的属性- ls -a 显示所有目录和文件 [ 以.开头的文件或目录为隐藏文件或目录 ]- ls -R 递归显示 [ 可以查看到目录下的所有文件 ]- ll -h 以 K M G 单位形式显示文件大小
为何使用 ll 命令可以等同于使用 ls -l 呢
这个其实和设置 别名 alias 有关
vim ~/.bashrc
添加 alias la=‘ls -a’
source ~/.bashrc
之后 你也可以 只需执行 la 即可等同于使用 ls -a 命令 啦
- file 查看文件类型- file -b 列出辨别结果 不显示文件名
- cd 切换目录- cd ~ 切换至当前用户家目录- cd - 切换至上一次所在目录- cd .、切换至上一级目录
绝对路径与相对路径的区别
绝对路径:以 ’ / ’ 开始的路径称为绝对路径
相对路径:不以 ’ / ’ 开始 以当前路径作为参照
- mkdir 创建目录- mkdir -p 递归创建- mkdir -p /home/wangj/{111,222,333} [ 创建{}里的所有内容 ]
- cd /home- mkdir -p wangj/test{1,2,3}
Linux 中两种查看命令手册的方式
–helpman
- touch 创建文件- mv- mv file1 file2 [ 将 file1 改名为 file2]- mv file1 dir/ [ 将 file1 移动至 dir 目录]- mv dir1/ dir2/ [ 如果 dir2 已存在 则将 dir1 移动至 dir2 目录下 ]- [ 如果 dir2 不存在 则将 dir1 改名为 dir2 ]- cp- cp -r [ 递归复制 ]- cp -p [ 保留源文件相关属性{权限等} ]- cp -f [ 如果目标文件存在 则强制覆盖 ]- rm- rm -r 递归删除- rm -f 强制删除且不提醒- rm -i 提示是否删除
[ 通配符 ]* 任意长度的任意字符? 单个任意字符[] 集合范围内的任意单个字符 如:[0-9] [a-z]{} 展示{}中的内容[^] 不在集合范围内的单个字符 如:[^{1-5}] {除1-5不删 其他都删除} ---- 反选符
演示:
上述的单个创建方式也太累了!!
因此 如下:
这就非常方便啦!