Linux常用命令

一、文本处理

文本处理三剑客 grep、sed、awk

1.1 grep

简介: 基于正则表达式查找满足条件的行
语法: grep [选项参数] pattern filename
常用选项参数:

选项参数作用说明
-i忽略大小写
-v显示不匹配的行
-o只输出符合pattern的字符串
-n输出行号
-a将 binary 文件以 text 文件的方式搜寻数据
-c计算找到 ‘搜寻字符串’ 的次数
-r递归模式, 可同时处理所有层级子目录里的文件

实战:

# 查找以debug开头的字符串所在的行
[dx46507691@shell.ceshiren.com chrisworksapce]$ grep -n '^debug' ./*
./retest.txt:13:debug_pass    case1 
./test1.txt:4:debug_pass case2
1.2 sed

简介: sed是一个流编辑器!什么是流编辑器?将文件或标准输入的内容作为编辑的对象,对其按照需求进行修改。
在流编辑器中,有一个概念叫:模式空间。简单理解就是一个缓冲区,sed从输入流中一行一行的取出内容放到这个缓冲区中按照SCRIPT(脚本)进行处理。不对原文件做修改。
语法:

sed [-hnV][-e<script>][-f<script文件>][文本文件]

参数说明:

-e<script>或--expression=<script>     以选项中指定的script来处理输入的文本文件。
-f<script文件>或--file=<script文件>     以选项中指定的script文件来处理输入的文本文件。
-h或--help     显示帮助。
-n或--quiet或--silent     仅显示script处理后的结果。
-V或--version     显示版本信息。

动作说明:

a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行);
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行;
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行;
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

实战:

# 在第三行后插入一行
[dx46507691@shell.ceshiren.com chrisworksapce]$ sed -e 3a'3 line after' sedtest.txt
# 在第三行前插入一行
[dx46507691@shell.ceshiren.com chrisworksapce]$ sed -e 3i'3 line before' sedtest.txt

# 删除第三行内容
[dx46507691@shell.ceshiren.com chrisworksapce]$ sed -e 3d sedtest.txt
# 删除1~3行内容
[dx46507691@shell.ceshiren.com chrisworksapce]$ sed -e 1,3d sedtest.txt

# 数据的搜索并显示
搜索包含free字符串的行
[dx46507691@shell.ceshiren.com chrisworksapce]$ sed -n '/free/p' sedtest.txt

# 将包含free字符串的行删除
[dx46507691@shell.ceshiren.com chrisworksapce]$ sed  '/free/d' sedtest.txt

# 查找包含free字符串的行,并将其中system替换成badsystem
[dx46507691@shell.ceshiren.com chrisworksapce]$ sed -n '/free/{s/system/badsystem/g;p;q}' sedtest.txt

# 提取IP地址
[dx46507691@shell.ceshiren.com chrisworksapce]$ ifconfig | grep ^.*inet | sed 's/^.*inet //g' | sed 's/netmask.*$//g'
172.18.0.1  
172.17.0.1  
172.19.147.8  
127.0.0.1
1.3 awk

简介: AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。它依次处理文件的每一行,并读取里面的每一个字段。对于日志、CSV 那样的每行格式相同的文本文件,awk可能是最方便的工具。
基本用法:awk 动作 文件名

[dx46507691@shell.ceshiren.com chrisworksapce]$ echo 'this is a test' | awk '{print $0}'
this is a test
[dx46507691@shell.ceshiren.com chrisworksapce]$ echo 'this is a test' | awk '{print $3}'
a

print是打印命令,$0代表当前行
awk会根据空格和制表符,将每一行分成若干字段,依次用$1、$2、$3代表第一个字段、第二个字段、第三个字段等等
常用变量:

变量名称说明
NF表示当前行有多少个字段
NR表示当前处理的是第几行
FS字段分隔符,默认是空格和制表符,等价于命令行-F选项
NFILENAME当前文件名

下面,为了便于举例,我们把/etc/passwd文件保存成demo.txt。

[dx46507691@shell.ceshiren.com chrisworksapce]$ cat demo.txt 
t:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

这个文件的字段分隔符是冒号(:),所以要用-F参数指定分隔符为冒号。然后,才能提取到它的第一个字段。

[dx46507691@shell.ceshiren.com chrisworksapce]$ awk -F ':' '{ print $1 }' demo.txt
t
daemon
bin
sys
sync

提取每行最后一个字段,使用NF

[dx46507691@shell.ceshiren.com chrisworksapce]$ awk -F ':' '{ print $NF }' demo.txt
/usr/bin/zsh
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/bin/sync

二、网络

2.1 nslookup
2.1.1 nslookup作用

nslookup用于查询DNS的记录,查询域名解析是否正常,在网络故障时用来诊断网络问题

2.1.2 查询

方式1:直接查询
格式:nslookup domain [dns-server]
//如果没有指定dns服务器,就采用系统默认的dns服务器。

实际上,一个域名对应多个物理主机,用户访问的时候会按照一定规则由其中一台计算机应答

#  不指定dns服务器
[root@izuf63c0r3hzuk54cnpkwhz ~]# nslookup www.baidu.com
Server:		100.100.2.138
Address:	100.100.2.138#53

Non-authoritative answer:
www.baidu.com	canonical name = www.a.shifen.com.
Name:	www.a.shifen.com
Address: 112.80.248.75
Name:	www.a.shifen.com
Address: 112.80.248.76

方式2:查询其他记录
格式:nslookup -type=typevalue domain [dns-server]

typevalue:
    A -->地址记录
    AAAA   -->地址记录
    AFSDB Andrew    -->文件系统数据库服务器记录
    ATMA -->ATM地址记录
    CNAME   -->别名记录
    HINHO  -->硬件配置记录,包括CPU、操作系统信息 
    ISDN   -->域名对应的ISDN号码
    MB   -->存放指定邮箱的服务器
    MG    -->邮件组记录
    MINFO   -->邮件组和邮箱的信息记录
    MR   -->改名的邮箱记录
    MX   -->邮件服务器记录
    NS  --> 名字服务器记录
    PTR    ->反向记录
    RP    -->负责人记录
    RT  -->路由穿透记录
    SRV    -->TCP服务器信息记录
    TXT   -->域名对应的文本信息
    X25  -->域名对应的X.25地址记录
2.2 nc
2.2.1 nc作用

a.实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
b.端口的扫描,nc可以作为client发起TCP或UDP连接
c.机器之间传输文件
d.机器之间网络测速

2.2.2 常用参数
参数说明
-l用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接
-u指定nc使用UDP协议,默认为TCP
-v输出交互或出错信息,新手调试时尤为有用
-w超时秒数,后面跟数字
-z表示zero,表示扫描时不发送任何数据
2.2.3 使用场景

远程拷贝/传输文件
从server1拷贝文件到server2上。需要先在server2上,用nc激活监听
server2:

[root@server2 ~]# nc -l 1234 > 1234.txt

意思是把在1234 端口接收到的数据都写到1234.txt文件里(这里文件名随意取)
server1:

[root@server1 ~]# cat abc.txt 
abc.txtabc.txtabc.txtabc.txtabc.txtabc.txtabc.txtabc.txtabc.txt
[root@server1 ~]# nc -w 1 192.168.200.27 1234 < abc.txt

已经传送到server2:

[root@server2 ~]# cat 1234.txt 
abc.txtabc.txtabc.txtabc.txtabc.txtabc.txtabc.txtabc.txtabc.txt

端口扫描
扫描TCP端口
A机器启动一个端口侦听,默认是一个tcp的端口

# 启动tcp端口
[root@izuf63c0r3hzuk54cnpkwhz cheng]# nc -l 9999

B机器扫描A机器启动的9999端口

[dx46507691@shell.ceshiren.com ~]$ nc -zvw 1 47.102.152.235 9999
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 47.102.152.235:9999.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.

(-v可视化,-z扫描时不发送数据,-w超时几秒)

扫描UDP端口
A机器:

[root@izuf63c0r3hzuk54cnpkwhz cheng]# nc -lu 9998

B机器:

[dx46507691@shell.ceshiren.com ~]$ nc -zvu 47.102.152.235 9998
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 47.102.152.235:9998.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.01 seconds.

备注:
后台运行方式侦听端口:nc -l 9999 &
扫描多个端口,如8888~9999:nc -zv IP 8888-9999

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值