资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

linux打印信息命令,linux打印信息的命令

linux 终端打印内容输出到文件

方法:利用tee命令可将linux终端的打印内容输出到文件

创新互联2013年至今,公司以成都网站设计、成都做网站、系统开发、网络推广、文化传媒、企业宣传、平面广告设计等为主要业务,适用行业近百种。服务企业客户上1000家,涉及国内多个省份客户。拥有多年网站建设开发经验。为企业提供专业的网站建设、创意设计、宣传推广等服务。 通过专业的设计、独特的风格,为不同客户提供各种风格的特色服务。

示例:ifconfig | tee ifconfig.log

运行结束后可在ifconfig.log文件中查看打印的内容

在 Linux 下打印

当前 Linux 系统采用两套软件配合显示和管理打印。第一,CUPS(Common Unix Printing

507System,一般 Unix 打印系统),用于提供打印驱动和打印任务管理;第二,Ghostscript,一种

PostScript 解析器,作为 RIP 使用。

CUPS 通过创建并维护打印队列来管理打印机。如前所述,Unix 下的打印原本是设计成多

用户共享中央打印机的管理模式的。由于打印机本身比连接到它的电脑要慢,打印系统就需要

对打印任务进行调度使其保持顺序。CUPS 还能识别出不同类型的数据(在合理范围内)并转

换文件为可打印的格式。

为打印准备文件

作为命令行用户,尽管打印各种格式的文本都能实现,不过打印最多的,还是文本。

23.3.1 pr - 转换需要打印的文本文件

前面的章节我们也有提到过 pr 命令,现在我们来探讨一下这条命令结合打印使用的一些选

项。我们知道,在打印的历史上,基于字符的打印机曾经用过等宽字体,致使每页只能打印固

定的行数和字符数,而 pr 命令则能够根据不同的页眉和页边距排列文本使其适应指定的纸张。

linux print命令

具体参数及讲解如下:

print命令的格式是:

print xxx

p xxx

1. print 操作符

@

是一个和数组有关的操作符,在后面会有更详细的说明。

::

指定一个在文件或是一个函数中的变量。

{}

表示一个指向内存地址的类型为type的一个对象。

2. 察看内容

全局变量(所有文件可见的)

静态全局变量(当前文件可见的)

局部变量(当前Scope可见的)

如果你的局部变量和全局变量发生冲突(也就是重名),一般情况下是局部变量会隐藏全局变量。如果此时你想查看全局变量的值时,你可以使用“::”操作符:

file::variable

function::variable

eg:

查看文件f2.c中的全局变量x的值:

gdb) p 'f2.c'::x

注:如果你的程序编译时开启了优化选项,那么在用GDB调试被优化过的程序时,可能会发生某些变量不能访问,或是取值错误码的情况。对付这种情况时,需要在编译程序时关闭编译优化。GCC,你可以使用“-gstabs” 选项来解决这个问题。

3. 察看数组

(1)动态数组:

p *array@len

array:数组的首地址,len:数据的长度

eg:

(gdb) p *array@len

$1 = {2, 4, 6, 8, 10}

(2)静态数组

可以直接用print数组名,就可以显示数组中所有数据的内容了。

4. 输出格式

x 按十六进制格式显示变量。

d 按十进制格式显示变量。

u 按十六进制格式显示无符号整型。

o 按八进制格式显示变量。

t 按二进制格式显示变量。

a 按十六进制格式显示变量。

c 按字符格式显示变量。

f 按浮点数格式显示变量。

eg:

(gdb) p i

$21 = 101

(gdb) p/a i

$22 = 0x65

(gdb) p/c i

$23 = 101 'e'

5. 察看内存

使用examine(简写x)来查看内存地址中的值。语法:

x/

n、f、u是可选的参数。

(1)n 是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个地址的内容。

(2)f 表示显示的格式,参见上面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。

(3)u 表示从当前地址往后请求的字节数,如果不指定的话,GDB默认是4个bytes。u参数可以用下面的字符来代替,b表示单字节,h表示双字节,w表示四字 节,g表示八字节。当我们指定了字节长度后,GDB会从指内存定的内存地址开始,读写指定字节,并把其当作一个值取出来。

eg:

x/3uh 0x54320 :从内存地址0x54320读取内容,h表示以双字节为一个单位,3表示三个单位,u表示按十六进制显示。

6. 察看寄存器

(1)要查看寄存器的值,很简单,可以使用如下命令:

info registers

(2)查看寄存器的情况。(除了浮点寄存器)

info all-registers

(3)查看所有寄存器的情况。(包括浮点寄存器)

info registers

(4)查看所指定的寄存器的情况。

寄存器中放置了程序运行时的数据,比如程序当前运行的指令地址(ip),程序的当前堆栈地址(sp)等等。你同样可以使用print命令来访问寄存器的情况,只需要在寄存器名字前加一个$符号就可以了。如:p $eip。

7. display自动显示的变量

(1)格式:display[/i|s] [expression | addr]

eg:

display/i $pc

$pc是GDB的环境变量,表示着指令的地址,/i则表示输出格式为机器指令码,也就是汇编。于是当程序停下后,就会出现源代码和机器指令码相对应的情形,这是一个很有意思的功能。

(2)其他

undisplay

delete display

删除自动显示,dnums意为所设置好了的自动显式的编号。如果要同时删除几个,编号可以用空格分隔,如果要删除一个范围内的编号,可以用减号表示(如:2-5)

disable display

enable display

disable和enalbe不删除自动显示的设置,而只是让其失效和恢复。

info display

查看display设置的自动显示的信息。GDB会打出一张表格,向你报告当然调试中设置了多少个自动显示设置,其中包括,设置的编号,表达式,是否enable。

8. 设置

(1)set print address

set print address on

打开地址输出,当程序显示函数信息时,GDB会显出函数的参数地址。

(2)set print array

set print array on

打开数组显示,打开后当数组显示时,每个元素占一行,如果不打开的话,每个元素则以逗号分隔。

(3)set print elements

这个选项主要是设置数组的,如果你的数组太大了,那么就可以指定一个来指定数据显示的最大长度,当到达这个长度时,GDB就不再往下显示了。如果设置为0,则表示不限制。

(4)set print null-stop

如果打开了这个选项,那么当显示字符串时,遇到结束符则停止显示。这个选项默认为off。

(5)set print pretty on

如果打开printf pretty这个选项,那么当GDB显示结构体时会比较漂亮。如:

$1 = {

next = 0x0,

flags = {

sweet = 1,

sour = 1

},

meat = 0x54 "Pork"

}

(6)set print union

设置显示结构体时,是否显式其内的联合体数据。

(7)set print object

在C++中,如果一个对象指针指向其派生类,如果打开这个选项,GDB会自动按照虚方法调用的规则显示输出,如果关闭这个选项的话,GDB就不管虚函数表了。


当前题目:linux打印信息命令,linux打印信息的命令
本文链接:http://www.cdkjz.cn/article/phpdjh.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220