Linux基础知识、命令完整总结(二)查询、排序、日期、重定向、管道

八、日志查询

  • 大文件避免用cat、vi、vim查看
  • head/tail
  • less/more

1. head 显示文件头几行,默认10行

head选项作用
-n num显示头num行,默认10行
head -n 5 /etc/passwd  == head -5 /etc/passwd 

2. tail 显示文件后几行,默认10行

tail选项作用
-n num显示最后num行,默认10行
-f显示文件末尾的实时更新
tail -n 5 /etc/passwd 

3. less 按页显示文件内容

q 退出查看
空格/f 下一页
b 上一页

G 最后一行
g 第一行
99g 第99行

4. more 按页显示文件内容,到达最后一行就退出

九、wc (word count) 统计文件中单词情况,未来工作中统计行数

wc选项作用
-l统计行数
# 统计/etc/services文件有多少行
wc -l /etc/services
# 11176 /etc/services

温馨提示:wc使用案例

一般都是配置其他命令,可以取出xxx次数

# 统计系统用户登录错误的次数
grep 'Failed password' /var/log/secure
# Failed password
# Failed password
grep 'Failed password' /var/log/secure | wc -l
# 2

管道符号

把前一个命令的结果,传递给后面的命令使用

管道符号 |

十、查询命令位置

  • 查找命令绝对路径
    • which
    • whereis

1. which

  • 查询命令位置
which wc mkdir sed awk ping ip shutdown
#/usr/bin/wc
#/usr/bin/mkdir
#/usr/bin/sed
#/usr/bin/awk
#/usr/bin/ping
#/usr/sbin/ip
#/usr/sbin/shutdown

2. whereis

  • 显示命令、源码、说明文档等的路径
  • -b:查二进制文件
whereis awk
# awk: /usr/bin/awk /usr/libexec/awk /usr/share/awk /usr/share/man/man1/awk.1.gz

十一、文件比较命令

1. diff

  • a 增加
  • c 替换
  • d 删除
diff oldboy.txt oldboy-gai.txt
#1a2 
#>lidao.txt

2. vimdiff

vimdiff oldboy.txt oldboy-gai.txt

十二、排序去重组合

  • sort

  • uniq

    1. sort排序

sort选项作用
-n把要排序的内容当做数字,按照数字大小进行排序
-k指定某一列,根据某一列进行排序
-r逆序排列
-t指定分割符,必须是单个字符,默认是" "
# 1. 对文件中的数字进行排序
sort day005-sort.txt
#00
#1
#02
#23
#100


# 2. 对文件中某一列进行排序
sort -n -k 2 day005-sort.txt  == sort -nk2 day005-sort.txt 
wang 15
lidao 16
liw 23

# 3. 对文件中某一列进行逆序排序
sort -n -k -r 2 day005-sort.txt  == sort -rnk2 day005-sort.txt 
liw 23
lidao 16
wang 15

企业面试题1:ll /etc/取出大小最大的前五个

# 对ll /etc/第5列进行逆序排序,取前5个
# 方法一:
ll /etc/ | sort -rnk5 |head 5
# 方法二:
ll /etc/ | sort -nk5 |tail 5

企业面试题2:使用sort多列同时进行排序

sort -rn -k2 /oldboy/day005-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学院 3000
#old3 7 linux学院 4040
#old2 7 linux学院 30300
#old1 7 linux学院 50000

sort -rn -k2  -k4 /oldboy/day005-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
#old3 7 linux学院 4040
#old4 7 linux学院 3000
cat >/oldboy/day005-sort.txt<<EOF
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学院 3000
old5 8 linux学院 25000
old6 8 linux学院 15000
EOF

企业面试题3:以.为分割符对第三列和第四列进行排序

# -n 按数字大小进行排列
# -k3,3 表示仅对第三列进行排序
# -k4,4 表示仅对第三列进行排序
sort -t"." -n -k3,3 -k4,4 /oldboy/sort-20k.txt 
#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.1 00:0F:AF:81:19:1F
#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.2.2 00:0F:AF:85:6C:25
#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.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
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
EOF

2. uniq

  • 去重
uniq选项作用
-c去重并显示次数
-k指定某一列,根据某一列进行排序
-r逆序排列
-t指定分割符,必须是单个字符,默认是" "

温馨提示:uniq只能对相邻的行进行合并(去重),若不相邻,需要用sort命令调整为相邻的

