Linux基础命令学习——文件打包压缩和搜索命令(四)

一名菜鸟学习编程技术,记录所学知识并分享给大家,希望大家多多支持。

今天来写一篇关于学习Linux基础命令——文件打包压缩和搜索命令的博文,也实践了很多,总结给大家一起学习!

一、tar命令

用于对文件进行打包压缩或解压;格式:tar [选项] 档案文件 文件列表

  • -c:生成档案文件
  • -v:列出归档解档的详细过程
  • -f:指定档案文件名称
  • -r:将文件追加到档案文件末尾
  • -z:以gzip格式压缩或解压缩文件
  • -j:以bzip格式压缩或解压缩文件
  • -t:查看内容
  • -x:解开档案文件
    例:
tar -cvf /tmp/etc.tar /etc  #将/etc目录下的文件导报到/tmp目录下并命名为etc.tar,仅打包,不压缩
tar -zcvf /tmp/etc.tar.gz /etc #/etc目录下的文件打包到/tmp目录下并命名为etc.tar.gz,打包后以gzip的格式进行压缩
tar -jcvf /tmp/etc.tar.bz2 /etc ##/etc目录下的文件打包到/tmp目录下并命名为etc.tar.bz2,打包后以bzip的格式进行压缩

题目:

1、将/tmp/etc.tar.gz文件解压缩在/usr/local/src下
cd /usr/local/src
tar -zcvf /tmp/etc.tar.gz

二、搜索命令

查找文件一般有以下几个命令:

  • which:查看可执行文件的位置
  • whereis:查看可执行文件的位置及相关文件
  • locate:配合数据库缓存,快速查看文件位置
  • find:查找相关文件
  • grep:过滤匹配,它是一个文件搜索工具

find命令

用来在指定目录下查找文件;

  • -name:按文件名查找
  • -size n:按文件大小查找
  • -perm:按权限查找文件
  • -user:按照文件属主来查找文件
  • -group:按照文件所属的组来查找文件
  • -mtime n:查找n天内修改内容的文件
  • -mmin n:查找n分钟内修改内容的文件
  • -type:查找某一类型的文件
-type  查找某一类型的文件
b - 块设备文件
d - 目录
c - 字符设备文件
p - 管道文件
l - 符号链接文件
f - 普通文件

例:

find . -size +9M | xargs ls -lh  #查找当前目录下大于9M的文件详细信息
 find . -type f -name "*.log" -size +1M -exec cp -av {} /tmp \;  #查找当前目录下以 .log 结尾且大于5M的文件,并复制到/tmp目录下
find /var -mtime +3 -mtime -5 :在/var下查找更改时间在三天到五天的文件
find . -mmin +1 -mmin -3 :查找当前文件夹下1分钟前3分钟内修改的文件

grep命令

用于在文本中执行关键词搜索,并显示匹配的结果,与正则表达式的使用方法相关;
格式:grep [参数] 要查找到的字符串

  • -v:反向选择,仅列出没有关键词的行
  • -c:仅显示找到的行数
  • -i:不区分大小写
  • -b:将可执行的文件(binary)当做文本文件(text)搜索
  • -n:每个匹配的行只按照相对的行号显示
  • ^linux:以linux开头的行
  • $php:以php结尾的行
  • .:匹配任意单字符
  • ^$:空行
  • .+:匹配任意多个字符
  • .*:匹配0个或多个字符(可有可无)
  • [0-9a-z]:匹配中括号内任意一个字符
  • [abc]:表示匹配一个字符,这个字符必须是abc中的一个。
  • (linux)+:出现多次Linux单词
  • (web){2}:web出现两次以上
  • \:屏蔽转义
  • |:或者的意思

例:
grep的常用操作:

grep -n 'root' /etc/passwd  #查找/etc/passwd下包含 root字符串的文件
grep -Ev "root|nologin" /etc/passwd  #查找不包含root和nologin关键字的行
grep "root" /etc/{passwd,shadow}  #查找/etc/passwd和/etc/shadow文件中包含root关键字的行
echo "a bc de" |xargs -n1 |grep '^b' :匹配以字符串"b"开头的行
grep -c root /etc/passwd   #统计/etc/passwd文件中包含root字符串行的数量
grep -E -v "^$|^#" /etc/nginx/nginx.conf   #去除空号和以#号开头的行
grep -r 'sshd' /etc --include *.conf :递归搜索/etc 目录下包含 "sshd"字符串 的 conf 后缀文件

题目

1、在/etc/passwd文件中找到root用户的信息,并显示行号
grep -n root /etc/passwd    #不进行筛选,列出与root相关的用户信息
grep -n ^root /etc/passwd   #筛选出以root开头的行
2、查看passwd中包括nologin或root的数据
grep -n “root\|nologin” /etc/passwd 
3、在/etc/passwd文件中找到非nologin用户的信息,并显示行号
grep -nv “root\|nologin” /etc/passwd    #取反操作
4、找出/etc/passwd文件中同时含有root和nologin关键字的用户信息
grep -n “root|nologin” /etc/passwd   

四、重定向和管道

重定向和操作符:

  • 输入重定向:将指定的文件导入命令,而不是通过键盘输入
  • 输出重定向:将命令的正常输出结果保存到指定的文件中,而不是直接显示在显示器的屏幕上
  • 重定向的输出使用">"、">>"(>的方向就是数据流的方向)

语法:

> 文件名 	`#表示将标准输出的内容,写到后面的文件中,如果此文件名已经存在,将会覆盖原文件中的内容`
>> 文件名  `#表示将标准输出的内容,追加到后面的文件中。若重定向的输出的文件不存在,则会新建该文件`

题目

1、查看当前主机的cpu的类型保存到cpu.txt文件中(而不是直接显示到屏幕上)
cat /proc/cpuinfo >cpu.txt
find cpu*
cat cpu
2、将内核的版本信息追加到cpu.txt
uname -a>>cpu.txt
3、清空cpu.txt文件
>cpu.txt

管道符命令

作用:将左边的内容作为输入,让右边的命令接受并处理,可以连接多条命令使用
左边的结果会作为右边的输入值
题目:

1、将磁盘使用的信息写入disk.txt文件的同时输出到屏幕上(磁盘使用信息:df -h)
df -h| tee disk.txt
cat disk.txt
多重管道:
2、查看sshd进程有没有被启用?
ps -aux| grep “sshd”| grep -v “grep”
发布了14 篇原创文章 · 获赞 95 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44723773/article/details/105220341