RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
linux命令nn linux命令nano

在linux命令行中,怎么样从一行字符中输出指定格式的字符串

command | sed 's#.*\([0-9][0-9]:[0-9][0-9]\).*#\1'

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的永丰网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

# command是你那条输出的命令,将结果用管道传递给sed,匹配 nn:nn 这样的格式

Linux主要shell命令详解

利用反引号的这种功能可以进行命令置换,即把反引号括起来的执行结果赋值给指定变量。例如:

$

today=`date`

$

echo

Today

is

$today

Today

is

Mon

Apr

15

16:20:13

CST

1999

$

反引号还可以嵌套使用。但需注意,嵌套使用时内层的反引号必须用反斜线()将其转义。例如:

$

abc=`echo

The

number

of

users

is

`who|

wc-l``

$

echo

$abc

The

number

of

users

is

5

$

在反引号之间的命令行中也可以使用shell的特殊字符。Shell为得到``中命令的结果,它实际上要去执行``中指定的命令。执行时,命令中的特殊字符,如$,”,?等又将具有特殊含义,并且``所包含的可以是任何一个合法的Shell命令,如:

$

ls

note

readme.txt

Notice

Unix.dir

$

TestString=”`echo

$HOME

`

`

ls

[nN]*`”

$

echo

$TestString

/home/yxz

note

Notice

$

其他情况,读者可自行试之。

1.

注释符

在shell编程中经常要对某些正文行进行注释,以增加程序的可读性。在Shell中以字符“#”开头的正文行表示注释行。

此外还有一些特殊字符如:用于输入/输出重定向与管道的、、、

和|;执行后台命令的;命令执行操作符和||及表示命令组的{}将在下面各小节中加以介绍。

标准输入/输出和重定向

1.

标准输入与输出

我们知道,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。

我们以cat命令为例,cat命令的功能是从命令行给出的文件中读取数据,并将这些数据直接送到标准输出。若使用如下命令:

$

cat

config

将会把文件config的内容依次显示到屏幕上。但是,如果cat的命令行中没有参数,它就会从标准输入中读取数据,并将其送到标准输出。例如:

$

cat

Hello

world

Hello

world

Bye

Bye

ctrl+d

$

用户输入的每一行都立刻被cat命令输出到屏幕上。

另一个例子,命令sort按行读入文件正文(当命令行中没有给出文件名时,表示从标准输入读入),将其排序,并将结果送到标准输出。下面的例子是从标准输入读入一个采购单,并将其排序。

$

sort

bananas

carrots

apples

ctrl+d

apples

bananas

carrots

$

这时我们在屏幕上得到了已排序的采购单。

直接使用标准输入/输出文件存在以下问题:

输入数据从终端输入时,用户费了半天劲输入的数据只能用一次。下次再想用这些数据时就得重新输入。而且在终端上输入时,若输入有误修改起来不是很方便。

输出到终端屏幕上的信息只能看不能动。我们无法对此输出作更多处理,如将输出作为另一命令的输入进行进一步的处理等。

为了解决上述问题,Linux系统为输入、输出的传送引入了另外两种机制,即输入/输出重定向和管道。

Linux 基础教程 29-tcpdump命令-1

    在Linux中输入命令man tcpdump给出的定义如下所示:

是不是感觉很懵?我们用通俗、形象、学术的表达方式来全方位描述tcpdump:

常用选项如下所示:

1、第一个抓包示例

-i : 指定用来抓包的网络接口,这个参数在服务器有多个网卡的时候非常有效

-nn : 不转换协议和端口号,当tcpdump遇到协议号或端口号,不需要将这些数字转换为对应的协议名称或端口名称,如22端口SSH端口,我们希望显示22,而非SSH

-X : 将协议头和包内容原原本本的显示出来,tcpdump会同时以16进制和ASCII的形式进行显示,在协议分析时非常好用。

'port 22' : 告诉tcpdump要有选择的显示所抓到的包,在该示例中,只显示源端口或目的端口是22的数据包,其他的数据包则不显示。

-c : 用来指定抓包的个数,示例设置的个数为1,则代表仅抓取一个包之后就退出不再抓包了。

2、-e 增加数据链路层的头部信息

    通过两个命令的输出对比,可以看到增加-e选项后,输出的结果中增加MAC地址信息。而且在输出内容中会有 oui Unknown ,OUI即Organizationally unique identifier(组织唯一标识符),在任何一块网卡中烧录的6字节MAC地址中,前3个字节体现了OUI,其表明了网卡的制造组织,通常情况下,该标识符是唯一的。在本例中,由于没有识别出网卡的制造商,因此显示为Unknown。

3、-l 将输出变为行缓冲模式

    -l的作用是将tcpdump的输出行为变为 行缓冲 方式,这样可以保证tcpdump遇到换行符,就立即将缓冲的内容输出到标准输出(stdout),方便利用管道或重定向方式进行后续处理,而不会造成延迟。

    在Linux的标准I/O中提供了 全缓冲 、 行缓冲 、 无缓冲 三种缓冲方式。标准错误是不带缓冲的,而终端设备常为行缓冲,其他默认则为全缓冲。

    在该例中,将tcpdump输出的内容通过管道提取第5列,可以用来查看详细的连接信息。而如果不加 -l 选项时,则只有当缓冲区全部占满时,tcpdump才会将缓冲区中的内容输出,这样就有可能导致输出不连续的,如果强行结束,则会影响下一行的完整性。

4、-t 输出不加时间戳

    在增加选项 -t 选项后,时间23:48:03.193526就消失了。tcpdump默认情况下是按微秒来计时,因此最一个时间精确到了第6位。

5、 -v 显示详细信息

    在增加 -v 选项后,会在输出的内容中增加 tos 、 ttl 、 id 、 offset 、 协议编号 、 总长度 等,如需要理解这些信息,就需要了解TCP/IP协议中的头的具体定义了。

6、-F 指定过滤表达式所在的文件

    在第一个示例中,命令行增加了 'port 22' ,而这一项就叫 过滤条件 ,如果设置了过滤条件,则tcpdump只抓取满足过滤条件的数据包。如需要设置较为复杂的过滤条件或复用过滤条件时,这时可以将过滤条件保存为文件,然后通过-F加载该过滤文件。

7、 -w 将原始数据包信息保存到文件中

    当我们查看保存的文件时,出现的是乱码。则代表无法直接查看,很有可能是二进制文件。那么怎么查看保存的文件了?请看下一个示例。

7、 -r 从文件中读取原始数据包

    通过-w和-r选项即可实现抓包的录制回放功能。


分享文章:linux命令nn linux命令nano
分享路径:http://lswzjz.com/article/dojsscs.html