先sort,再uniq
企业面试题1:统计secure-ip.txt文件中每个ip出现次数并取出前5

sort secure-ip.txt | uniq c|sort rn |head -5

cat >/oldboy/uniq.txt<<EOF
oldboy
oldboy
oldboy
oldboy
oldboy
oldboy
Lidao
lidao
lidao
lidao
lidao
smile
smile
smile
smile
blood
blood
blood
blood
EOF

十三、日期组合

年:year Y
月:month m
日:day d
周:weekend w

时:hour H
分:mintue M
秒:second S

1. date

date选项作用
+以xxx格式显示日期与时间
+%F 年-月-日(等价 %Y-%m-%d)
+%w 周几
+%T 时:分:秒(等价 %H:%M:%S)
-d根据说明修改时间
-s修改时间

1)按指定格式显示时间与日期

#案例1. 按照指定格式显示日期 年-月-日 2022-11-11
date +%F
2022-07-19

#案例2. 按照指定格式显示日期 年月日 20221111
date +%Y%m%d
20220719
date +%Y*%m*%d
2022*03*19


#案例3. 按照指定格式显示时间 时:分:秒
date +%T
10:55:02
date +%H:%M:%S

#案例4. 按照指定格式显示日期 年-月-日_周
date +%F_%w
2024-03-19_2

2)按说明显示指定时间与日期

#案例1. 一天前
date -d '-1 day'

#案例2. 一天后
date -d '1 day'

#案例3. 一天前 按 年-月-日_周_小时 格式显示
date -d '1 day' +%F_%w_%H
2022-03-20_3_11

3)手动修改时间(测试)

date -s '20221111 11:11:11'

date -s '20221111'

2. ntdate同步时间的命令

yum install ntdate
ntdate ntpl.aliyun.com

3. 修改时区

timedatectl

timedatectl set-timezone Asia/Shanghai

十四、重定向与管道

  • 重定向
  • 管道

1. 重定向

  • 重定向
    • 输出重定向 > (命令 > 文件)
      • 标准输出
        • 清空写入 1> 等价 >
        • 追加写入 1>>等价 >>
      • 标准错误 2>
      • 合并输出 &>
    • 输入重定向 0< 等价 < (命令 < 文件)

1)文件描述符

文件描述符用途POSIX名称stdio流
0标准输入STDIN_FILENOstdin
1标准输出STDOUT_FILENOstdout
2标准错误STDERR_FILENOstderr

2)输出重定向

#案例1. 标准输出重定向
date +F% > list.txt

#案例2. 标准错误重定向(无错误)
ls /etc/ 2> list.txt
# 没有错误,故无list.txt中无信息

#案例3. 标准错误重定向(错误)
ls /etcsss 2> list.txt
# 不存在/etcsss文件夹,报错

#案例4. 合并输出
ls /home /etcsss &> list.txt
ls /home /etcsss 1> yes.txt 2> no.txt

#案例5. 输出信息扔入垃圾桶
yum in stall httpd &> /dev/null 

#案例6. 使用cat和>覆盖文件内容,写入多行
cat > test.txt < EOF
第一行
第二行
第三行
EOF

#案例7. 使用cat和>>追加写入内容,写入多行
cat > test.txt <<EOF
第一行
第二行
第三行
EOF

2. 管道

  • 管道命令可以将多条命令组合起来,一次性完成复杂的处理任务
  • command1 | command2 | command3 | …
#案例1. 管道查看ssh进程
ps  aux  |  grep  "sshd"

tee命令

功能:读取标准输入的数据,并将其内容输出成文件

使用情况:配合管道“|”使用
选项:-a 追加

cat  /etc/passwd  |  tee 88.txt 
# 将/etc/passwd中的内容写入到88.txt文件中

Xargs命令

功能:将管道或标准输入(stdin)数据转换成命令行参数

使用情况:配合管道“|”使用
选项:-a 追加

Xargs -n 数字(对输入文本进行分行)

Xargs -n 数字 -d ‘分隔符’(对输入文本进行分行,以规定分隔符)

#案例1. 将查找到的文件打包
find . -type f -name "*.cfg" |xargs tar -zcvf cfg.tar.gz
# ./anaconda-ks.cfg

#案例2. 将files.txt中写的文件删除
vim  files.txt
#/home/file1
#/home/file2
#/home/file5
cat  files.txt  |  xargs  rm  -rvf
# removed  'home/file1'
# removed  'home/file2'
# removed  'home/file5'
  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值