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

今天来写一篇关于学习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”