一名菜鸟学习编程技术,记录所学知识并分享给大家,希望大家多多支持。
今天来写一篇关于学习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”