ll /ect 查看目录文件信息(不全)
find: 显示文件信息类型命令
快速查找:语法:
find 找寻的路径范围 -type 类型 -name “文件名” 文件名哪记不住哪用*
iname 忽略大小写
查看大于100K的文件:
find /ect -type f -size +100 /ect是路径 +100是大于100k ‘K的文件’ 小于是-100
b 和 c k 是字节(字节推荐c)
不写默认是K
M 是兆
G 是GB
find /ect -maxdepth 1 -type f -name “文件名” 只找ect目录一层 不找子目录里的 1 代表层级
tree / 显示所有目录结构包括数据
tree /a 看a 中所有目录结构
tree -L 2 / a 看两层目录
tree -d / a 显示目录中所有结构信息 (仅仅显示结构)
ps:a为文件夹
》ll -h 看多大
压缩
tar -zcvf /a/a.tar.gz /a/文件名 /a/a.tar.gz 压缩完放在/a目录下 名字叫a.tar.gz
z 压缩方式 zip
c 创建压缩包文件
v 显示压缩过程
f 指定压缩包
压缩验证 :mv /a/文件名 、/tep 先移走原来的
再解压 tar xvf /路径/压缩名称
tar xvf /路径/压缩名称 -c /路径 想解压到某处
在对比 vimdiff 或 diff
tar -tf /压缩包 查看压缩包里有没有
tar -zcvf /a/a.tar.gz ./a/文件名 ./当前目录压缩 相对路径
–exclude -----排除
includes ----包含
tar zcvf /a/lpf.txt.tar.gz /a --exclude=/a/lpf01.txt 排除a目录下lpf01文件
多个排除:
tar zcvf /a/lpf.txt.tar.gz /a --exclude-from=/b/lpf01.txt 在b中编写一个 :内容为想排除的文件名 路径加文件名即可
文件属性信息相关说明
-1、r 读 4
w 写 2
x 执行 1
- 没权限
-2,权限赋予到指定的人
属主
属组
其他
༒ℳ๓李ζั℘:
他这个432 r-- 4 -wx 3 -w- 2 我懂 为啥不能写成r–wx-w–
༒ℳ๓李ζั℘:
这个-的位置有讲究吗
linux:
没
༒ℳ๓李ζั℘:
好的
……………………………………
id root 0就是root
用户组:
uid=0(root) gid=0(root) 组=0(root)
1 2 3
1:显示用户名和uid对应关系
2.显示属于的用户组,以及组名和gid对应关系
3.用户可能属于哪个组
用户分类:
a.超级管理员 root
UID信息区分0
权限:所有
b.虚拟用户
uid 1到999
权限:管理进程 不能登录/没home nobody(经典虚拟用户名)
c.普通用户
uid 1000+
权限 :管理指定的文件数据进程 可以登录有home目录
如何保护好root用户
1.修改远程端口 -52113 修改 /etc/ssh/sshd_config
2.禁止登录用户连接root 修改 /etc/ssh/sshd_config
满足登录的条件:
01 ,服务器地址 192/168…
02, 服务器端口 22
03,登录用户 root
04,登录用户的密码 root
(((((((((()))))))))
时间:stat /a 查看a所有时间表
访问时间:access
修改时间: modify
改变时间: change
14今天总结:
find find /test -type f -name “*.txt”|xargs mv -t /test01/
tar tar -zcvf /a/a.tar.gz /a/文件名
tar xvf /路径/压缩名称
查找删除
find /test -type f -name “.txt" - -delete 查找删除
find /test -type f -name ".txt” -exec rm -rf {} ; 删除方法2
find /test -maxdepth 1 -type f -name “.txt" | xargs rm -f 方法3
rm -rf $(find /test/ -type f -name ".txt”) 方法4
查找压缩
find /test -maxdepth 1 -type f -name “.txt" | xargs tar zcvf /test/aa.tar.gz 方法1
tar zcvf /test/aa.tar.gz 'find /test/ -maxdepth 1 -type f -name ".txt” ’ 方法2(不太好使)
tar -tf 压缩包 —验证压缩
按时间删除:
时间轴:
-10 当前时间 10 +10
最近10天的 前第10天 10天以前的
find /test -type f mtime +10 -delete
先找到前10天的 删除
df -i 查看iNode
inode:索引节点 ,书的目录存储文件属性信息
诞生过程:磁盘格式化=创建文件系统
特点:iNode号码相同,互为硬连接
block : 数据块、存储文件具体内容
诞生过程:磁盘格式化=创建文件系统
特点说明:根据企业情况,调整block大小
面试题:系统中文件读取原理
如何将数据真正的删除:
01:确保文件的硬连接数为0 i_link
02: 确保文件没有被进程占用 i_count
硬连接创建:(能防止误删除 ,但是不能防止误修改)
ln /a/a22.txt /a/a22_hard_link.txt a22.txt 必须存在
软连接创建:
ln -s /a/a22.txt /a/a22_soft_link.txt a22.txt 必须存在
区别:
01:大小不一样’
02:文件类型不一样权限不一样(颜色 软链接带颜色)
03:文件和源文件不一样 iNode信息不一样
硬的一样
软的不一样
04:源文件被删后
硬连接依然有效 ,软链接失效
05:创建过程不一样
06:目录无法创建硬连接
ll -i /etc/hosts
find / -type f -inum 67188810 —根据find找到hosts的硬连接
ll /etc/ | grep -c “^d” 找出以d为开头的文件 -c 只显示多少个
+++++++++++++++++++++++
时间相关的:
date
调整时间显示格式:
date “+F %T” 年月日
修改时间年月日时间
date -s “2021-10-11 14:00”
date -d “+2day” 显示加两天时间-2day就是过去
系统自动备份数据:定在00:00
cp /a/aa.log /b/bb.log.$(date +%F -d “-1day”)
ntpdate ntp1.aliyun.com 同步时间
@@@@@@@@@@@@@@@@@@@@@@@@
grep “al*” a.txt 显示带al的信息
grep lin 1.txt 线束lin的信息不显示其他的
grep -v lin 1.txt 不看lin
grep -v “^#” 1.txt 不看带注释的
系统的特殊符号:
基础的:$ ! | #
‘’ 引号 :将引号中的命令先执行,把结果交给引号外面的命令进行处理
如何忽略别名功能:
01:使用命令绝对路径
02:在命令执行前加撬棍
03:在xargs信息后命令自动忽略别名
awk ‘{print $3}’ 1.txt 取文件的第3列
将错误正确的信息同时保留
echo lpff >>/a/info.log 2>>/a/info.log
cho lpff >> /a/info.log 2>>/a/info.log
快速备份方法L:
正常:cp /ect/ss.txt /ect/ss.txt.bak
快速: cp /etc/ss.txt{,.bak}
mv /ect/ss.txt{.bak,}快速还原
正则符号:
基础正则:
01:^ 表示以什么开头 grep “^a” 1.txt
02: ll -F 以/结尾的 以 结 尾 的 g r e p " b 以结尾的 grep "b 以结尾的grep"b" 1,txt
03:空行不要 : grep -v "^ " 正 则 部 分 : 1 ) 点 . 匹 配 任 意 一 个 字 符 , 且 只 有 一 个 字 符 g r e p " . " / a a t e s t . t x t − o − o 查 看 查 找 过 程 文 件 名 2 ) ∗ 星 匹 配 前 一 个 字 符 连 续 出 现 0 次 或 多 次 的 字 符 3 ) 点 星 结 合 匹 配 所 有 信 息 g r e p “ m . ∗ m " 正则部分: 1)点 . 匹配任意一个字符,且只有一个字符 grep "." /aa_test.txt -o -o查看查找过程 文件名 2)*星 匹配前一个字符连续出现0次或多次的字符 3)点星结合匹配所有信息 grep “^m.* m "正则部分:1)点.匹配任意一个字符,且只有一个字符grep"."/aatest.txt−o−o查看查找过程文件名2)∗星匹配前一个字符连续出现0次或多次的字符3)点星结合匹配所有信息grep“m.∗m” /aa_test.txt 找到m开头m结尾
指定更多的信息,防止贪婪匹配
grep “^lm.* m$” /aa_test.txt 找到m开头lm结尾
4)\转义符号
01:将有特殊意义的符号转义成普通信息进行识别
02:将没有意义的信息转义成有特殊意义的信息
echo -e “01\n02\n03” 也可以显示成01 02 03 竖着的 以前是cat 一个文件才行
单个字符匹配信息:
grep "[abc]" 1.txt 查出ABC的字符
grep "lippeng[fh]ei" 1.txt 查出lipengfei lipenghei
grep "^[LP]" 1txt 找到以L和P开头的信息 "[^LP]"排除LP的信息 "^[^LP]"表示排除包含LP信息的字符开头的行(不包括空行)
du -sh 看文件大小
扩展正则符号:
默认 grep sed 不能直接识别
提升自己grep前加个e 或 grep -E
sed -r
1)+ 匹配前一个字符连续出现了1次或多次
egrep “1+” 1.txt
[root@lpf a]# grep -Ev “[0-9]+” 1.txt
llss -筛出没用数字的 筛出Ev不是【】里的
创建用户密码信息是随机密码
seq -w 10|sed -r ‘s#(.*)#useradd oldboy\1; Password=date "+%N"|md5sum |head -c 6
; echo $Password|passwd --stdin oldboy\1; echo oldboy\1 $Password >>/tmp/passwd.txt#g’|bash
把123456转换成<12><34><56>
echo 123456 | sed -r “s#(12)(34)(56)#<\1><\2><\3>#g” (17天06)
5) ?
匹配前一个字符出现的0或1次
终极题目:取出ip
ip a s ens192| egrep “[0-9]+.[0-9]+.[0-9]+.[0-9]+” -o |head -1
ip a s ens192| egrep “([0-9]+.?)”{4} -o |head -3 |tail
为了练习正则的,正常hosthome -i 就可以
1.三剑客命令sed
概述:字符编辑工具(行编辑工具)==按照每行中的字符进行处理操作
ps:全屏编辑工具vi / vim
作用:
1)擅长对行操作处理
2)擅长对文件内容信息进行修改调整/删除
编写脚本:修改文件内容信息时
修改ip
sed -i "s#10.0.0.200#10.0.10.200#g" /etc/sysconfig/network-scripts/ifcfg-eth00 && \
sed -i "s# 10.0.0.201 # 10.0.10.201#g" /etc/sysconfig/network-scripts/ifcfg-eth00 && \
sed -i "s # (.*)0(.*) # \110 \2# g" /etc/sysconfig/network-scripts/ifcfg-eth00
s#a#b#g
具体功能 :
增
删
改
查
语法:
sed -n ' 条件和处理' 1.txt
04原理:
05操作
a sed 查询:
根据行号:
根据信息
测试1: 根据内容信息,输出单行内容
#将有oldboy行的信息找出来
sed -n '/oldboy/p' person.txt
101,oldboy,CEO、
sed -n '3p' 1.txt 显示第三行
sed -n '1p;3p' 1.txt 显示1行和3行
sed -n '1,3p' 1.txt 显示1到3行
测试2: 根据内容信息,输出多行内容(连续)
#将有oldboy到alex行的信息都输出出来 找中间的
sed -n '/oldboy/,/Alex/p' person.txt
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
测试3: 根据内容信息,输出多行内容(不连续)
#将有oldboy和alex行的信息都输出出来 找多个的
sed -n '/oldboy/p;/Alex/p' person.txt
101,oldboy,CEO
103,Alex,COO
106,oldboy,CIO
((((((((((((((((((
b sed 添加信息方法:
在文件第一行添加附加信息aa
sed '1iaa' 1.txt
最后一行添加附加aa
sed '$aaa' 1.txt
sed '$a100\n101' person.txt 添加多行信息
企业中编写配置文件:
IPaddress=10.10.10.1
mask=255.255.255.0
gateway=10.10.10.254
sed '$aIPaddress=10.10.10.1\nmask=255.255.255.0\ngateway=10.10.10.254' 文件名称
总结:p:输出
i:指定行前面添加 i后面加上bak 自动备份
a:指定行后面 ($s 最后一行)
-n :取消默认输出
-r :识别扩展正则
-i 真实编辑文件
-e: 识别sed命令多个操作指令
在A后面添加B在 A前面加C
sed -e '/A/aB' -e '/A/iC' 如果不是某行就用 /某某/代替
(((((((((((((((
删:
删除单行:sed '3d' 1.txt
删除多行:sed '2,4d' txt 删除2到6
sed '/oid/d' 1.txt ----删除有oid信息的行
sed '3d;6d' 1.txt ----删除2和6
取消空行:sed '/^$/d' 1.txt
((((((((((((((
替换:
sed -n 's#aaa#bbb#gp' 1.txt
sed -ibak 's#aaa#bbb#gp' 1.txt
sed 's#()#\n#g' 文件信息 后项引用前项进行替换修改
利用sed命令取出IP地址信息:
第一个历程: 取出有IP地址的行
[root@oldboyedu ~]# ip a s eth0|sed -n '3p'
inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0
第二个历程: 取出IP地址
[root@oldboyedu ~]# ip a s eth0|sed -n '3p'|sed -r 's#^.*net (.*)#\1#g'
10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0
1.lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
2. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
3. dsasasadinet 127.0.0.1/8 scope host lo
4. valid_lft forever preferred_lft forever
[root@oldboyedu ~]# ip a s eth0|sed -n '3p'|sed -r 's#^.*et (.*)#\1#g' |sed -r 's#(.*)/8.*#\1#g'
10.0.0.200
sed -r 's#^.*net (.*)#\1#g'|sed -r 's#(.*)/24.*#\1#g' 进行整合
ip a s eth0|sed -n '3p'|sed -r 's#^.*net (.*)/24.*#\1#g' -----------------
sed -n '3p'|sed -r 's#^.*net (.*)/24.*#\1#g' 进行整合
sed -n '3 p'
sed -r 's#^.*net (.*)/24.*#\1#g'
sed -rn '3s#^.*net (.*)/24.*#\1#gp'
最终取IP地址方法
[root@oldboyedu ~]# ip a s eth0|sed -rn '3s#^.*net (.*)/24.*#\1#gp'
10.0.0.200
ls old*.txt | sed -r 's#(.*)txt#mv & \1jpg#g' | bash --------替换.txt文件夹名为jpg
重命名专业命令:rename
rename .txt .jgp old*.txt
++++++++++++++++++++++++++++++++
老大awk:
1)对列进行操作,数据信息的统计;
2)基本使用(高级使用shell)
awk概念介绍说明:
作业特点:
1.排除信息:
2.查询信息
3.统计信息
4.替换信息
语法:
sed [参数] ‘条件-处理方式’ 文件名
swk [参数] ‘模式-动作’ 文件名
03)awk实际操作:
查询:
按行号查询:
awk 'NR==2' test.txt
awk 'NR==2;NR==4' test.txt 2和4行
awk 'NR==2,NR==4' test.txt 2到5行
ps:在linux系统中 old=10是赋值不是等于
按照字符查询:
awk '/xiao/' test.txt
awk '/xiao/,/fei/' test.txt 带xiao的行到带fei的行
awk '/xiao/;/fei/' test.txt
显示xiaoyu的信息1和3列
swk '/xiaoyu/{print $1","$3}' test.txt
swk '/xiaoyu/{print $1,$3}' test.txt
找出性张的:显示第二次捐款信息:
awk '/zhang/{print $NF}' test.txt NF最后一列 $4就是第四
awk '/zhang/{print $NF}' test.txt | awk -F '':'' '{print $3}' 第4列中的地3列
简化:
awk -F ":" '/^zhang/{print $3}' test.txt
awk -F "[ :]+" '/Zhang/ {print $1,$2,$5}' test.txt ---并且显示姓名
03.显示所有以41开头的ID号人的全名:
awk '$3~/^41/{print $1,$2,$3}' test.txt $3~ 匹配第三列的信息
04.显示ID号最后以为为1或5的人的全名:
方法一:
awk '$3~/1$|5$/{print $1.$2}' test.txt | column -t | column -t 对齐
方法二:
awk '$3~/[15]$/{print $1.$2}' test.txt | column -t
方法三:
awk '$3~/(1|5)$/{print $1.$2}' test.txt | column -t
05。显示xiaoyu的捐款,每个捐款前面都有以$开头, 如$110$120$130
语法:gsub(/需要替换的信息/,“修改成什么”,将哪里得信息进行修改)
awk '$2~/xiaoyu/{gsub(/:/,"$",$NF);print $NF}' test.txt
空行注释排除
grep -Ev "^# | ^$" 文件信息
sed -n '/^#'|^$/ 文件
awk '$0~!/^#|^$/' test.txt
总结:awk中$
$1 $2 $3 :取第几行
$NF :最后一行
$(NF-1):取倒数第几行
$0 :取所有列
如何利用awk取出IP地址信息:
ip a s eth0|awk -F "[ /]+" 'NR==3{print $5}'
hostname -i
===========================
常见面试题
系统启动流程:
系统的启动流程:
centos6
01. 加电自检
检查服务器硬件是否正常
02. MBR引导
读取磁盘的MBR存储记录信息,引导系统启动
03. grup菜单
选择启动的内核/进行单用户模式重置密码
04. 加载系统内核信息
可以更好的使用内核控制硬件
05. 系统的第一个进程运行起来 init (串行)
init进程控制后续各种服务的启动: 启动顺序 网络服务 sshd
06. 加载系统运行级别文件/etc/inittab
07. 初始化脚本运行
初始化系统主机名称 和 网卡信息
08. 运行系统特殊的脚本
服务运行的脚本
09. 运行mingetty进程
显示开机登录信息界面
centos7
01. 加电自检
检查服务器硬件是否正常
02. MBR引导
读取磁盘的MBR存储记录信息,引导系统启动
03. grup菜单
选择启动的内核/进行单用户模式重置密码
04. 加载系统内核信息
可以更好的使用内核控制硬件
05. 系统的第一个进程运行起来 systemd (并行)
服务启动的时候,同时一起启动
06. 读取系统启动文件
/etc/systemd/system/default.target
07. 读取系统初始化文件
/usr/lib/systemd/system/sysinit.target
08. 使服务可以开机自启动
/etc/systemd/system 加载此目录中的信息,实现服务开机自动启动
09. 运行mingetty进程
显示开机登录信息界面
03.用户管理章节:
chown yonghu 1.txt---属组归yonghu 用户
用户概念介绍:
管理员用户 root 0 权利至高无上
虚拟用户 nobody 1-999 管理进程 没家目录 不能登录系统
普通用户 oldboy 1000+ 权利有限
r read
w write
x execute
文件信息:
r 可以读文件的内容
w 可以编辑文件的内容
x 执行这个文件(脚本文件)
文件权限配置的结论:
01. root用户对所有文件有绝对的权限,只要有了执行权限,root用户可以无敌存在
02. 对于文件来说,写的权限和执行的权限,都需要有读权限配合
03. 如何想对文件进行操作,必须对文件赋予读的权限
一个普通文件默认权限: 644 保证属主用户对文件可以编辑 保证其他用户可以读取文件内容
一个目录文件默认权限: 755 保证属主用户对目录进行编辑 保证其他用户可以读取目录中的信息,可以进入到目录中
目录信息:
r 读目录中的文件属性信息
w 可以在目录中添加或删除文件数据信息
x 是否可以进入到目录中
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
文件目录数据设置权限:(注意权限执行原理设置完不行去查看上级目录权限)
1)根据用户信进行定:(属主,属组,其他用户)
属主-user u
属组-group g
其他用户-other o
chmod u/g/o+r/w/x u-r/w/x u=rw chmod u+r 文件名
2)根据用户进行批量设定:
数值设定:
chmod 676 1.txt
问题一: 为什么创建的文件和目录权限一致
目录权限都是 755
文件权限都是 644
[root@oldboyedu ~]# umask
0022
默认文件权限: 666 - 022 = 644
umask数值是奇数 666 - 033 = 633 + 11 = 644 奇数加个11
umask数值是偶数 666 - 022 = 644
默认目录权限: 777 - 022 = 755
umask数值是奇数 777 - 033 = 744
umask数值是偶数 777 - 022 = 755
问题二:永久修改umask
临时 umask 033
永久:
vim /etc/profile
else
umask 022
系统中特殊的目录:/etc/skel
root@lpf ~]# ll -a /etc/skel/
总用量 24
drwxr-xr-x. 3 root root 78 11月 9 15:51 .
drwxr-xr-x. 139 root root 8192 12月 8 17:56 ..
-rw-r--r--. 1 root root 18 4月 1 2020 .bash_logout 当系统退出登录状态会执行的命令
-rw-r--r--. 1 root root 193 4月 1 2020 .bash_profile 别名和环境变量(只针对某个用户) 家规
-rw-r--r--. 1 root root 231 4月 1 2020 .bashrc 别名和环境变量(只针对某个用户) 家规
drwxr-xr-x. 4 root root 39 11月 9 23:33 .mozilla
/etc/skel目录作用:
01. 目录中可以存储运维操作规范说明文件
02. 调整命令提示符信息