文件管理命令
touch
创建或刷新时间戳
案例:批量创建相同扩展名的文件
[root@tzc ~]# touch {1…10}.txt
[root@tzc ~]# touch {a…f}.txt
cp
copy 复制或另存为
cp [option] source destination
-r 递归复制目录树
制和另存为
[root@tzc ~]# cp a /tmp
[root@tzc ~]# ls /tmp/
a ks-script-pFgjr6 systemd-private-2aca9791e43c450ea127728157b3da67-chronyd.service-ZtaKhA vmware-root_6295-1681199997 vmware-root_6313-1681199964 yum.log
[root@tzc ~]# cp a /tmp/aa //另存为
[root@tzc ~]# ls /tmp/
a aa ks-script-pFgjr6 systemd-private-2aca9791e43c450ea127728157b3da67-chronyd.service-ZtaKhA vmware-root_6295-1681199997 vmware-root_6313-1681199964 yum.log
[root@tzc ~]# cp a /tmp/a
cp:是否覆盖"/tmp/a"? y //y或者yes确定 n或者no否定
[root@tzc ~]# \cp a /tmp/ //不管目标存不存在不会再提示 \转义符
注意:系统定义别名cp=‘cp -i’,如果不想执行这种别名,可以使用转移符’’
案例1:在/etc/sysconfig/network-scripts/里,将ifcfg-ens33复制成ifcfg-ens34
方法一:
[root@tzc ~]# cd /etc/sysconfig/network-scripts/
[root@tzc ~]# cp ifcfg-ens33 ifcfg-ens34
方法二:
[root@tzc ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens34
方法三:
[root@tzc ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens3{3,4}
mv
move 剪切或重命名
mv [option] source destination
mv剪切加重命名
[root@tzc ~]# ls
a anaconda-ks.cfg b c
[root@tzc ~]# mv b d
[root@tzc ~]# ls
a anaconda-ks.cfg c d
[root@tzc tmp]# cp /root/c /root/d //注意中间有空格
cp:是否覆盖"/root/d"? y
[root@tzc tmp]# ls /root
a anaconda-ks.cfg c d
[root@tzc tmp]# cp /root/{d,e}
[root@tzc tmp]# ls /root/
a anaconda-ks.cfg c d e
rename
批量重命名
案例1:将CentOS7的官方默认yum仓库文件都重命名
[root@tzc ~]# cd /etc/yum.repos.d/
[root@tzc ~]# rename .repo .repo.bak *
rm
remove
rm [option] destination
-f force 强制删除或者使用\rm
-r 递归删除目录树
-rf
[root@tzc ~]# rm -rf /*
全部改后缀
[root@tzc tmp]# ls
a a.aa ks-script-pFgjr6 vmware-root_6295-1681199997 yum.log
aa b.aa systemd-private-2aca9791e43c450ea127728157b3da67-chronyd.service-ZtaKhA vmware-root_6313-1681199964
[root@tzc tmp]# rename .aa .bb *.aa
[root@tzc tmp]# ls
a a.bb ks-script-pFgjr6 vmware-root_6295-1681199997 yum.log
aa b.bb systemd-private-2aca9791e43c450ea127728157b3da67-chronyd.service-ZtaKhA vmware-root_6313-1681199964
批量创建后缀相同的文件
[root@tzc tmp]# touch {1..10}.text
[root@tzc tmp]# ls
10.text 2.text 4.text 6.text 8.text a a.bb ks-script-pFgjr6 vmware-root_6295-1681199997 yum.log
1.text 3.text 5.text 7.text 9.text aa b.bb systemd-private-2aca9791e43c450ea127728157b3da67-chronyd.service-ZtaKhA vmware-root_6313-1681199964
删除文件及目录
[root@tzc tmp]# ls
a a.bb ks-script-pFgjr6 vmware-root_6295-1681199997 yum.log
aa b.bb systemd-private-2aca9791e43c450ea127728157b3da67-chronyd.service-ZtaKhA vmware-root_6313-1681199964
[root@tzc tmp]# \rm a.bb
rm: 无法删除"a.bb": 是一个目录
[root@tzc tmp]# \rm a
[root@tzc tmp]# rm -f a.bb
rm: 无法删除"a.bb": 是一个目录
[root@tzc tmp]# rm -r a.bb
rm:是否删除目录 "a.bb"?y
cat 查看小文件信息
[root@tzc tmp]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
more 分页浏览,看完自动退出
less 分页反复浏览,按q退出
head 从头看起
tail 从尾看起
文件查看命令
cat
适合查看短文件
head
从文件头部看起,默认前10行
tail
从文件尾部看起,默认后10行
-f
more
分页浏览,看完自动退出
less
分页反复浏览,按’q’退出
命令帮助
–help
帮助外部命令
help
帮助内部命令
man
手册页
info
信息页
文件下载命令
wget //文件下载
-O //指定下载地址,更改名称
-T //超时时间
-q //安静下载(关闭wget输出)
--spider //网络爬虫
[root@tzc ~]# yum install -y wget
[root@tzc ~]# yum install -y lrzsz
lrzsz提供xshell远程软件实现服务器和windows主机之间文件传输
rz 将服务器的文件传至windows(下载)
sz 将windows的文件传至服务器(上传)
管道
cmd1 | cmd2 | cmd3
sort -r 将获得的信息进行降序排列
[root@tzc ~]# grep ‘Accept’ /var/log/secure | awk ‘{print $8}’ | uniq -c | sort -r
命令解释:grep 找到含Failed的信息行 后面是文件地址 awk是选择第几列 $(NF-3)表示倒数第三列
sort -r表示倒叙排序只有一位数的排序0-9 sort -nr表示第一列的倒序排序不限位数
[root@tzc ~]# grep ‘Failed’ /root/secure.log | awk ‘{print $(NF-3)}’ | uniq -c | sort -nr
数据量较大的处理 去重首先要排序 最后是查看前十个数据行
[root@tzc ~]# awk ‘{print $1}’ /root/nginx.log | sort |uniq -c |sort -rn |head -10
4156 47.92.239.154
1305 47.101.50.252
1096 120.244.106.104
827 125.106.191.210
767 192.227.86.114
653 64.71.78.13
620 192.99.225.97
581 185.104.106.72
580 139.99.195.212
516 223.72.73.169
案例1:获取当前登录用户的数量
分析:
查看用户登录信息的命令
who
统计命令
wc
word count
-l 统计行数
答案:
[root@tzc ~]# who | wc -l
案例2:获取当前系统根分区使用情况
分析:
查看分区使用情况的命令
df
分隔字段
awk -F’’ ‘{print $n}’
答案:
[root@tzc ~]# df / | tail -1 | awk ‘{print $5}’ | awk -F’%’ ‘{print $1}’
案例3:获取当前系统登录成功的IP地址top10
分析:
1.需要查看日志/var/log/secure
[root@tzc ~]# grep ‘Accept’ /var/log/secure
2.过滤出ip
[root@tzc ~]# grep ‘Accept’ secure.log | awk ‘{print $11}’
3.排序,去重
排序命令
sort
-r 降序
-n 以数字的根式
去重命令
uniq
-c 去重,并统计重复出现的次数
[root@tzc ~]# grep ‘Accept’ secure.log | awk ‘{print $11}’ | sort | uniq -c | sort -r | head
案例4:获取当前系统登录失败的IP地址top10
[root@tzc ~]# grep ‘Fail’ secure.log | awk ‘{print $(NF-3)}’ | sort | uniq -c | sort -rn | head
案例5:获取访问网站客户ip top10
[root@tzc ~]# awk ‘{print $1}’ nginx.log | sort | uniq -c | sort -rn | head -5
输入输出重定向
标准输入 stdin 0
标准输出 stdout
正确1
错误2
输入重定向 <
正确输出重定向 > >>
错误输出重定向 2> 2>>
混合输出重定向 &>
[root@tzc ~]# ls
a anaconda-ks.cfg c d e nginx.log secure.log
[root@tzc ~]# ls /root/nginx.log
/root/nginx.log
[root@tzc ~]# ls /root/nginx.log >1.txt
[root@tzc ~]# cat 1.txt
/root/nginx.log
[root@tzc ~]# ls /root/nginx.log a
a /root/nginx.log
[root@tzc ~]# ls /root/nginx.log w
ls: 无法访问w: 没有那个文件或目录
/root/nginx.log
[root@tzc ~]# ls /root/w 2>2.txt
[root@tzc ~]# cat 2.txt
ls: 无法访问/root/w: 没有那个文件或目录
[root@tzc ~]# ls /root/nginx.log w &>3.txt
[root@tzc ~]# cat 3.txt
ls: 无法访问w: 没有那个文件或目录
/root/nginx.log
多行输出重定向
[root@tzc ~]# echo 'hellow
> hellow
> hellow' >4.txt
[root@tzc ~]# cat 4.txt
hellow
hellow
hellow
1
2
3
4
5
6
7
创建文件并写入
[root@tzc ~]# cat >6.txt <<END //输入END时候结束
> aaaa
> aaaa
> aaaa
> bbbb
> end
> END
[root@tzc ~]# cat 6.txt
aaaa
aaaa
aaaa
bbbb
end
>与>>之间的取别 >是输入覆盖 >>是追加输入
[root@tzc ~]# cat 4.txt
hellow
hellow
hellow
[root@tzc ~]# echo 1>4.txt
[root@tzc ~]# cat 4.txt
[root@tzc ~]# echo hellow>4.txt
[root@tzc ~]# cat 4.txt
hellow
[root@tzc ~]# cat 4.txt
helow world
[root@tzc ~]# echo who are you?>>4.txt
[root@tzc ~]# cat 4.txt
helow world
who are you?
---------------------
应用1:创建文件hello.txt,并写入内容hello
[root@tzc ~]# echo hello > hello.txt
应用2:创建文件hello.txt,并写入三行hello
解法一:
[root@tzc ~]# echo 'hello
> hello
> hello' > hello.txt
解法二:
[root@tzc ~]# cat > bbb.txt <<end
bbb
bbb
bbb
end
脚本案例:
1.批量创建用户,并配置默认密码
分析:
创建用户
useradd
修改密码
echo 123456 |passwd --stdin user
[root@tzc ~]# yum install -y vim
案例(1)批量创建相同前缀的用户
[root@tzc ~]#!/bin/bash
i=1
while [ $i -le 5 ]
do
useradd user$i
echo 123456 | passwd --stdin user$i &> /dev/null
echo "create user$i success"
let i++
done
案例(2)批量创建没管理的用户
zhangsan,lisi,wangwu
分析:
1)先创建用户列表文件
[root@tzc ~]# echo 'zhangsan
lisi
wangwu' > user.list
2)使用for循环实现
[root@tzc ~]#!/bin/bash
for user in $(cat user.list)
do
useradd $user
echo 123456 | passwd --stdin $user &> /dev/null
echo "create $user success"
done