find的用法
tar 的用法
gzip 用法
grep which whereis 用法
软连接 ln -s
硬连接 ln
grep也可以查看命令
grep 'root' /etc/passwd #从/etc/passwd文件中过滤root字段
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
which查找命令
which ls
alias ls='ls --color=auto'
/usr/bin/ls
whereis 查询命令和配置文件的位置
whereis rpm
rpm: /usr/bin/rpm /usr/lib/rpm /etc/rpm /usr/share/man/man8/rpm.8.gz
语法:
# find 路径 条件 跟条件相关的操作符 [-exec 动作]
路径:
1.默认不写路径时查找的是当前路径.
2.加路径。
条件:
1.指定的名称 -name
2.文件类型 -type
3.权限
4.时间
find / -name *.txt # 从根目录开始查找所有以 .txt 结尾的文件
# * 是一个通配符,需要熟练使用
find / -size -5M # 从根目录开始查找所有小于 5M 的文件
find / -size +5M # 从根目录开始查找所有大于 5M 的文件
find / -size 5M # 查找所有等于 5M 的文件
find / -size +5M -a -size -10M # 从根目录开始查找所有大于 5M 的文件 并且小于 10M 的文件
find / -size -1M -o -size +80M #查找/下面小于1M或者大于80M的文件
-a and
-o or
按时间找(atime,mtime,ctime)
-atime = access访问时间
-mtime = modify改变时间 内容修改时间会改变
-ctime = change修改时间 属性修改时间会改变
-amin #分钟
-mmin
-cmin
find / -atime +5 # 查看访问时间 5天 之前的
find / -ctime +5 # 查看属性修改 5天 之前的
find / -mtime +5 # 查看内容修改 5天 之前的
# 当然 这些也可以配合 -a -o 一起使用
find / -amin +1 # 查看访问时间在1分钟之前的
find / -mmin -2 # 修改内容时间在2分钟之内
find / -type l # 查看根目录下的软硬连接文件
find / -type f # 查看根目录下的普通文件
find / -type d # 查看根目录下的目录类型文件
find / -type b # 查看根目录下的设备文件
find . -perm 644 #.是当前目录 精确查找644
find /usr/bin -perm -4000 #包含set uid
find /usr/bin -perm -2000 #包含set gid
find /usr/bin -perm -1000 #包含sticky
find /top -name *.txt -exec cp -rf {} ./b \; # 将 top 目录下所有的 .txt 文件移动到茨木了下的b文件夹中
find /top -name *.txt | grep -i cp -rf {} ./b # 效果同上
-exec:参数是一个一个传递的,传递一个参数执行一次命令。
xargs:将前一个命令的标准输出传递给下一个命令,作为它的参数转换成下一个命令的参数列表。
===============
1、exec 每处理一个文件或者目录,它都需要启动一次命令,效率不好;
2、exec 格式麻烦,必须用 {} 做文件的代位符,必须用 \来转义; 作为命令的结束符,书写不便。
3、xargs不能操作文件名有空格的文件;
综上,如果要使用的命令支持一次处理多个文件,并且也知道这些文件里没有带空格的文件,那么使用 xargs比较方便; 否则,就要用 exec了。
find /top -name *.txt # 查询top目录下所有以 .txt 结尾的文件
find /top ! -name *.txt # 查询top目录下所有不以 .txt 结尾的文件
结尾:.tar.gz .tar.bz2 .zip
打包
语法:
tar cvf xxxx.tar filename 被打包的文件 ...
c :create 创建
v :verbose 详细信息
f :file 指定文件
解包
tar xvf filename.tar [-C /root/Desktop]
x: extract 解压缩 解包
-C: 指定解包路径
一般来说 一个tar就可以解决所有的事情了,不需要其他的工具
压缩
tar cvzf file.tar.gz 源文件
tar cvjf file.tar.bz2 源文件
tar cvJf file.tar.xz 源文件
z:表示gz压缩
j:表示bz2压缩
J:表示xz压缩
解压
tar xvzf file.tar.gz [-C 目标解压路径]
tar xvjf file.tar.bz2 [-C 目标解压路径]
tar xvJf file.tar.xz [-C 目标解压路径]
# 压缩
# 语法:
# 压缩:
#gzip 源文件 #格式 file.gz结尾
#bzip2 源文件 #格式 file.bz2结尾
# 解压语法:
#gunzip 解压文件
#bunzip2 解压文件
#gzip -d 解压文件
#bzip2 -d 解压文件
-d:dicompress 解压缩
mkdir `date +%F`-upload
touch file-`date +%F`.txt
# 可以根据这个写一个脚本 每天可以自动生成一个对应的文件等等
文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的"软链接"(soft link)或者"符号链接(symbolic link)。
这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:“No such file or directory”。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会因此发生变化。
第一种情况-普通文件
echo "你好呀" > hello.txt
ln -s hello.txt b.txt # 这个的话 b.txt 是 hello.txt 文件的软连接 它们的inode 号虽然不同,但是 b.txt 依赖于 hello.txt 文件而存在的
cat hello.txt
你好呀
ll -i hello.txt b.txt
8410297 lrwxrwxrwx. 1 root root 9 9月 8 20:01 b.txt -> hello.txt # 文件类型有个 l 表示连接 后面也有一个 b.txt -> hello.txt
8410273 -rw-r--r--. 1 root root 22 9月 8 20:00 hello.txt
# 第一位是 inode号 是不一样的
# 删除 b.txt 文件是对 hello.txt 文件是没有影响的
rm -rf b.txt
cat hello.txt
你好呀
# 但是删除 hello.txt 文件是有影响的
rm -rf hello.txt
cat b.txt
cat: b.txt: 没有那个文件或目录
第二种情况 文件夹
mkdir w
echo '你好呀' > ./w/hello.txt
ln -s w b
ll
lrwxrwxrwx. 1 root root 1 9月 8 20:21 b -> w
drwxr-xr-x. 2 root root 23 9月 8 20:19 w
# 可以看到b文件是w文件的软连接
cd b
ls
hello.txt
cat hello.txt
你好呀
# 当然删除文件的时候也根上面那个案例是一样的
一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。
这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)。
最重要的是,硬连接不能对文件夹进行硬连接,只能对普通文件进行硬连接
echo '你好呀' > hello.txt
ln hello.txt b.txt # 创建好硬连接,它们的 inode号是一样的
ll -i
8410273 -rw-r--r--. 2 root root 10 9月 8 20:26 b.txt
8410273 -rw-r--r--. 2 root root 10 9月 8 20:26 hello.txt
stat hello.txt
文件:hello.txt
大小:10 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:8410273 硬链接:2
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:default_t:s0
最近访问:2023-09-08 20:26:04.250710399 +0800
最近更改:2023-09-08 20:26:04.250710399 +0800
最近改动:2023-09-08 20:26:06.140597110 +0800
创建时间:2023-09-08 20:26:04.250710399 +0800
# 可以看到上面的硬连接数为 2 一个是 hello.txt 本身 一个是 b.txt
# 因为它们都指向的同一个inode号 所以说 修改其中一个文件 其他的文件都会修改,
# 它们之中,无论删除哪一个文件都对其他文件都没有影响 只是少一个与inode号相连接的数量
# 当这个值减到0,表明没有文件名指向这个inode,系统就会回收这个inode号码,以及其所对应block区域。
有一瞬间很希望耳机里的音乐化变成翻涌的浪花或者雷鸣淹没我