目录文件
tree命令下载:yum install -y tree tree#目录以树状结构显示
tree -L num 显示多少层 显示目录层级
例如看根目录下的一层结构
├── bin #存放普通用户的命令
├── boot #启动目录 grub引导程序
├── dev #设备文件目录
├── etc #配置文件目录 ******
├── home #普通用户家目录 /home/用户名称
├── lib #c语言的函数库
├── lib64 #c语言的函数库
├── mnt #临时挂载目录
├── opt #第三方应用程序安装目录
├── proc #实时反映当前进程运行的状态 (汽车的仪表盘)
├── root #超级管理员家目录
├── run #进程运行时所产生的文件
├── sbin #管理员用户使用的命令
├── tmp #临时目录
├── usr #普通用户目录
└── var #可变的目录 ****
touch命令
touch创建单个文件
touch 1.txt
touch创建有规律的文件
touch {1..7}.txt
touch创建无规律的文件
touch {a,d,e,f}.txt
mkdir命令
mkdir(创建目录)
-p 递归创建(用于没有创建的目:例如在家目录没有num目录但是要在num下创建目录则需要-p这个参数)
案例1:创建有规律的目录
mkdir test{1..10}
案例2:创建以下目录结构:
/app/
├── mysql3306
│ ├── bin
│ ├── conf
│ ├── lib
│ └── modules
├── mysql3307
│ ├── bin
│ ├── conf
│ ├── lib
│ └── modules
└── mysql3308
├── bin
├── conf
├── lib
└── modules
mkdir -p /app/mysql330{6..8}/{bin,conf,lib,modules}执行后使用tree命令查看
案例3:创建以下目录结构:
/web
├── 2020
│ ├── 01
│ │ ├── news
│ │ └── sports
│ │ ├── cba
│ │ └── nba
│ ├── 02
│ │ ├── news
│ │ └── sports
│ │ ├── cba
│ │ └── nba
│ └── 03
│ ├── news
│ └── sports
│ ├── cba
│ └── nba
└── 2021
├── 01
│ ├── news
│ └── sports
│ ├── cba
│ └── nba
├── 02
│ ├── news
│ └── sports
│ ├── cba
│ └── nba
└── 03
├── news
└── sports
├── cba
└── nba
mkdir -p /web/{2020..2021}/{01..03}/{new,sports/{cba,nba}}执行后使用tree命令查看
cp命令
cp [选项] [源路径] [目的路径]
-r 递归
-p 带权限复制
例1:将1.txt文件复制到/tmp目录下
cp 1.txt /tmp
例2:将5-10.txt文件复制到/tmp目录下
环境准备:
touch {5..10}.txt
cp {5..10}.txt /tmp
例3:将所有以.txt结尾的文件复制到/tmp目录下
cp *.txt /tmp
例4:将1.txt文件复制到/tmp目录下并且修改名称为test(注意此处的test应该不存在,否则是否覆盖)
cp 1.txt /tmp/tese
例5:将ifcfg-ens33网卡进行备份 备份结果以.bak 为结尾
cp /etc/sysconfig/network-scripts/ifcfg-ens33{,.bak}
例6:复制以.txt结尾的文件到/opt目录下并且将后缀名全部改为.exe
rename [要修改的内容] [修改后内容] [选择修改的文件]
cp *.txt /opt
rename .txt .exe /opt/*.txt
例7:将root家目录复制到/opt目录下
cp -r /root /opt(此处同理如何opt不存在则会将root目录的内容改名为opt,存在的话创建一个root目录)
例8:将test用户家目录移动至/opt目录下
基本环境准备
useradd test
cp -rp /home/test /opt
例9:将文件备份带上时间戳
cp 1.txt{,.bak-$(date +%F)}
mv命令
mv [源路径] [目标路径]
-v 查看详细过程
例子:将1.txt文件移动到/opt目录
mv 1.txt /opt
例2:将2.txt 文件移动至/test目录下并且重新更名为good
mv 2.txt /test/good
例3:修改4.txt的文件名为zzz
mv 4.txt zzz
例4:将3.txt文件改名为1.txt
mv {3,1}.txt
rm命令
rm (remove)删除命令
-r 递归
-f 强制
cat命令
cat 将文件打印在屏幕上
-n 显示行号
例1:查看/etc/passwd用户配置文件
cat /etc/passwd
例2:查看/etc/passwd并显示行号
cat -n /etc/passwd
cat写入文件
cat >文件名称 <<EOF
最后结束输入EOF
head 从头开始查看(默认查看10行)
-n 查看行数
例1:查看/etc/passwd用户配置文件的前10行
head /etc/passwd
例子:查看行数用head命令
cat -n /etc/passwd | head
例2:查看/etc/passwd用户配置文件的前20行
head -20 /etc/passwd
tail从尾开始查看(默认查看10行)
-n 查看的行数
-f 追踪文件
例1:查看最新创建的用户
tail -1 /etc/passwd
例2:追踪/var/log/messages文件
tail -f /var/log/messages
开启第二个窗口
输入logger 想添加的日志文件内容
或者用tailf
tailf /var/log/messages
文件的下载与上传
通过yum install -y lrzsz下载插件
上传
手动拖入文件只能是单个文件不能是目录或者通过rz选择需要上传的文件
sz [文件] 选择需要下载的文件
下载
通过网络下载
curl
-o 将内容读取下载到一个文件内
curl -o baidu www.baidu.com
wget通过yum install -y wget下载插件
wget -O 将下载的文件重新更名或者放置在目录下
sort命令
sort排序命令
-t 指定分隔符
-r 倒叙排列
-n 按数字排序
-k 指定第几列
1.首先创建一个文件,写入一无需的内容
cat > file.txt <<EOF
b:3
c:2
a:4
e:5
d:1
f:11
EOF
2.进行排序我使用了分隔符进行排序
[root@test ~]# sort -t ':' -nk 2 file.txt
3.将数字进行倒叙
[root@test ~]# sort -t ':' -rnk 2 file.txt
f:11
e:5
a:4
b:3
c:2
d:1
uniq命令
uniq命令去重命令
-c 统计数量
对file2.txt进行排序在进行去重
sort file2.txt | uniq
统计去重的次数
sort file2.txt | uniq -c
grep命令
grep命令:对文本查找
-o 只显示查找的值
-v 取反
-i 忽略大小写
-n 显示查找文本所在的行号
-c 对查找出的文本进行统计行数
-A(num) 取出查出文本的后num行
-B(num) 取出查出文本的前num行
例1:查找zyf的信息
grep zyf /etc/passwd
例2:查找root信息
grep ^root /etc/passwd (^符号是以什么什么开头)
例3:查找不能登录的用户
grep /sbin/nologin$ /etc/passwd($以什么什么结尾)
例4:查找除了root用户其他用户
grep -v ^root /etc/passwd
例5:取出除了root其他值都不要
grep -o ^root /etc/passwd
例6:统计/etc目录下有多少普通文件
查看哪些是普通文件普通文件(-)
ls -lR /etc
用grep取出以-开头的
ls -lR /etc | grep ^-
再用wc -l统计
ls -lR /etc | grep ^- |wc -l
wc命令
wc统计命令
-c 统计文件字符数
-l 统计文件行数
-w 统计文件的单词数
wc /etc/services
11176 61029 670293 /etc/services
行数 单词数 字符数
awk命令
awk
-F 指定分隔符格式 awk ‘{print $num}’ num表示要取的列数
1.取出/etc/passwd内的所有用户名称
awk -F ':' '{print $1}' /etc/passwd
2.取出/etc/passwd内的所有用户名称以及相应的登陆方式
awk -F ':' '{print $1,$NF}' /etc/passwd
3.取出所有能够登录的用户并且将用户信息以用户名加登录方式显示
能够登录 /bin/bash
grep /bin/bssh$ |awk -F ':' '{print $1,$7}'
awk -F ':' /\/bin\/bash$/{print $1,$7}
4.取出ens33网卡ip地址
\< \>
ifconfig | grep '\<inet\>'|awk '{print $2}' | head -1
ifconfig | grep 'inet '|awk 'NR==1{print $2}'
ifconfig ens33| awk '/\<inet\>/{print $2}'
1.secure.log 取出登录失败的ip地址并且取出失败最多的top5
grep Failed secure.log |awk '{print $(NF-3)}'|sort|uniq -c | sort -rn |head -5
2.secure.log 取出登录成功的ip地址并且取出登录成功的top5
grep Accepted secure.log | awk '{print $11}' | sort | uniq -c | sort -nr|head -5
3.nginx.log 取出nginx访问最多的ip地址并且取出top10
awk '{print $1}' nginx.log |sort | uniq -c | sort -nr | head
4.找出经常使用的命令并且进行排名 取出前top5
history | awk '{print $2}' | sort|uniq -c|sort -nr | head -5
文件查找
locate命令
locate用于模糊查找文件,需要下载yum install -y mlocate需要更新数据库使用updatedb locate [选项]
[搜索的字段]
find命令
find用于精确查找文件,其中-a表示and意思,-o表示or的意思,-not !取反,*表示通配符 find [需要查找的目录] [选项]
[查找的字段] [动作]选项 : 文件搜索选项 -name 要搜索的文件名称 -iname 不区分大小写 用户文件搜索选项 -uid 根据属主的uid查找、
-gid 根据属组的gid查找 -user 根据属主来查找 -group 根据属组来查找 -nouser 查找没有属主的文件
-nogroup 查找没有属组的文件 时间搜索的选项 -ctime 根据文件修改权限时间来查找 -atime 根据文件访问时间来查找
-mtime 根据文件修改内容时间查找 +7 表示七天以前的所有文件 -7 表示现在时间的前七天文件不包括第七天 7
表示第七天当天文件 大小搜索选项 -size KMG :表示找出指定大小的文件 +(后接大小单位为KMG):表示大于所指定大小
-(后接大小单位为KMG): 表示小于所指定的大小 权限搜索选项 -perm(0表示不匹配权限) mode
表示查找出指定权限的文件 -mode 表示权限中的每一位都要包括指定的权限 /mode 表示查找权限中的任何一位包括了指定的任何一位
文件类型搜索选项 -type f 普通文件 d 目录文件 c 字符设备文件 s 套接字文件 l 连接文件 p
管道文件 b 块状设备文件 动作 -ls 查看文件的详细信息 -print 打印查找出来文件的文件路径 delete
将查找出来的文件删除 -exec {}\;默认格式。查找出来的文件进行别的命令进行执行无法对文件打包 |xargs
查找出的文件进行执行别的命令可对文件打包
例:访问根目录下七天以前的文件以test开头的文件
find / -mtime +7 -name "test*"
/boot/grub2/i386-pc/test.mod
/boot/grub2/i386-pc/test_blockarg.mod
/boot/grub2/i386-pc/testload.mod
/boot/grub2/i386-pc/testspeed.mod
/tmp/test
/usr/bin/testgdbm
/usr/bin/test
例题:查找出所有有特殊权限的文件
#find / -perm /7000
/dev/mqueue
/dev/shm
例题:将/root目录下的所有test文件复制到/tmp目录下
#find /root -name "test*.txt" -exec cp {} /tmp \;
ls /tmp
test10.txt
test1.txt
test2.txt
test3.txt
test4.txt
test5.txt
test6.txt
test7.txt
test8.txt
test9.txt
例题:对根目录下没有任何文件的权限进行打包之/zyf目录下
#find / -perm 0000 |xargs tar czf /zyf/lzy.tar.gz
tar tf /zyf/lzy.tar.gz
dev/pts/ptmx
run/cron.reboot
run/systemd/inaccessible/
sys/fs/cgroup/memory/memory.pressure_level
etc/gshadow
etc/shadow-
etc/shadow
etc/gshadow-