linux打印屏幕命令 linux打印命令行内容

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命令: cat 和>, >>

工作中应用筛选日志信息输出到某个文件,针对性查看日志文件

语法:

cat 原单词concatenate(用途是连接文件或标准输入并打印。)

cat 命令用于将所有文件内容打印到屏幕上。

语法:

使用xshell连接linux

进入 /root 目录

新建 catTest目录

进入 catTest 目录

新建 a.txt 文件

ls -l /root a.txt

cat a.txt

ls /root a.txt

cat a.txt

ls -l /root a.txt

cat a.txt

linux命令输出到屏幕的同时保存到文件

tee用于把命令结果打印在屏幕上并同时保存到文件。

tee用法

描述:从标准输入中读取并同时写入到标准输出和指定的文件上

选项:

-a,--append:不覆盖,而是追加输出到指定的文件中

-i,--ignore-interrupts:忽略中断信息

若指定的输出文件为'-',则再次输出到标准输出上

实例:

tee Example.txt #将标准输入中输入的内容同时输出到Example.txt和标准输出上

实践:

例如 ifconfig | tee ifconfig.log

查看iconfig.log

注:

标准输入一般有键盘和其它文件,标准输出有屏幕等。tee只能进行标准输入的输出,对于错误输入是不能输出的。

在调试脚本时,想要每个命令的执行过程都输出到屏幕或者文件中,以便后续查看,如何操作呢?首先脚本第一行要写为“#!/bin/bash -x”,这样会把每个命令的执行记录都输出到屏幕,若还要输出到指定文件,要用到tee,但tee只能进行标准输入,对于标准输入和错误输入要用到下式:

./filename.sh 21 | tee output.log   或者直接 bash -x ./filename.sh 21 | tee output.log

今天调试一个bash,要把屏幕的输出结果存到log文件中,开始输入$bash -x ./test.sh log 结果发现log里只存放了程序的执行结果,后来在cu的一篇帖子里?tid=264380highlight=bash得到了启发,bash -x的调试信息是输出到2号流中的,所以解决方案为bash -x ./test.sh 21 | tee log 想起以前要存放执行make的结果时也遇到类似问题,总结如下:

1、管道符的“I”的作用只是把前一个程序的标准输出流(stdout)的数据作为后一个程序的标准输入流stdin的数据,如不进行重定向,则其他输出流的信息是无法传给后面的程序的

2、屏幕得到的信息不一定是从程序的标准输出来的,也包括标准错误输出流stderr中的信息

3、有些程序(特别是象bash、make这样执行了其他程序的程序)的设计者为了省事,把一些正常情况的信息也放在stderr中输出(即使程序本身并无错误),而stdout用来输出被调用程序的执行时信息,造成了用户的误解简单编写了一下脚本,通过ssh登陆在命令行下运行正常,可是将脚本添加到crontab中就不正常。想记录一下输出信息,分析一下错误原因。将脚本通过使用info.log 重定向输出,结果发现一些在命令行下可以看到的文本信息没有记录到info.log文件中,研究了一下,那些输出估计是输出到了标准错误上。

研究了一下通常添加命令后面几个输出含义

■ /dev/null 输出到空设备,表示丢掉输出信息。

■ 21将输出到标准错误的信息输出到标准输出设备(通常是屏幕)有3个默认的i/o,

■ 0是标准输入,一般是键盘

■ 1是标准输出,一般是屏幕

■ 2是标准错误,有时候屏幕上可以看到,但是重定向的文件中看不到的就是它了

我想让linux按如下格式将时间打印在屏幕上,应该怎么做

命令:date "+%Y-%m-%d %H:%M:%S"。

更多date命令相关的参数,参考:PHP程序员,雷雪松的个人博客--Linux常用命令之date。

linux查看文件内容命令

linux查看文件内容最常用的5 个命令:

命令一:cat

cat命令应该是在Linux中查看文件内容最常见的命令了。

使用cat命令会打印指定文件的所有内容到标准输出上,比如你的屏幕。

cat命令最简单的用法,是直接在cat命令后面跟上文件即可。

命令二:nl

nl命令跟cat命令很相识,它的不同之处在于每一行的前面多了行号的显示。

命令三:less

less命令一次只会显示一个页面的文件内容。

可以通过 j、k 两个按键进行上、下浏览文件内容,使用 q 可以随时退出。

命令四:tail

tail 命令用于查看文件内容的最后一部分,默认显示的行数是10行。

当然,如果你想让 tail 命令显示更多的文件内容,可以使用 -n number 这个参数,number 代表行数。

命令五:head

head 命令跟tail很相识,只不过它们查看的文件内容的方向是相反的。

head 命令用于查看文件内容的前面部分,默认显示的行数也是10行。

当然,如果想显示更多的行数的话,也是可以使用 -n number 这个参数,number 代表行数。


文章标题:linux打印屏幕命令 linux打印命令行内容
URL分享:http://scyanting.com/article/docehoc.html