linux基础文件管理

文件管理命令
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




发布了68 篇原创文章 · 获赞 30 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43254438/article/details/92794822