Day11 课堂笔记
1. 文件类型详细介绍
第二列第一个字符:文件类型
一切皆文件。Windows用扩展名区分文件,Linux里有自己的文件类型,Linux的里扩展名,兼容windows方便区分文件。
1.1 "-" 普通文件(regular file)
图片 视频 文档 都是文件
创建:touch vim echo cat
拷贝、移动:cp、mv
删除:rm
三种类型:
a.纯文本文件:字符数字等内容
b.数据文件:存放命令收集的信息。
c.二进制文件:可执行的命令。
[root@oldboyedu ~]# file d.txt
d.txt: ASCII text
[root@oldboyedu ~]# file /var/log/lastlog
/var/log/lastlog: data
[root@oldboyedu ~]# file /bin/cat
/bin/cat: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=8ac8b57ae50762a4a0480486839107e87b3c284d, stripped
1.2 d 目录(directory)
生成: mkdir -p
复制:cp -a/-r
删除: rm -fr
区分:
a.开头为d
b.颜色为蓝色
c.ls -p,目录结尾加斜线,斜线结尾
1.3 符号链接(symbolic link)文件,软链接(soft link)
快捷方式:
ln -s
rm
1.4 字符(character)/块(block)设备文件
以c开头的就是字符设备,猫等串口设备
以b开头的就是块设备 硬盘、光驱等都属于块设备
mknod
1.5 套接口(socket)文件
以s开头
.sock文件也是一类特殊的文件,这类文件通常用在网络之间,进行数据连接,如:我们可以启动一个程序来监听客户端的请求,客户端可以通过套接字来进行数据通信。
用于进程之间通信的文件。
2. 文件及目录查找命令
- file:显示文件的类型
[root@oldboyedu /data]# file oldboy.txt oldboy.txt_soft_link
oldboy.txt: ASCII text
oldboy.txt_soft_link: symbolic link to `oldboy.txt'
- which:显示命令的全路径
[root@oldboyedu ~]# which cp
alias cp='cp -i'
/usr/bin/cp
[root@oldboyedu ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@oldboyedu ~]# which ip
/usr/sbin/ip
重点:
PATH 变量作用
命令行执行命令会从PATH 对应的路径中查找命令,
PATH 对应的路径中没有这个命令就会报command not found
[root@oldboyedu /data]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
- whereis:显示命令及其相关文件全路径
常用参数:
- -b:查看可执行文件
- -m:查找man帮助文件
- -s:查找源代码文件
[root@oldboyedu ~]# whereis -b cp
cp: /usr/bin/cp
- locate:快速定位文件路径
查找文件路径,是从数据库A(/var/lib/mlocate/mlocate.db)里查询
更新A数据库用updatedb命令
C7默认没安装,不要学了
查看命令对应的软件包
[root@oldboyedu ~]#yum provides locate
- updatedb:更新mlocate数据库
- find:查找目录下的文件
查找原理:磁盘遍历,速度慢。
按文件名查找:
[root@oldboyedu ~]# find ~ -name "oldboy.txt"
/root/oldboy.txt
按文件类型查找-type:
[root@oldboyedu ~]# find / -type f -name "oldboy*"
-type c
File is of type c:
b block (buffered) special
c character (unbuffered) special
d directory
p named pipe (FIFO)
f regular file
l symbolic link; this is never true if the -L option or the -follow
find / -type d -name "oldboy*"
这里的类型和名字是取交集,两条件都满足。默认是交集,相当于有个-a
如果取并集即或者用-o分割查找的项
find / -type d -o -name "oldboy*"
``
了解:
-a and 并且
-o or 或者
! 取反
[root@oldboyedu /data]# touch oldboy{1..10}.txt
[root@oldboyedu /data]# ls
oldboy10.txt oldboy2.txt oldboy4.txt oldboy6.txt oldboy8.txt
oldboy1.txt oldboy3.txt oldboy5.txt oldboy7.txt oldboy9.txt
[root@oldboyedu /data]# find /data -type f
/data/oldboy1.txt
/data/oldboy2.txt
/data/oldboy3.txt
/data/oldboy4.txt
/data/oldboy5.txt
/data/oldboy6.txt
/data/oldboy7.txt
/data/oldboy8.txt
/data/oldboy9.txt
/data/oldboy10.txt
[root@oldboyedu /data]# find /data ! -type f
/data
[root@oldboyedu /data]# mkdir {a..d}
[root@oldboyedu /data]# find /data ! -type f
/data
/data/a
/data/b
/data/c
/data/d
- xargs:将标准输入转换成命令行参数
常用参数:
- -n 指定每行最大参数量n,默认以空格分隔。
- -d 自定义分隔符
- -i 以{}替代前面的结果
[root@oldboyedu /data]# echo {1..10} >test.txt
[root@oldboyedu /data]# cat test.txt
1 2 3 4 5 6 7 8 9 10
[root@oldboyedu /data]# xargs -n 3 <test.txt
1 2 3
4 5 6
7 8 9
10
[root@oldboyedu /data]# xargs -n 4 <test.txt
1 2 3 4
5 6 7 8
9 10
[root@oldboyedu /data]# xargs -n 5 <test.txt
1 2 3 4 5
6 7 8 9 10
[root@oldboyedu /data]# xargs -d"." -n2 <test.txt
a b
c d
[root@oldboyedu /data]# xargs -n2 <test.txt
a.b.c.d
[root@oldboyedu /data]# cat test.txt
a.b.c.d
[root@oldboyedu /data]# echo "Oldboy" >test.txt
[root@oldboyedu /data]# echo "Oldgirl" >>test.txt
[root@oldboyedu /data]# echo "Oldboedu" >>test.txt
[root@oldboyedu /data]# echo "Oldboyedu" >>test.txt
[root@oldboyedu /data]# cat test.txt
Oldboy
Oldgirl
Oldboedu
Oldboyedu
[root@oldboyedu /data]# cat test.txt|grep "boy"
Oldboy
Oldboyedu
[root@oldboyedu /data]# grep "boy" test.txt
Oldboy
Oldboyedu
[root@oldboyedu /data]# find /data -type f|xargs rm -f
[root@oldboyedu /data]# ll
total 0
drwxr-xr-x. 2 root root 6 Mar 14 10:40 a
drwxr-xr-x. 2 root root 6 Mar 14 10:40 b
drwxr-xr-x. 2 root root 6 Mar 14 10:40 c
drwxr-xr-x. 2 root root 6 Mar 14 10:40 d
[root@oldboyedu /data]# touch oldboy{1..5}.txt
[root@oldboyedu /data]# ls
a b c d oldboy1.txt oldboy2.txt oldboy3.txt oldboy4.txt oldboy5.txt
[root@oldboyedu /data]# find /data -type f -exec rm -f {} \;
[root@oldboyedu /data]# ls
a b c d
find /data -type f -exec rm -f {} \;
相当于
rm -f oldboy1.txt
rm -f oldboy2.txt
rm -f oldboy3.txt
效率低。
find /data -type f|xargs rm -f
只是一条命令
rm -f oldboy1.txt oldboy2.txt oldboy3.txt
效率高
find /data -type f|rm -f
相当于:
find /data -type f
rm -f
- data:显示与设置系统时间
[root@oldboyedu /data]# date -s "2020/10/1 00:00:00"
Thu Oct 1 00:00:00 CST 2020
[root@oldboyedu /data]# date
Thu Oct 1 00:00:03 CST 2020
[root@oldboyedu /data]# clock -w
[root@oldboyedu /data]# date +%F
2020-10-01
[root@oldboyedu /data]# date +%Y #year年
2020
[root@oldboyedu /data]# date +%y #year年
20
[root@oldboyedu /data]# date +%m #month 月
10
[root@oldboyedu /data]# date +%d #day日
01
[root@oldboyedu /data]# date +%H #hour时
00
[root@oldboyedu /data]# date +%M #minute分
02
[root@oldboyedu /data]# date +%S #second秒
46
[root@oldboyedu /data]# date +%Y-%m-%d
2020-10-01
[root@oldboyedu /data]# date +%F
2020-10-01
[root@oldboyedu /data]# date +%H:%M:%S
00:04:29
[root@oldboyedu /data]# date
Thu Oct 1 00:04:38 CST 2020
[root@oldboyedu /data]# date +%F -d "-1day"
2020-09-30
[root@oldboyedu /data]# date +%F -d "+1day"
2020-10-02
[root@oldboyedu /data]# date +%F -d "+1month"
2020-11-01
[root@oldboyedu /data]# date +%F -d "+1Y"
date: invalid date ‘+1Y’
[root@oldboyedu /data]# date +%F -d "+1year"
2021-10-01
- 过去
+ 未来
[root@oldboyedu /data]# date +"%Y-%m-%d %H:%M:%S"
2020-10-01 00:09:36
[root@oldboyedu /data]# date +"%F %T"
2020-10-01 00:09:39
- tar:打包压缩命令
打包集合参数zcvf:v可以不加
压缩包名字:data.tar.gz #tar表示打包,gz表示gzip格式压缩。
例子:
[root@oldboyedu ~]# mkdir /data
[root@oldboyedu ~]# cd /data
[root@oldboyedu /data]# touch {1..5}.txt
[root@oldboyedu /data]# ls
1.txt 2.txt 3.txt 4.txt 5.txt
[root@oldboyedu /data]# cd ..
[root@oldboyedu /]# tar zcvf /opt/data.tar.gz ./data
./data/
./data/1.txt
./data/2.txt
./data/3.txt
./data/4.txt
./data/5.txt
查看压缩包里的内容:-t
[root@oldboyedu /]# tar tf /opt/data.tar.gz
./data/
./data/1.txt
./data/2.txt
./data/3.txt
./data/4.txt
./data/5.txt
解压:
[root@oldboyedu /opt]# tar zxvf data.tar.gz
./data/
./data/1.txt
./data/2.txt
./data/3.txt
./data/4.txt
./data/5.txt
[root@oldboyedu /opt]# ls
data data.tar.gz
[root@oldboyedu /opt]# ls data
1.txt 2.txt 3.txt 4.txt 5.txt
[root@oldboyedu /opt]# tar xf data.tar.gz
打包时指定目录参数:-C
[root@oldboyedu /opt]# tar xf data.tar.gz -C /tmp/
[root@oldboyedu /opt]# ls /tmp/data
1.txt 2.txt 3.txt 4.txt 5.txt
排除打包:
[root@oldboyedu ~]# cd /data
[root@oldboyedu /data]# ls
1.txt 2.txt 3.txt 4.txt 5.txt
[root@oldboyedu /data]# tar zcvf oldboy.tar.gz ./* --exclude=4.txt --exclude=5.txt
./1.txt
./2.txt
./3.txt
[root@oldboyedu /data]# tar tf oldboy.tar.gz
./1.txt
./2.txt
./3.txt
[root@oldboyedu /data]# rm -f oldboy.tar.gz
[root@oldboyedu /data]# tar zcvf oldboy.tar.gz ./* --exclude={4,5}.txt
./1.txt
./2.txt
./3.txt
[root@oldboyedu /data]# tar zcvf oldboy.tar.gz ./* --exclude={1..4}.txt
./5.txt
./oldboy.tar.gz
[root@oldboyedu /data]# cat paichu.txt
1.txt
2.txt
3.txt
[root@oldboyedu /data]# tar zcvfX oldboy.tar.gz paichu.txt ./*
./4.txt
./5.txt
./oldboy.tar.gz
./paichu.txt
网友评论