目录
1)案例08—find找出/gq/find/ 以.txt结尾的文件显示详细信息❣️❣️❣️
1 修仙之路-筑基期
- 有一天工作突然穿越了,修仙大陆,开始锻体
- 四处走走,看看四周什么情况, ==cd(进入某个目录)==
- 查看周围的环境, ==ls(列表显示目录内容)==
- 突然发现手中有手机,打开手机定位查看所在位置,==pwd(显示自己所在目录)==
- 自己搭建房子,==mkdir(创建目录),查看房子ls(查看目录)==
- 置办家具,==touch(创建文件)==,随着创建,发现修为提升了
- 外出的时候发现有好东西💴,ls看了下,决定搬回去==mv(移动)==
- 外出打猎的时候发现一座别人建的城堡,非常壮丽,于是决定自己模仿建造一个房子🏠==cp(复制,拷贝)==
- 一天找到一个峡谷大喊,我要buffer,==echo(输出信息)==,回家后自己开始写日记 ==vi(编辑与修改文件)==
- 修为提升的不错,想试试看,放个大,试试威力,结果家没了 ==rm(删除)== ,突然发现是梦醒了
2 命令详解
2.1 cd 与pwd
命令 | 说明 |
cd | change directory进入到某个目录 |
pwd | print working directory现在当前所在位置(绝对路径) |
#案例01:进入/tmp/目录然后查看所在目录
进入目录 : cd
查看所在目录: pwd
[root@rgq ~]# cd /tmp/
[root@rgq tmp]# pwd /tmp
[root@rgq tmp]#
#案例02: 进入/etc/sysconfig/network-scripts/目录然后查看所在目录
[root@rgq tmp]#cd/etc/sysconfig/network-scripts/
[root@rgq network-scripts]# pwd /etc/sysconfig/network-scripts
温馨提示:操作命令和目录的时候可以使用tab键,tab键用于自动补全命令或目录
cd其他功能 | 说明 |
cd ~ | 回到家目录 |
cd | 回到家目录 |
cd .. | 进入上级目录 |
cd - | 返回会=上次所在目录,cd --是cd 的选项 |
cd . | 进入当前目录(未来一般与复制,移动一起用) |
#案例03: 假如我们当前在一个比较深的目录中,快速回到家目录.
cd /etc/sysconfig/network-scripts/
cd ~
操作记录:
[root@rgq network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@rgq network-scripts]# cd ~
[root@rgq ~]# pwd
/root
#案例04 假设我们在一个比较深的目录中,进入上一层目录
cd /etc/sysconfig/network-scripts/
cd ..
温馨提示:如果想向上多层可以用cd ../../形式
[root@rgq ~]# cd /etc/sysconfig/network-scripts/
[root@orgq network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@-rgq network-scripts]# cd ../..
[root@rgq etc]# pwd
/etc
2.2 mkdir 创建目录
- mk make dir directory
mkdir创建目录 | 说明 |
选项 -p | 创建多层目录 |
#案例06 创建/rgq目录
mkdir /rgq
cd /rgq/
pwd
#案例07 创建多层目录 /rgq/a/b/c/d/e/f
[root@rgq-rgq rgq]# mkdir -pv /rgq/a/b/c/d/e/f
mkdir: 已创建目录 "/rgq/a"
mkdir: 已创建目录 "/rgq/a/b"
mkdir: 已创建目录 "/rgq/a/b/c"
mkdir: 已创建目录 "/rgq/a/b/c/d"
mkdir: 已创建目录 "/rgq/a/b/c/d/e"
mkdir: 已创建目录 "/rgq/a/b/c/d/e/f"
[root@rgq-rgq rgq]# cd /rgq/a/b/c/d/e/f/
[root@rgq-rgq f]# pwd
/rgq/a/b/c/d/e/f
2.3 touch创建文件
#案例08 在/Gq/目录下创建Gq.txt 创
建/Gq/Gq.txt
创建目录-已经完成
创建文件-进行中
[root@Gq-rgq ~]# cd /Gq/
[root@Gq-rgq Gq]# touch Gq.txt oldgril.txt
[root@Gq-rgq Gq]# ls
a Gq.txt oldgril.txt
#案例09 在/Gq下面创建lidao.txt oldgirl.txt 2个文件
绝对路径写法
touch /Gq/Gq.txt /Gq/oldgirl.txt
相对路径写法
先进入,然后操作.
cd /Gq
touch Gq.txt oldgirl.txt
2.4 ls查看目录内容
- ls list列表
ls命令选项 | |
-l | long以长格式显示(显示详细信息,比如文件时间,大小,所有者) |
-t | time按照修改时间排序 |
-r | 逆序排序,一般-rt一起使用 |
-h | 以人类可读形式显示大小 |
#案例10 核心 查看 /etc目录下面的内容并且显示详细信息
ls /etc
ls -l /etc/
简写为ll /etc/
#案例11 查看/etc目录按照时间排序逆序排序(一个目录中文件太多了,找出
最近的文件)
ls -lrt /etc/
ll -rt /etc/
#案例12 核心 以人类可读形式显示大小
ls -lh
温馨提示:计算机中的单位:字节byte 1个英文字符1字节
1KB=1024bytes 1MB=1024KB=1024^2bytes 1GB=1024MB=1024^3bytes 1TB=1024GB=1024^4bytes 1PB=1024TB=1024^5bytes 1EB 1ZB
2.5 mv move移动
mv | 从哪里来 | |
移动 | mv | 目标(目录) |
改名 | mv | 文件或目录 |
#案例13 移动/Gq/Gq.txt 到/tmp下面
[root@Gq-rgq etc]# mv /Gq/Gq.txt /tmp/
[root@Gq-rgq etc]# ls -l /tmp/
总用量 4
-rwx------. 1 root root 836 7月 14 00:55 ks-script-As0oss
-rw-r--r--. 1 root root 0 7月 15 11:41 Gq.txt
drwx------. 3 root root 17 7月 15 08:01 systemd-private-186ea7b307ba4d4b8d90373ee0ad543d-chronyd.service-iSZI53
drwx------. 3 root root 17 7月 14 00:56 systemd-private-2dbd0677e10d45988c848eb92b77cb25-chronyd.service-H8nipK
drwx------. 3 root root 17 7月 14 14:45 systemd-private-46afbb18230640c68fc8357d0ebcf4db-chronyd.service-PYZOEU
drwx------. 3 root root 17 7月 14 08:26 systemd-private-679797a9e0134edd991e2f5b30c5798c-chronyd.service-o3DN9R
drwx------. 3 root root 17 7月 13 18:53 systemd-private-c152a49520a24079a7a7fd94a0c21aec-chronyd.service-XT52ZG
drwx------. 2 root root 6 7月 14 00:56 vmware-root_1007-4282171056
drwx------. 2 root root 6 7月 14 14:45 vmware-root_939-4022308693
drwx------. 2 root root 6 7月 14 14:13 vmware-root_943-4013723344
drwx------. 2 root root 6 7月 13 18:53 vmware-root_949-4021784396
drwx------. 2 root root 6 7月 14 08:26 vmware-root_950-2697008400
-rw-------. 1 root root 0 7月 14 00:50 yum.log
#案例14 改名 把/Gq/gril.txt改名为gril996.txt
[root@Gq-rgq ~]# mv /Gq/gril.txt /Gq/gril996.txt
[root@Gq-rgq ~]# ls -l /Gq/
总用量 0
drwxr-xr-x. 3 root root 15 7月 15 11:14 a
-rw-r--r--. 1 root root 0 7月 15 11:41 gril996.txt
关于命令操作多个文件或目录的说明(熟悉)
touch a b c d e f
mkdir dira dirb dirc
mv file .....dir
2.6 cp copy复制文件或目录
cp命令选项 | 说明 |
-a | all 简单理解为复制所有 详情:-dpr |
-r | 递归复制,复制目录的内容 |
-p | 复制的时候保持属性不变.(未来简介文件属性就可以深入了解) |
-d | 可以复制软连接 |
ls -l /Gq/
总用量 4
drwxr-xr-x. 3 root root 15 7月 15 11:14 a
-rw-r--r--. 1 root root 11 7月 15 15:09 hostname
-rw-r--r--. 1 root root 0 7月 15 11:41 Gq.txt
-rw-r--r--. 1 root root 0 7月 15 11:41 oldgril996.txt
#案例16 复制/etc/目录复制到/Gq/下面
[root@Gq-rgq ~]# cp -a /etc/ /Gq/
[root@Gq-rgq ~]# ls -l /Gq/
总用量 16
drwxr-xr-x. 3 root root 15 7月 15 11:14 a
drwxr-xr-x. 80 root root 8192 7月 15 08:01 etc
-rw-r--r--. 1 root root 11 7月 15 15:09 hostname
-rw-r--r--. 1 root root 0 7月 15 11:41 Gq.txt
-rw-r--r--. 1 root root 0 7月 15 11:41 gril996.txt
cp默认无法复制目录
cp隐藏功能:备份
#案例17 把系统的网卡配置文件备份到/Gq目录下 网卡配置文件: /etc/sysconfig/network-scripts/ifcfg-eth0 或ens33 cp /etc/sysconfig/network-scripts/ifcfg-eth0 /Gq/ #如果要恢复 cp /Gq/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0
2.7 rm remove移除,删除文件或目录
rm选项 | |
-f | force强制删除不提示,危险 |
-r | 递归删除,删除目录及目录的内容,没有要求不要加上-r |
#案例18 删除/Gq/Gq.txt文件
[root@Gq-rgq ~]# rm /Gq/Gq.txt
rm:是否删除普通文件 "/Gq/Gq.txt"?y
#案例19 强制删除文件 /Gq/gril996.txt
[root@Gq-rgq ~]# ls /Gq/
a etc hostname gril996.txt
[root@Gq-rgq ~]# rm -f /Gq/gril996.txt
[root@Gq-rgq ~]# ls /Gq/
a etc hostname
[root@Gq-rgq ~]#
#案例20 删除目录/Gq/
[root@Gq-rgq ~]# rm -fr /Gq/
[root@Gq-rgq ~]# ls -l /Gq
ls: 无法访问/Gq: 没有那个文件或目录
[root@Gq-rgq ~]#
2.8 echo输出信息到屏幕
#例子 1 输出Gq jiayou 到屏幕
[root@Gq-rgq ~]# echo Gq jiayou
Gq jiayou
#案例21 输出信息到文件中 /Gq/Gq.txt文件写入jiayou内容
[root@Gq-rgq ~]# echo Gq jiayou >/Gq/Gq.txt
[root@Gq-rgq ~]# ls -l /Gq/
总用量 4
-rw-r--r--. 1 root root 14 7月 15 18:56 Gq.txt
[root@Gq-rgq ~]# cat /Gq/Gq.txt
Gq jiayou
案例22 输出有规律的内容
[root@Gq-rgq ~]# echo {0..100}
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
[root@Gq-rgq ~]# echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@Gq-rgq ~]# echo Gq{1..10}
Gq1 Gq2 Gq3 Gq4 Gq5 Gq6 Gq7 Gq8 Gq9 Gq10
[root@Gq-rgq ~]# echo Gq{01..10}
Gq01 Gq02 Gq03 Gq04 Gq05 Gq06 Gq07 Gq08 Gq09 Gq10
[root@Gq-rgq ~]#
>叫做重定向符号,先清空文件内容,然后再写入
>>叫做追加重定向,把信息写入为末尾
2.9 cat显示文件内容
cat选项 | |
-n | number显示文件内容及行号 |
#案例23 显示/etc/password内容并显示行号
[root@Gq-rgq ~]# cat -n /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
11 games:x:12:100:games:/usr/games:/sbin/nologin
12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13 nobody:x:99:99:Nobody:/:/sbin/nologin
14 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
3 目录结构命令详解
- yum优化
- vi/vim
- cat/head/tail/more/less
- wc
- which/whereis
- diff/vimdiff
- sort,uniq
- data
- 打包压缩
3.1 linux 环境初步优化
- 检查是否联网
ping baidu.com
- 配置yum源(安装软件的软件仓库)
#配置yum源
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#安装Linux常用工具
yum install -y tree vim wget bash-completion bash-completion-extras lrzsz net-tools sysstat iotop iftop htop unzip nc nmap telnet bc psmisc httpd-tools bind-utils nethogs expect
#Linux娱乐命令
yum install -y sl cowsay
- 如何知晓已经安装成功?
- 检查是否有"完成"提示"complete"
3.2 vi-vim编辑器详解
- vi/vim区别
- vim基本使用
- vim几个模式
- vim快捷键
1)vi-vim区别-了解
内容 | 区别 |
vi | 系统自带,不需要额外按安装,没有vim功能多 |
vim | 需要额外安装,vi的升级版,未来大部分情况都是用vim即可. |
2) vi/vim基本使用
a)打开文件(不存在也OK)
ls -l /gq/
vim /gq/gq.txt
vi/vim
如果文件不存在会自动创建
如果目录不存在不会创建
b)进入编辑模式
- 按字母i即可,编辑这个文件
c)退出编辑模式
- 按esc键 退出编辑模式
d)保存与退出
- 输入:wq write(写,保存)quit(退出)
- :q!强制退出不保存
e)检查
[root@rgq ~]# cat /Gq/Gq.txt Gq jiayou Gqlinux.cn Gqdeu.com
3)vim的模式转换
- 命令模式:通过vi/vim打开文件后进入的模式
- 编辑模式(插入模式):用于编辑,修改文件内容
- 底行模式:保存退出,搜索使用
- 可视块模式:用于批量编辑
4)vim快捷键🩸🩸🩸🩸🩸
- 建测试文件
cat /etc/services /etc/sysconfig/network-scripts/ifcfg-eth0
- 移动光标类快捷键-必会⭐️⭐️⭐️⭐️⭐️
行之间调整: 上下调整 熟练掌握
移动到最后一行 G(shift+g)
移动到第1行 gg
移动到某一行 100gg
列之间调整: 左右 了解
光标移动到行首 ^(数字6)
光标移动到行尾 $(数字4)
- 复制,删除(剪切),粘贴 ⭐️⭐️⭐️⭐️⭐️
复制当前行 yy
删除当前行 dd
粘贴到当前行后 p
- 其他快捷键 ⭐️⭐️⭐️⭐️⭐️
撤销 u(undo)
显示行号 :set nu 或 :set number
取消显示行号 :set nonu
搜索(默认就是向下找) /你要的内容
继续向下搜索 n(next)
继续向上搜索 N
了解:
搜索默认向上找 ?你要的内容
临时取消语法高亮 :noh ##一般用于 /搜索错误,可以使用.
- 批量操作
- 批量处理行:复制,删除 - 了解
shift + v 进入到可视行模式(批量操作行) 按上下键,选择要处理的范围
如果删除按 d,
如果复制按 yy
- 批量删除某部分内容,批量增加内容⭐️⭐️⭐️
案例01 批量删除文件开头的#
按ctrl + v,进入批量操作模式
选择要操作的区域
然后按d,删除.
案例02 批量给文件开头增加内容 #Gq
按ctrl + v,进入批量操作模式
选择要操作的区域
选完后,按shift + i (I),进入编辑模式
写入内容
按esc等待.
- 快捷键小结
vim快捷键,需要在日常使用中记忆.
目前:
移动到最后一行 G(shift+g)
移动到第1行 gg
移动到某一行 100gg
复制当前行 yy
删除当前行 dd
粘贴到当前行后 p
撤销 u(undo)
显示行号 :set nu 或 :set number
取消显示行号 :set nonu
搜索(默认就是向下找) /你要的内容
5) 故障案例
- vim编辑文件故障提示:
- 原因:
- 1️⃣ vi/vim编辑文件的时候,会生成临时文件(隐藏文件).
- 2️⃣ 通过保存退出,隐藏文件会消失.
- 3️⃣ 异常情况,断电,同时编辑这个文件,就会有这个提示.
- 解决:
- 🅰️:方案01: 删除临时文件,工作中也可以删掉. 根据提示的路径删除对应的临时文件即可.重新打开文件.
- 🅱️恢复未保存数据.
vim -r Gq.txt rm -f .Gq.txt.swp 重新打开文件即修复了.
3.3 日志查询4剑客
3.3.1 概述
- linux日志查询,文件较大,通过cat,vi/vim进行查看,系统可能卡死,可能内存不足.
- 推荐使用不会占用太多资源的命令,查看日志:head/tail,less/more
3.3.2 日志查询命令使用
1)head显示文件的头几行,默认显示头10行.
head选项 | |
-n num | 显示头num行,默认显示头10行 |
案例01 显示/etc/passwd的前5行
head -n5 /etc/passwd
head -n 5 /etc/passwd
head -5 /etc/passwd
温馨提示:
一般情况下,使用 -数字即可.如果-5报错或无法使用,则使用-n5形式
2)tail显示文件的后几行,默认是后10行.
tail选项 | |
-n num | 显示头num行,默认显示最后10行 |
-f | 显示文件末尾的实时更新(一般用于查看日志) |
案例02 显示/etc/passwd 的后5行
tail -n5 /etc/passwd
tail -5 /etc/passwd
- 可以实时查看文件的末尾的更新.
案例03 查看/var/log/secure实时更新
tail -f /var/log/secure
- 打开2个窗口,一个查看,一个写入
- taillf ==tail -f
温馨提示:如何查看日志,要每一行都看吗?
看日志要抓住核心,关键,线索
这些线索一般都是:关键词语:failed,gailure,error....
/var/log/secure中查看,failed password
3)less按页显示文件内容
q 退出查看
空格/f 下一页
b 上一页 (back)
G 最后1行
g 第一行
99g 到第99行
3.4 wc统计
- world count统计文件按中单词情况,未来工作中用于统计行数
wc选项 | |
-l | 统计行数 |
#案例04 统计/etc/services文件有多少行
wc -l /etc/services
11176 /etc/services
温馨提示:未来wc使用案例
一般都是配合其他命令,可以取出xxx次数
还可以放在脚本中进行判断.
案例05 统计系统用户登录错误次数 #1. 过滤出日志中错误信息 grep 'Failed password' /var/log/secure #过滤 Jul 19 09:32:44 oldboy-83-lnb-v2 sshd[7082]: Failed password for root from 10.0.0.1 port 65157 ssh2 Jul 19 09:32:55 oldboy-83-lnb-v2 sshd[7082]: Failed password for root from 10.0.0.1 port 65157 ssh2 #2. 交给wc -l 统计次数 grep 'Failed password' /var/log/secure | wc -l
| 管道符号
把前一个命令的结果,传递给后面的命令使用
3.5 查询命令位置
- which
- whereis
- 查询命令绝对路径
3.5.1 which
- 查询命令的位置
[root@rgq ~]# which wc mkdir sed awk ping ip
/usr/bin/wc
/usr/bin/mkdir
/usr/bin/sed
/usr/bin/awk
/usr/bin/ping
/usr/sbin/ip
3.5.2 whereis
- 查询命令及相关文件的位置
[root@rgq ~]# whereis awk
awk: /usr/bin/awk /usr/libexec/awk /usr/share/awk /usr/share/man/man1/awk.1.gz
[root@rgq ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
[root@rgq ~]# whereis -b ls
ls: /usr/bin/ls
[root@rgq ~]# whereis -b ls sed awk
ls: /usr/bin/ls
sed: /usr/bin/sed
awk: /usr/bin/awk /usr/libexec/awk /usr/share/awk
3.6 文件比较命令
- diff
- vimdiff
3.6.1 diff
[root@rgq ~]# diff oldboy.txt oldboy-gai.txt
3,19c3,9
< nihao
< oldboy
< gai
< lidaoyyds
< comein
< comein
< comein
< comein
< comein
< comein
< comein
< comein
< comein
< comein
< comein
< comein
< comein
---
>
>
>
>
>
>
> 你好,我好,大家好,广州好迪。
a append 增加
c 替换,修改
d 删除
3.6.2 vimdiff
vimdiff Gq.txt Gq-gai.txt
3.7 排序去重组合
- sort
- uniq
3.7.1 sort-排序
sort选项 | 说明 |
-n | number把要排序的内容当作数字,按照数字大小进行排序 |
-k | 指定某一列,根据某一列进行排序 |
-r | 逆序排序 |
-t | 指定分隔符,单个字符 |
- 基本数字序列
案例06 对文件中的数字进行排序
[root@rgq]# cat day005-06-sort.txt
99
1
10
23
3
0000
02
9
19
[root@rgq]# sort day005-06-sort.txt
0000
02
1
10
19
23
3
9
[root@rgq oldboy]# sort -n day005-06-
sort.txt
0000
1
02
3
9
10
19
23
99
温馨提示:
sort默认是按照字母/字符进行对比,会造成数字对比失败.
解决: sort -n
- 对文件中某一列进行排序
案例07 对文件中某一列进行排序
[root@rgq oldboy]# cat day005-07-sort.txt
lidao 18
wang 16
15w 38
[root@rgq oldboy]# sort -n -k 2 day005-07-sort.txt
wang 16
lidao 18
15w 38
sort -nk2 day005-07-sort.txt
如果是逆序排序则加上-r即可
[root@rgq oldboy]# sort -rnk2 day005-07-
sort.txt
15w 38
lidao 18
wang 16
企业面试题: ll /etc/ 取出大小最大的前5个.
提示: 需要使用管道
翻译: 对ll /etc/第5列进行逆序排序,取出前5个就行.
方法01
对ll /etc/第5列进行逆序排序
ll /etc/ |sort -rnk5
取出前5个就行
ll /etc/ |sort -rnk5 |head -5
方法02 默认排序,取出最后5个
ll /etc/ |sort -nk5 |tail -5
案例08 通过sort多多列进行同时排序
cat >/oldboy/day005-08-sort.txt
oldboy 40 linux学院 20000
oldli 18 linux学院 21000
oldgirl 22 linux学院 30000
old3 7 linux学院 4040
old2 7 linux学院 30300
old1 7 linux学院 50000
old4 7 linux学院 30000
old5 8 linux学院 25000
old6 8 linux学院 15000
EOF
[root@rgq oldboy]# sort -rn -k2 day005-08-sort.txt
oldboy 40 linux学院 20000
oldgirl 22 linux学院 30000
oldli 18 linux学院 21000
old6 8 linux学院 15000
old5 8 linux学院 25000
old4 7 linux学院 30000
old3 7 linux学院 4040
old2 7 linux学院 30300
old1 7 linux学院 50000
[root@rgq oldboy]# sort -rn -k2 -k4 day005-08-sort.txt
oldboy 40 linux学院 20000
oldgirl 22 linux学院 30000
oldli 18 linux学院 21000
old5 8 linux学院 25000
old6 8 linux学院 15000
old1 7 linux学院 50000
old2 7 linux学院 30300
old4 7 linux学院 30000
old3 7 linux学院 4040
多列排序说明-k2 -k4表示先对第2列排序,如果第2列有重复的则对第四列排序,表示优先对第2列排序,第4列是辅助
- sort 20K题目
以.为分隔符对第3列和第4列排序.
cat >/oldboy/sort-20k.txt <<EOF
192.168.3.1 00:0F:AF:81:19:1F
192.168.3.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.2.20 00:0F:AF:85:55:DE
192.168.2.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5C:41
192.168.0.151 00:0F:AF:85:6C:F6
192.168.0.152 00:0F:AF:83:1F:65
192.168.0.153 00:0F:AF:85:70:03
192.168.1.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.1.12 00:30:15:A2:3A:A1
192.168.1.1 00:0F:AF:81:19:1F
192.168.2.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.2.20 00:0F:AF:85:55:DE
192.168.1.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5C:41
192.168.0.151 00:0F:AF:85:6C:F6
192.168.1.152 00:0F:AF:83:1F:65
192.168.0.153 00:0F:AF:85:70:03
192.168.3.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.3.12 00:30:15:A2:3A:A1
EOF
#以.为分隔符
sort -t"." -rn -k3 sort-20k.txt
sort -t"." -rn -k3,3 -k4,4 sort-20k.txt
-rn 数字逆序排序
-k3,3 表示仅对第3列排序
-k4,4 对第4列排序
3.7.2 uniq
- 去重(去掉重复的,留下唯一的)
uniq选项 | |
-c | 去重并显示次数(重复次数) |
cat >/oldboy/uniq.txt
oldboy
oldboy
oldboy
oldboy
oldboy
oldboy
lidao
lidao
lidao
lidao
lidao
smile
smile
smile
smile
blood
blood
blood
blood
EOF
uniq -c uniq.txt
6 oldboy
5 lidao
4 smile
4 blood
温馨提示:uniq只能对相邻的行进行合并(去重),如果不相邻,需要通过sort命令 调整为相邻的.
先sort,然后uniq
新的测试文件内容,请自己vim创建并写入. oldboy oldboy oldboy oldboy lidao lidao smile blood blood oldboy oldboy lidao lidao lidao smile smile smile blood blood
#1.先对数据进行排序,相同的数据会在一起 sort uniq.txt #2.然后通过uniq -c去重并统计次数 sort uniq.txt |uniq -c |sort -rn
3.8 日期组合
- date
- ntpdate
- 特殊符号
3.8.1 date
data选项 | |
+ | 以xxxx格式显示日期与时间 |
%F 年-月-日 %Y-%m-%d | |
%w周几 | |
%T%H%M%s 时:分:秒 | |
-d | 根据说明修改时间 |
-s | 修改时间 |
#案例10 按照指定格式显示日期 年-月-日 2022-07-19
date +%F
2022-07-19
#案例11 按照指定格式显示日期 年月日 20220719
year
month
day
date +%Y%m%d
20220719
#案例12 显示当前时间 时:分:秒、
hour
mintue
second
date +%T
date +%H:%M:%S
#案例13 显示当前日期为 年-月-日_周几
date +%F_%w
2022-07-19_2
- 按照说明显示时间或日期
[root@rgq ~]# date -d '-1 day'
2022年 07月 18日 星期一 19:29:57 CST
[root@rgq ~]# date -d '1 day'
2022年 07月 20日 星期三 19:30:14 CST
#案例14 显示前1天的日期 按照年-月-日—_周几_小时 格式显示
date -d '-1day' +%F_%w_%H
2022-07-18_1_19
- 手动修改时间
date -s '20221111 11:11:11'
date -s '20221111'
3.8.2 ntpdate同步时间的命令
yum install -y ntpdate
ntpdate ntp1.aliyun.com
19 Jul 15:26:13 ntpdate[7937]: step time server
120.25.115.20 offset -9880664.037056 sec
提示offset xxx sec表示同步成功
3.8.3 修改时区-熟悉
timedatel set-timezone asia/shanghai
3.8.4 实践应用
- date应用场景:企业备份的时候,给压缩包加上时间.
- 特殊符号 ``,反引号里面的命令会被优先执行
[root@rgq ~]# which find
/usr/bin/find
[root@rgq ~]# ll /usr/bin/find
-rwxr-xr-x. 1 root root 199304 10月 31 2018 /usr/bin/find
[root@rgq ~]# ll `which find`
-rwxr-xr-x. 1 root root 199304 10月 31 2018 /usr/bin/find
[root@rgq ~]#
- 创建backup-etc-2022-07-19.txt
date +%F
touch backup-etc-xxxxx.txt
touch backup-etc-`date +%F'.txt
ls -l backup-etc-2022-07-19.txt
4.打包压缩三剑客
4.1 概述
压缩命令 | 应用场景 |
tar | 大部分使用tar即可,创建,查看,解压,解压到指定目录。 |
gzip | 一般配合其他命令使用。 |
zip | 一般用于解压zip格式的压缩包unzip |
4.2 tar
- windows压缩
- Linux打包压缩 打包(文件放在一起) 压缩(进行压缩,节约空间)Tar
- 功能:
- 创建
- 查看
- 解压
- 解压到指定目录
tar命令 | 选项与说明 |
创建zcf | tar zcf 压缩包 被压缩的文件/目录 |
查看tf | tar tf /tmp/etc.tar.gz |
解压xf | tar xf /tmp/etc.tar.gz |
1)创建
tar zcvf /tmp/Gq.tar.gz /Gq/
tar zcf /tmp/Gq.tar.gz /Gq/
v verbose 显示过程
c create 创建包(打包)
z gzip 通过gzip压缩工具进行压缩 tar打包 gz压缩 .tar.gz
f file 指定压缩包,f选项放在这几个选项的最后
2)查看压缩包内容
tar ztvf /tmp/etc.tar.gz
tar tf /tmp/etc.tar.gz
t list 列表,查看压缩包内容
3)解压
- 默认解压到当前目录。
tar zxvf /tmp/ettc.tar.gz
tar xf /tmp/etc.tar.gz
x extract 解压
- 解压后的文件
4)解压到指定目录
解压etc.tar.gz 到/mnt目录下
tar xf /tmp/etc.tar.gz -C /mnt/
-C 指定目录
5)tar:从成员名单中删除开头的"/"
- 是个警告而已。
tar:Removing leading '/' from member names
- 这是tar命令的安全保护机制。把我们使用的绝对路径转换为相对路径。
- 为了防止保留绝对路径,从而发生覆盖。 /etc/hosts
- 避免提示:使用相对路径打包
cd /
tar zcf /tmp/etc.tar.gz etc/
4.3 gzip
- 创建gz压缩包
touch gq.txt
gzip Gq.txt
ll Gq.txt.gz
- 解压
gzip -d Gq.txt.gz
4.4 zip/unzip
- 对于这个命令大部分命令会使用解压即可
压缩
zip r etc.zip /etc/
-r 用于压缩目录
解压
unzip etc.zip
5. grep
- 过滤:在文件或管道中查找,找出想要的内容
5.1 概述与选项
grep | 说明 |
-n | 显示行号 |
-v | 排除,取反 |
-i | 过滤的时候忽略大小写 |
5.2 案例与应用
- 基本用法
在/etc/passwd中过滤出包含root的行
[root@rgq ]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
- 显示行号和内容
案例01 显示/etc/passwd中包含root行及行号
grep -n 'root' /etc/passed
- 过滤的时候不区分大小写
案例02 过滤出secure文件中failed passwd的行不区分大小写
grep -i 'failed password' var/log/secure
- 排除
案例03 排除/etc/passwd中的nologin的行
grep -v nologin ' /etc/passwd
6.find
6.1 概述与选项
- find在指定目录中查找文件
find命令选项 | 说明 |
-type | 什么类型的文件 f表示文件 d表示目录 |
-name | 文件名 |
-size | 根据大小查找文件 +表示大于 -表示小于 +10M(大写) +10k(小写k) G |
-mtime | 根据修改时间查找文件 |
6.2 案例
#案例01 在/etc/目录中找出文件名叫hostname文件
find /etc/ -type f -name 'hostname'
/etc/hostname
#案例02 找出/etc/下面以.conf结尾的文件
find /etc/ -type f -name '*.conf'
温馨提示: *表示任意符号或所有
温馨提示:如果想找以xxxx开头或包含xxx的文件
找以Gq开头的文件: -name 'Gq*'
找到包含Gq的文件:(可能是开头,可能是结尾,可能是中间):-name '*Gq*'
#案例03 根据大小找出文件 /etc/目录下面找出大于10kb的文件
find /etc/ -type -f -size +10k
#案例04 根据修改时间找出文件
根据相对的时间进行查找,比如
修改时间最近7天的文件
find /Gq/ -type f -mtime -7 #最近7天
修改时间大于30天
find /Gq/ -type f -mtime +30 #30天之前的
#案例05 找出/etc/中以.conf结尾大于10kb修改时间是7天之前的文件
find /etc/ -type -f -name '*.conf' -size +10k -mtime +7
- 进阶选项
#案例06 查找文件的时候指定最多找多少层目录。
find / -maxdepth 2 -type f -name "*.conf"
#案例07 查找的时候不区分大小写
find / -type f -iname "*.conf"
6.3 find命令与其他命令配合
- find找出想要的文件删除,看详细信息
- find照吃文件进行打包压缩
- find找出文件后复制或移动
mkdir -p /gq/find
touch /gq/find/qq{01..10}.txt
1)案例08—find找出/gq/find/ 以.txt结尾的文件显示详细信息❣️❣️❣️
- 方法01 find `` ❣️❣️❣️❣️❣️
ls -lh find命令的结果
ls -lh `find /gq/find/ -type f -name '*.txt'`
ls -lh $(find /gq/find/ -type f -name '*.txt')
- 方法02 find | xargs ❣️❣️
find /gq/find/ -type f name '*.txt' |xargs ls -lh
温馨提示: |xargs后面无法使用 ll,后面讲解别名的时候会详解。
关于管道的秘密:
find /gq/find/ -type f -name '*.txt' |ls -lh
故障原因:
前面的命令通过管道传递给后面的命令,传递的是字符串。
这个命令(ls)中传递文字符号就不行,传递参数。
所以上面的命令相当于find白白浪费了,仅仅执行了下ls -lh而已。
如何解决:
通过 |xargs 把字符串转换为参数。
- 方法03 find + -exec 方法
find /gq/find/ -type f -name '*.txt' -exec ls -lh {} \;
-exec是find选项,表示find找出文件后要执行的命令
{}表示前面find命令找出的文件。
\;表示命令结束,固定格式。
2)案例09-find与打包压缩
- find找出/gq/find/ 以.txt结尾的文件放在/tmp/find.tar.gz
- 方法01 - find ``
tar zcf /tmp/find.tar.gz `find /gq/find/ -type f -name '*.txt'`
- 方法02 find + | xargs
find /gq/find/ -type f -name '*.txt' | xargs tar zcf /tmp/find.tar.gz
- 方法03 find + exec
find /gq/find/ -type f -name '*.txt' -exec tar zcf /tmp/find.tar.gz {} \;
有坑,因为-exec \;执行方式1个文件的压缩。
find /gq/find/ -type f -name '*.txt' -exec tar zcf /tmp/find.tar.gz {} +
3)案例10-find与复制或移动
- find找出/gq/find/ 以.txt结尾的文件然后复制到/tmp/下面
- 方法01 find + ``
cp 源文件 目标 cp `find /gq/find/ -type f -name '*.txt'` /tmp/
- 方法02 find + |xargs
find xxx |xargs cp /tmp/
运行的时候
1.find找出文件 gq01 .. gq10
2.把10个文件传输给cp命令
3.cp /tmp/ gq01 .. gq10
cp -t /tmp/ gq01 .. gq10
cp -t 目标 源文件 目录 .....
如何解决
find /gq/find/ -type f -name '*.txt'|xargs cp -t /tmp/
- 方法03 find + -exec
find /gq/find/ -type f -name '*.txt' -exec cp {} /tmp/ \;