VmWare 网络编辑器
编辑--->虚拟网络编辑
VMnet0 桥接模式
VMnet1 host-only
VMnet8 NAT 网络地址转换
修改VMnet8
子网IP修改后,同步修改NAT设置和DHCP设置
Centos6.8
vi /etc/sysconfig/network-scripts/ifcfg-eth0
光标移动到 ONBOOT行: ONBOOT=yes
编辑文件:点击键盘字母i
退出编辑:点击键盘ESC键
保存文件: shift+: 输入 wq 敲击enter键
service network start/restart
ip a
书籍:
计算机网络
操作系统原理
计算机组成原理
数据库原理
数据结构与算法
作业:
1、思维导图,知识点总结
2、注册一个博客地址,csdn上注册。 面试的简历可以附上
上课时间:
周末两天,周内安排3天晚上。
Linux基础入门
计算机基础知识
计算机组成:
冯诺依曼体系
五大部件
输入:向计算机输入各种指令,程序,数据
输出设备:显示
CPU:
控制器:控制计算机部件
运算器:对数据加工处理,±*/
存储器:存储和记忆数据
计算机组成原理
CPU:
精简指令集:
复杂指令集:
计算机可以处理的计算单位:
二进制:
0:
1:
bit
byte:
1byte=8bit
K
M
G
T
P
二进制 1024
十进制 1000
500G=480G
进制转换:
十进制转换为二进制: 除2取余法
二进制,八进制,十六进制
内存:
内存结构
0 1
直接寻址技术:
2^32=2*2*2^10*2^10*2^10=4*1024*1024*1024=4G
2^64=2^34G
操作系统发展史:
手工操作
批处理系统
多道程序
分时系统
实时系统
Linux系统发展史
Unix
1969--multics-----unics
1973--unix
1984 -GNU- 自由开放 unix
minix
1991 0.1 linux
Linux版本
内核:
主版本.次版本.释出版本.修改版本
2.X系列内核:
奇偶版本之分
次版本是奇数:发展中版本 development
次版本是偶数:稳定版
2.6.32-642.el6.x86_64
3.X系列,不分主次版本
3.10.0-957.el7.x86_64
长期维护版本:
Linux发行版本
RedHat Linux
Centos Linux
Debian
Fedora:
ubauntu:
gentoo
SUSE
开源:
自由 免费 公开
Linux GNU/linux
GPL 协议: GUN通用公共许可协议 GUN general public license
源代码开源,免费,衍生代码开源和免费
LGPL:GPL的类库的开源协议: 开源源代码可以被商业销售
BSD:自由使用修改源代码:可以开源或者专有在发布:
如果发布的产品包含源代码:则源代码必须带有原来代码的BSD协议
如果发的是类库,类库的版权中也需要包含BSD协议
可以商业化,但是不能用源开源代码的作者和机构来推广
GNU计划:
GNU/linux
Linux入门:
Linux bash初识:
mobaxterm xshell secureCRT
Shell环境:系统的用户界面,提供用户与内核的交互操作接口,
shell:命令解释器:解释由用户输入的命令并且把它送到内核
文件管理
用户管理
权限管理
磁盘管理
软件管理
网络管理
安全管理
。。。
终端设备
虚拟终端: 6个 tty
CTRL+ALT+F[1-6]
图形终端:1个
Centos6
CTRL+ALT+F7
centos7
在那个终端上启动,位于那个虚拟终端
伪终端:
串行终端:ttys
命令行和命令提示符:
CentOS release 6.8 (Final)
显示当前Linux发行版本名称(CentOS)与版本号(6.8)
Kernel 2.6.32-642.e16.x86_64 on an x86_64
显示liux内核,并且显示运行在x86_64架构上
nebulalinux03 login:root
主机名登录 root用户登录
[root@nebulalinux05 ~]#
[nebula@nebulalinux05 ~]$
#:root用户提示符
$:普通用户提示符
[]:最左边root/nebula代表的是当前登录用户,@nebulalinux05代表的是主机名,~代表的当前所在目录
#,$命令提示符
[nebula@nebulalinux05 ~]$ echo $PS1
[\u@\h \W]\$
命令语法结构:
[nebula@nebulalinux05 ~]$ ls -l /etc/
commond [-option] paramenter1 parementer2
命令 选项 参数 之间是用空格分隔
commond:命令名称或者是可执行文件
[-option]:选项:不一定存在,影响命令执行结果
-:短选项
--:长选项
paramenter1 parementer2:参数,命令作用的对象
commond:
发起一个命令:请求内核将二进制程序文件运行成为一个进程,
程序--->进程
静态---->动态 生命周期
命令:可执行的文件,二进制格式的可执行文件
存放:/bin,/sbin,/usr/bin /usr/sbin
注意:并不是所有的命令都对应一个二进制可执行文件
linux文件系统
/boot
/
swap
哲学思想:
一切皆文件
几乎所有的系统资源统统抽象为文件形式, 硬件设备 接口
功能实现:单一的程序组成,组合小程序完成复杂任务
避免人机交互:编程,最简单的编程方式
配置信息使用文本保存
起始节点:/ 倒置的树状结构
目录:路径映射
文件:存储数据:在存储空间上一段流式数据,对数据可以做到按名存取
文件系统:由目录映射出来的各种各样的路径结构,按照这样的映射机制组成的结构模型就是文件系统
层级结构,有索引
/etc/sysconfig/network-scripts/ifcfg-eth0
最左侧:/:表示的是根目录
其他/:表示的是路径分割符
linux上分割符/
windows:\
文件的路径表示:
[root@nebula ~]#vi /etc/sysconfig/network-scripts/ifcfg-eth0
[root@nebula network-scripts]#vi ifcfg-eth0
绝对路径:从根开始表示的路径
相对路径:从当前位置开始表示的路径
问题:在文件查找中 绝对路径快还是相对路径快?
作业:
1、安装centos6.8虚拟机,安装Centos8.1(从镜像网站去下载,去下载minimal dvd1)
实现ssh工具的连接访问
2、预习命令帮助
3、整理一下:GPL,LGPL,BSD,APACHE 协议
4、安装ubuntu
.conf ifcfg-eth0
文件名使用法则:
严格区分字符大小写:file1 File1 FILE1
目录也是文件:同一个路径下,两个文件名不能相同
支持除过/以外任意字符
最长不能超过255个字符
用户家目录:home
用户的起始目录:
root用户:
普通用户:管理用户文件的位置,所有的操作都只能在家目录进行或者是临时目录
工作目录:
用户登录之后,某时某刻所处的目录
/etc/sysconfig/network-scripts/ifcfg-eth0
basename:基名:最右侧的文件或者目录名
dirname:取到路径:basename左侧的路径
# basename /path/to/somefile
somefile
# dirname /path/to/somefile
/path/to/
Linux系统常见文件类型
- :常规文件:file
d:directory 目录文件
b:block device:块设备文件
c:字符设备文件
l:符号链接文件
p:管道文件
s:socket:套接字文件
获取命令帮助:
命令格式规范:
linux:ELF
Windows:exe,msi
分类:
内部命令:没有存储位置的命令,shell自带
外部命令:linux系统中有存储位置的命令,与之对应的二进制可执行文件。
type:判断一个命令是内部命令还是外部命令
shell如何解析命令:
# ls -lh /etc
commond:ls
option:-lh
paramenter...:/etc
环境变量:
PATH:从哪些路径中去查找用户键入的命令字符串所对应的命令二进制文件
[root@nebula ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
查找次序:自左向右依次查找。
1、help:内部命令的帮助文档
cd: cd [-L|-P] [dir]
help commond
2、--help:
提供大部分外部命令的帮助文档,简单的文档
3、man命令
NAME:命令名称-功能说明
SYNOPSIS:用法说明,包括可用的选项
[]:可选内容
<>:必须要提供的
|:多选一
......:同类型内容可以出现多个
DESCRIPTION:命令功能详细说明,每一个选项的含义
OPTION:选项含义
FILES:命令配置文件
BUGS:提交bug的方法
EXAMPLES:示例
SEE ALSO:参照
使用方法:
翻屏:
空格键:向文件尾部翻一屏
b:向文件首部翻一屏
CTRL+D:向文件尾部翻半屏
CTRL+U:向文件首部翻半屏
回车键:向文件尾部翻一行
k:向文件首部翻一行
G:跳转最后一行
1G:跳转至首部
#G:向文件尾部翻#行
搜索:
/keyword:从文件的首部向尾部依次查找,不区分大小写
?keyword:从文件的尾部向首部依次查找,不区分大小写
n:与查找命令方向相同
N:与查找命令方向相反
[root@nebula /]# cd /etc/yum.repos.d/
[root@nebula yum.repos.d]# mkdir bak
[root@nebula yum.repos.d]# mv Cen* bak
[root@nebula yum.repos.d]# vi yum.repo
[CentOS6.8]
name=CentOS6.8
baseurl=file:///media
gpgcheck=0
enabled=1
[root@nebula yum.repos.d]# mount /dev/sr0 /media/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@nebula yum.repos.d]# yum clean all
[root@nebula yum.repos.d]# yum makecache
[root@nebula yum.repos.d]# yum install man -y
man手册:
1:用户的指令
2、系统帮助文档
3、程序库文件
4、设备文件文档
5、文件系统
6、游戏帮助文档
7、杂类
8、系统指令
9、内核指令
4、info命令
在线帮助文档,提供详细帮助信息,与man命令类似
5、网络,百度,谷歌
6、官方手册
作业:
1、useradd
passwd
tail
head
2、安装CentOS6.8,CentOS67.6,并且配置一下yum.repo,确保SSH工具可以连接
3、总结一下我们的命令帮助,文件系统,命令分类、语法格式、解析过程
Linux文本编辑工具:
vi编辑器
vi/vim:
vim编辑器模式及模式转换
命令模式
输入模式 末行模式
命令模式---->输入模式:
插入:
i:从光标的位置前面开始插入,并且光标随着插入内容向后移动
I:从光标所在行的第一个非空白字符前面开始插入
新增:
a:从光标所在位置后面开始新增,光标随着插入内容向后移动
A:从光标坐在行最后的地方开始新增
开始
o:从光标所在行的下一列新增一行进入输入模式
O:从光标所在行的上方新增一行并进入输入模式。
输入模式---->命令模式:
ESC
命令模式:
光标移动:上下左右键
翻页:Page Down 或者 Ctrl+F 向下翻一页
Page UP 或者 Ctrl+B 向上翻一页
行内跳转:
^或者数字0 Home 跳转至行首
$或者 End 跳转至行尾
行间跳转:
1G,gg 跳转至文件首行
G 跳转至文件末行
#G 跳转至文件的第#行
命令模式---->末行模式:
shift+: :
末行模式---->命令模式:
ESC
末行模式:
保存: w
退出:
q 未做修改退出
q! 放弃对内容的修改退出
保存并退出:
wqLinux系统管理
linux bash基础特性
1、补全:
系统支持的shell: # cat /etc/shells
当前系统默认shell:# echo $SHELL
命令补全:
给定的打头的字符串如果在系统中能够唯一的标识某一个命令程序文件,按一下tab键,直接补全
如果不能够唯一标识,则需要再次敲击tab键,会给出命令列表
命令解析
路径补全:和命令补全机制不同
在给定的起始路径下:以对应路径下打头的字符串来逐一匹配起始路径下的每一个文件
tab:
如果能够唯一标识,则直接补全
否则,再一次敲击tab键,给出列表
文件系统机制
2、快捷键
Ctrl+c 终止前台运行的程序
Ctrl+d 退出,exit logout
Ctrl+l 清屏
Ctrl+a 光标移动到命令行的最前端
Ctrl+e 光标移动到命令行的最后端
Ctrl+u 删除光标前所有的字符
Ctrl+k 删除光标后所有的字符
Ctrl+r 搜索命令历史
3、命令历史
history
HISTSIZE:shell进程中可以保留的命令历史的条数, ehco $HISTSIZE
HISTFILE:持久保持命令历史的文件
HISTFILESIZE:命令历史文件大小
history:
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
-c:清空命令历史
-d offset:删除指定的命令历史
-r:从文件中读取命令历史到命令历史列表中 .bash_history--->内存
-w:把命令历史列表中的命令追加到命令历史文件中 .bash_history<---内存
history #:显示最近的#条命令
!#:执行命令历史列表中第#条命令
!!:执行上一条命令
!STRING:再一次执行命令历史列表中最近一个以STRING开头的命令
调用上条命令的最后一个参数
ESC . ESC键+点号
!$
4、命令别名
# alias name='commond' 定义别名
注意:仅对当前shell环境有效
# unalias name 撤销别名
永久保存别名
# vi /etc/bashrc
alias name='commond'
回顾:
bash shell的特性
补全机制:
命令补全 shell解析命令 PATH
路径补全 文件系统
tab
快捷键:Ctrl C D L A E U K R
命令历史
history -r -d -w -c
!! !# !sting
ESC+. !$
变量:PS1 PATH HISTSIZE HISEFILE HISTFILESIZE
HISTCONTROL
ignoredups:忽略重复的命令
ignorespace:忽略以空白开头的命令
ignoreboth:以上两者同时生效
HISTCONTROL=' '
alias 命令别名
5、变量
本地变量:当前shell环境生效当前shell进程中某一个代码段,通常指某一个函数
局部变量:当前的shell进程生效,其他shell包括子shell均不生效
环境变量:当前shell进程以及子进程
echo $NAME
6、特殊的符号
|:管道 p 将前一个命令的执行结果当作后一个命令的输入
进程管道:当前程序运行中执行
tee:
. 点号 当前目录
.. 双点号 上一级目录
; 分号 分割命令 linux在执行多条命令时。可以用分号分开,顺序的去独立执行各条命令,每条命令不关心是否失败,所有命令都执行
``:反单引号,命令替换
'':单引号,强引用,不做变量的替换
"":双引号,弱引用,可以实现变量和命令的替换
{}:做扩展,或者在shell脚本中构建代码块
*:表示通配
7、输入输出重定向:
linux系统三种IO设备
标准输入 STDIN-----0 默认来自于键盘的输入
标准输出 STDOUT----1 默认输出到终端窗口
标准错误 STDERR----2 默认输出到终端窗口
重定向:
输入重定向 ------不太用
输出重定向:使用户将一个命令的执行结果输出重定向到一个文件中,而不是显示到屏幕上
1>:覆盖
1>>:追加
错误重定向:
2>
2>>
正确和错误都重定向到同一个位置:2>&1 &>
ls /tmp/file /tmp/file1 > test 2>&1
/dev/null:数据黑洞
/dev/zero:吐0机
回顾:
补全,快捷键,命令历史,命令别名,变量,特殊符号,输入输出重定向
8、命令行通配符:
*:匹配任意长度的任意字符
?:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
[^abcdefg]
[a-z],[A-Z],[0-9],[a-z0-9]
[[:upper:]]:所有的大写字母
[[:lower:]]:所有的小写字母
[[:alpha:]]:匹配所有的字母
[[:digit:]]:所有的数字
[[:alnum:]]:字母和数字
[[:space:]]:空白字符
[[:punct:]]:标点符号
[^[:upper:]]:
练习:
1、列出 /etc下,所有的以n、l开头的,并且以非数字结尾的文件
2、列出/var目录下,以一个小写字母开头,一个小写字母结尾,中间出现任意一位任意字符的文件
常见的系统管理类命令:
ls:
ls [OPTION]... [FILE]...
-a:显示所有文件包括隐藏文件
-A:显示所有文件包括隐藏文件但除过.和..
-c:以ctime排序,-lt一起使用
-l:以长数据格式显示文件属性以及权限等信息
-t:以修改时间排序
-d:列出目录本身,而不是目录中的内容
-i:列出文件的inode号 一般和-l一起使用
-h:将文件的大小以kB MB GB格式显示
pwd:显示当前工作目录 绝对路径
-L:显示当前的路径,不管有没有链接文件,不加选项时就是以此显示
-P:显示当前路径,如果有链接文件,直接显示链接文件指向的文件
cd:改变工作目录
~:用户家目录
-:表示前一个工作目录
..:上级目录
.:当前目录
date:显示或者修改系统时间和日期
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
-d "string":字符串所指的日期和时间,并不代表当前时间 not now
-s "string":根据字符串来设置日期和时间
日期的设置需要加上时间的设置,否则会将时间重置为00:00:00
FORMAT:
passwd:设置用户口令
只有root用户有权限使用
-k:到期后密码仍然可以使用
-l:lock,锁定用户密码,只有root有权限操作
-u:unlock,解除锁定
-f:强制操作:只有root有权限
-n days :两次密码修改的最小天数
-x days:两次密码修改的做大天数
--stdin:密码从标准输入获取密码,非交互式设置密码使用
# echo 123456 | passwd --stdin root
-w days:距离多少天提醒用户修改密码
-S:查询密码状态
-i days:密码过期后 多少天之后,用户被禁用
su : 改变用户身份
su - username
-c commond: 变更用户为 user的使用者,执行commomd命令,再变回原来使用者
-:用户的环境变量切换
clear:清理
Ctrl+l
回顾:
clock hwclock
-w:以系统时间为准
-s:以硬件时钟为准
who:当前用户登录信息
w:当前用户登录信息
last:
过去登录系统的用户的相关信息:
-a:
-d:将IP地址转换为主机名称
uname:-a
uptime:
load average: 0.00, 0.01, 0.05 1分钟 5分钟 15分钟
系统平均负载 :在特定的时间间隔内运行在队列中的平均进程数
1cpu中进程数不大于3个
dmesg:
开机信息:
free:显示当前系统内存状态
-b
-k
-m
-g
-s 间隔秒数:
-t total
ps:显示系统进程瞬间运行状态
-l:像是详细信息
-aux:当前以用户为主的所有进程状态
user:用户,代表进程属于哪个用户
PID:进程ID
%CPU:用掉的cpu百分比
%mem
top:动态监控系统处理器状态
top - 00:41:06 up 5:40, 2 users, load average: 0.00, 0.03, 0.05
Tasks: 114 total, 1 running, 113 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1004136k total, 204836k used, 799300k free, 18096k buffers
Swap: 2097148k total, 0k used, 2097148k free, 48888k cached
PID:进程ID
user:进程的拥有者
PR:进程优先级
NI:nice值, 负数表示优先级最高
VIRT:进程使用虚拟内存总量
REX:进程正在使用,未被换出的物理内存大小
SHR:共享内存大小
S:进程状态: R:runing S:sleeping T:stop Z:zombie D:不可中断
%CPU:从上次刷新到目前使用的cpu时间占比
%MEM:进程使用的物理内存百分比
TIME+:进程使用cpu的时间 单位1%秒
COMMAND:进程名称
Linux文件系统层级结构 FHS :定义Linux系统中主要的目录以及目录中存放的内容
linux系统以单根的方式组织文件
/
bin: 命令,所用用户在单用户模式下必须具备的二进制命令文件,vi mv mount
dev: /dev/null /dev/sr0 /dev/zero: 系统必备的device文件。
home:普通用户的家目录,个人的配置文件,
lib64:依赖库
media: 挂载点 mount /dev/sr0 /media
opt 可以选择的一些应用程序包
root:代表的root用户的家目录
selinux :
sys :
usr:包含大部分的用户功能和应用
boot :
etc :系统中的配置文件
opt:
lib:依赖库
lost+found :
mnt :临时挂载文件系统
proc :虚拟文件系统
sbin :必备的系统可执行文件
srv :
tmp :
var:
设备挂载点:
media
mnt
命令存储位置:
/bin
/sbin
/usr/bin
/usr/sbin
库文件
/lib
/lib64
/usr/lib
/usr/lib64
https://www.linux.org/
/etc
bashrc:存放用于系统范围内的别名和函数
crontab:定时任务的配置文件
fstab:指定系统启动时需要自动加载安装的文件系统列表
group:存放用户组信息
gshadow:组密码
passwd:用户基本信息
shadow:用户密码信息
hosts:主机名和IP
issue:用户登录之前输出的信息
shells:当前系统所支持的shell
skel/:新用户默认的环境信息文件
login.defs:设置用户账号限制信息
yum.repos.d/:yum仓库的配置文件
sysconfig/:
ssh:存放ssh服务配置文件
profile:用户登录时被执行。
profile.d:系统启动后要执行的脚本
proc:提供系统信息:
bus:总线设备
cpuinfo:处理器信息
meminfo:存储器信息,内存,交换分区
filesystems:核心配置的文件系统信息
modules:内核加载的核心模块信息
partitions:分区信息
uptime:系统启动时长
var:
cache:系统运行本省产生的一些缓存文件
local:/usr/local中安装的程序的一些可变数据
lock:锁定文件
log:各种日志文件
spool:
tmp:存放临时文件
lib:
Linux文件目录常见管理命令:
mkdir:创建目录
mkdir 【选项】 目录名
-m :设置权限
-p:递归创建
-v:打印创建目录信息
├── mylinux
│ ├── bin
│ ├── conf
│ ├── lib
│ ├── logs
│ ├── webapps
│ │ ├── docs
│ │ └── examples
│ └── work
# mkdir -pv mylinux/{bin,conf,lib,logs,webapps/{docs,examples},work}
more:逐屏显示文件内容
空格:向下翻屏
b:向上翻屏
+/ 搜索字符串,q
q:退出
less:
cat:一次性显示完整的文件内容,适合文件内容少的情况
-n:编号
-b:不对空白行编号
-A: -vET 末尾加$,tab键置换为^I
/dev/sr0 /media iso9660 defaults 0 0
mount -a
作业:整理FHS
回顾:
1、命令语法结构:
命令 选项 参数 用空格隔开
命令:命令名 与之对应的二进制可执行文件。
内部命令
外部命令
shell:
选项:影响命令的执行结果 - --
-:短选项 合并执行
--:长选项 不能合并执行
参数:命令作用的对象
2、 命令帮助
help
help commond
--help
commond --help
man 9册
用法说明
[]:可选内容
<>:必选内容
a|b|c:多选一
...:同类内容有多个
info
搜索
官方站点
3、yum配置
4、bash特性5、FHS:
Linux文件目录常见管理命令:
diff:
grep:
正则表达式
rm:少用 mv
-f:强制删除,不做提示
-r:递归删目录以及目录下的子目录和子文件一并删除
-R:
-i:交互式删除文件,删除时给出提示,给普通用户专用
-v:显示运行信息
touch:改变文件的访问时间、修改时间, 创建新的文件
-a:修改accsee time
-m:修改mofify time
-c:不创建不存在的文件
-r:通过一个文件更新另外一个文件的时间戳
-t:按照指定时间修改时间戳
ln:创建链接文件命令
文件类型表示:l
索引节点号 inode index
硬链接:允许一个文件拥有多个有效的路径名,
10086 file1 file2 A
符号链接 软链接
类似于windows上的快捷方式, 特殊文件,记录的是另一个文件的位置信息
软连接上 文件有主从之分,主文件删除了,从文件无法访问
file:文件的类型,编码格式
-b:不显示文件名 只显示结果
-f:列出文件中的文件名的文件类型
-F:指定符号替换输出文件名后的默认":"分隔符
-i:显示mime类型的字符串
cp:copy 复制文件或者目录
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
-i:交互式复制,在覆盖文件前提醒用户
-f:强制覆盖
-r/R:递归复制
-d:复制符号链接文件本身,而非源文件
-a:用于归档
-p:保留源文件/目录的属性
-P:不跟随源文件中的符号链接
find :查找执行路径下的指定文件
find [path...] -options [expression] [-print -exec -ok ]
path:值要查找的目录路径
~
.
/
print:将查找的结果输出到标准输出
exec:可以对查找到的文件执行 该参数给出的shell命令
commond {} \;
ok
optinos:
-name:
-type:
-user
-group
-perm
mv:更改文件或者目录的存储位置,重命名
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
-b:当目标文件存在时,先进行备份再覆盖
-f:强制覆盖
-i:交互式,提醒是覆盖
split:分割文件
-b:输出文件的大小,单位是byte
-d:使用数字做后缀
-a:配合-d使用 指定后缀长度
-l:指定输出文件的列数大小
作业:熟悉命令
博客作业
Linux文件系统 inode block superblock
inode table : inode 元数据 block的存放地址
data area : data
元数据:
文件的属性信息 大小 创建时间 权限
surperblock:记录文件系统整体信息
inode 总量 已使用 剩余
block 总量 已使用 剩余
[root@nebula ~]# stat anaconda-ks.cfg
File: "anaconda-ks.cfg"
Size: 939 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 142230 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-02-12 03:32:02.709999481 +0800
Modify: 2020-02-12 03:32:03.369999480 +0800
Change: 2020-02-12 03:32:10.259999474 +0800
/etc/fstab
Linux文件系统删除原理
硬链接:
具有相同INode节点号的文件互为硬链接文件
删除硬链接文件或者删除源文件任意一个,文件数据实际并未删除
只有删除源文件以及所对应的所有硬链接文件,文件数据才被删除,同时释放磁盘空间
硬链接文件是文件的另一个入口
可以通过设置硬链接文件防止误删
软链接 符号链接
类似于windows上的快捷方式
软连接文件类似一个文本文件,存放的是源文件的路径
删除源文件,链接文件依然存在,但是无法指向源文件
软连接文件和源文件是不同类型的文件,也是不同的文件,inode号也不同
rm可以直接删除
目录链接
对于目录来说,只能创建软连接
每一个目录下都有硬链接 . ..
对于父目录来说,子目录都会有指向父目录的链接 父目录链接数+1
每一个文件链接计数器, i_count i_nlink
i_count:当前文件被调用的次数 内存引用计数器
i_nlink:链接的数量 硬链接的数量 磁盘引用计数器
文件删除:i_count和i_nlink同时为0时,代表删除
linux文件处理工具
1、cut:数据切割
1、字节
2、字符
3、区域
-b:以字节为单位进行分割
-c:以字符为单位
-d:指定分隔符 默认是tab
-f:配合-d使用 指定显示那个区域
2、sort:用于字段排序
-f:忽略大小写
-b:忽略最前面的空白字符
-M:以月份名字排序
-n:以纯数字排序
-u:相邻数据去重
-r:反向排序
-t:指定排序分隔符
-k:执行区间
-o filename:将结果保存在filename中
6d7fce9fee471194aa8b5b6e47267f03 ./aersion.ini
8c47b68c23994cf382bd12a3bd4a1fe8 ./plugin.conf
e45f64ed552ab0176be337ad77f3b3ae ./start.sh
6172fad14869bbb949ea1d60c4771f14 ./etop.sh
8dd2db4b88727758bb0800c321bafc34 ./west_proc
1e142f0d573c5891cc14d8864e073d53 ./test_proc.c
6d7fce9fee471194aa8b5b6e47267f03 ./aersion.ini
3、uniq:去除排序过的文件中重复的行
-c:标注出现的次数
-d:只输出重复的行
-D:显示所有重复行
-f:跳过前N列 列是通过空白分割
-i:忽略大小写
-s N:跳过前N个字符
-u:只显示唯一的行
-w N:每行的第N个字符之后不做对照
-z:
4、wc: word count
-c:统计字节数
-l:统计行数
-m:统计字符
-w:统计字数
-L:打印最长行的长度
作业:
1、命令练习
2、虚拟机的安装,yum源配置好,设定好ip地址通过ssh连接,安装 httpd
预习 grep
find
grep:文本过滤工具 正则表达式引擎
基于用户指定的“模式”,对目标文件逐行进行匹配检查,打印匹配到的行,默认打印到终端窗口
模式:正则表达式元字符编写出来的过滤条件
正则表达式:由一类特殊的字符以及文本字符所编写的模式,并不代表字面含义,表达控制或者通配的功能
元字符: [[:space:]]
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
--color=auto:高亮显示匹配到的文本
-i:忽略字符大小写
-n:显示行号
-E:支持使用扩展正则表达式
-o:打印匹配到的行
-v:显示不能被匹配到的行
—A #:后几行
-B #:前几行
-C #:前后各几行
元字符:
字符匹配
.:匹配任意单个字符
[]:
[^]:
[a-z],[A-Z],[0-9],[a-z0-9]
[[:upper:]]:所有的大写字母
[[:lower:]]:所有的小写字母
[[:alpha:]]:匹配所有的字母
[[:digit:]]:所有的数字
[[:alnum:]]:字母和数字
[[:space:]]:空白字符
[[:punct:]]:标点符号
匹配次数
用在要指定出现的次数的字符的后面,用来限制其前面字符出现的次数
*:匹配其前面的字符任意次。0次,1次或者多次
.*:匹配任意长度的任意字符
\?:匹配其掐面的字符0次或者1次,最多一次
\+:匹配其前面的字符1次或者多次,至少一次
\{m\}:匹配其前面的字符m次
\{m,n\}:匹配其前面的字符至少m次,至多n次
\{0,n\}:至多n次
\{m,\}:至少m次
位置锚定
^:行首锚定,用于模式的最左侧
$:行尾锚定,用于模式的最右侧
^$:空白行
^[[:space:]]*$
^pattern$:用pattern来匹配整行
\<或者\b:词首锚定,用于单词的左侧
\>或者\b:词尾锚定,用于单词的右侧
\
练习:
1、显示/etc/passwd文件中不以/bin/bash结尾的行;
2、显示/etc/passwd中的两位数或者三位数
3、找出 netstat -tan 命令结果中以LISTEN后跟一个或者多个空白字符结尾的行
分组和引用
分组
\(\):分组,将一个或者多个字符捆绑在一起当作一个整体处理
\(xy\)\(mn\)\(zq\)*ab
xyab xyxyab ab xyxyxyxyxyab
引用
分组括号内匹配的模式,会被正则表达式引擎记录在内部变量中,通过变量进行应用
\1:模式从左侧起,第一个左括号与之匹配的右括号之间模式所匹配到的字符
\2: 模式从左侧起,第二个左括号与之匹配的右括号之间模式所匹配到的字符
\3
\4
....
He loves his lover.
He likes his lover.
She likes her liker.
She loves her liker.
或者:
| a|b 在|两边a和b是独立的
A|apple 表示:A或者apple 不是 Apple或者apple
(A|a)pple
正则表达式匹配中,工作在贪婪模式:尽可能多的去匹配
\
作业:
1、整理一下grep用法 正则表达式元字符
2、找出ifconfig命令中的IP地址