欢迎光临专业集成电路测试网~~欢迎加入IC测试QQ群:111938408

专业IC测试网

当前位置: 网站主页 > 相关技术 > 芯片制造 >

芯片验证中linux用法小结(9)

时间:2023-12-04 21:52来源:路科验证 作者:ictest8_edit 点击:

17.8.5 -ok command {} \;
对查找到的每个文件执行由command指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认。

其中的大括号{}作为检索到的文件的占位符,用于引用查找到的文件名称自身,而分号(;)作为命令结束的标志, 需要转义, 也可以用 + 号表示。-exec command {} \; 等同于 -exec command {} +


17.8.6 -exec command {} \;

对查找到的每个文件执行由command指定的命令。其中的大括号{}作为检索到的文件的占位符,用于引用查找到的文件名称自身,而分号(;)作为命令结束的标志, 需要转义, 也可以用 + 号表示。-exec command {} \; 等同于 -exec command {} +

几个小例子:

find . -type d -maxdepth 1

find /var/mail/ -size +50M -exec rm {} \;

find . -name “*.sv” |xargs rm -rf

find . -name “*.sv” -exec rm -rf {} \;

find -type f | xargs -n 3 rm -rf

find -type f | exec rm -rf {} \;

 

17.8.7忽略大小写


使用-iname参数选项

find . -iname "example*" -print

 

17.8.8否定参数

find 也可以用 ! 排除匹配到的模式,下面的find命令能够匹配所有不以.txt结尾的文件。

find . ! -name "*.txt" -print #注意!和-name之间有空格

17.9 find结合xargs

xargs(英文全拼:eXtended ARGumentS)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。xargs 作为后面命令的参数。

#将find查找的所有文件作为参数传递给grep进行过滤
 
find . -name “*file*” | xargs grep include

# 查找大于20M的文件,并显示具体大小

find ./ -type f -size +20M 2>/dev/null | xargs du -sh

 
 
# 查找大于60M的文件,并显示详细信息

find ./ -type f -size +60M 2>/dev/null | xargs ls -l

 

# 查找系统中最大的3个文件

find ./ -type f -exec du -sh {} + 2>/dev/null | sort -rh | head -n 3

 


18. grep命令 [感谢关注微信公众号《芯片验证日记》]

grep:查找文件内容。

grep -Rn “xx”,#一定要用R,不要用r,我是吃过亏的。

18.1 pgrep

pgrep是一个根据名称查找进程ID的命令,返回的是进程ID,若存在当个进程,则分为不同的行返回ID(默认实现)。

 
pgrep经常和其他命令配合使用,最常见的是kill:


 

19. tree命令

tree -L 2 文件件名称


 

20. tee命令

tee的应用场景

向命令执行窗口输出的同时,将内容输出到文件。应用场景:将仿真过程中terminal中显示的内容,输出到特定的文件make run |tee   xxx_tee.log

ping baidu.com | tee pb.log

ping baidu.com | tee -a pb.log #追加

ping baidu.com | tee pb.log pb2.log #输出到多个文件

cat pb.log |tee |wc -l #将tee命令的输出重定向为另一个命令的输入流

#在vim打开的文件中输入,:w !sudo tee %   #用tee命令提高写入文件的权限等级

ping baidu.com |tee -i pb.log #让tee命令忽略中断事件

与自己对话如何呢,或者叫做复读机?

tee命令直接跟文件的话,会等待输入,并同步进行输出到终端和文件的操作。

$ tee test.log

hello

hello

world

world

$ cat test.log

hello

world

21. split命令

split命令可以用于切割文件,将大文件切割成几个小文件。


 
split -C 1M/10G xx.log


 


22. sed命令


sed主要用来直接处理文本文件。

sed -i “s/” a.sv
 
只打印那些发生替换的行
· 
sed -n ‘s/uvm_hdl_read/\/\//&/p’ *.sv
 
直接修改用下面命令
 
sed -i ‘s/uvm_hdl_force\/\//&/g’ *.sv
 
删除所有空行

sed “s/^$/d” foo.sv
 
删除所有只包含空格或者制表符的行

sed “s/^[ ] *$/d” foo.sv
 
删除所有引号

sed “s/””//g” foo.sv
 
删除所有//注释的行

sed “s/\/\///g” foo.sv

 

23. unix2dos命令

unix2dos是将Linux&Unix格式文件转换为Windows格式文件的命令。dos2unix和unix2dos是互为孪生的一个命令,dos2unix是将Windows格式文件转换为Unix、Linux格式的实用命令。Windows格式文件的换行符为\r\n ,而Unix&Linux文件的换行符为\n. dos2unix命令其实就是将文件中的\r\n 转换为\n。在windows下生成的license文件,放到linux中用时会用到该命令。

使用前需要先安装:
 
yum install -y dos2unix

yum install -y unix2dos
 
对单个文件操作:

unix2dos test.txt
 
对多个文件操作:

unix2dos test1.txt test2.txt test3.txt
 
对整个目录中的文件做unix2dos操作:
 
find /path/to/dir  -type f -exec unix2dos {} \;
 
如果要保持文件时间戳不变,加上-k参数

unix2dos -k test1.txt test2.txt

 

24. ln -s软连接 [感谢关注微信公众号《芯片验证日记》]

创建软连接

ln -s [源文件/目录] [目标软链接]


 

删除软连接

删除软链接和删除文件/目录操作一样,使用rm命令。但是需要特别注意的是,如果只是删除软链接,不想误删除软链接目录真实文件数据,rm目录时路径末尾一定不能带"/"。如果带了"/",会将链接到的路径下的文件全部删除。


 

25. lsof命令


lsof是linux下非常实用的系统级的监控、诊断工具。它是List Open Files的缩写(ls open file)。使用 lsof可以获取任何被打开文件的各种信息,因为lsof 需要访问核心内存和各种文件,所以必须以root用户的身份运行它才能够充分地发挥其功能。


26. ftp命令 [感谢关注微信公众号《芯片验证日记》]


格式:ftp [hostname| ip-address]

a)在linux命令行下输入:

ftp 192.168.1.1

#or

ftp.company.com

b)服务器询问你用户名和密码,分别输入用户名和相应密码,待认证通过即可。

下载文件用get;下载多个文用mget;上传文件用put;上传多个文件用mput

27. sftp命令


sftp user@xxftp.company.com.cn,然后服务器询问你的密码,输入密码,待认证通过即可。


28.如何删除一些奇怪的文件


a)进入奇怪文件所在的文件夹,ls -i 得到inode节点号,然后kill -9 inode节点号;

b)lsof .nfs* 可以找到挂住的进程,kill这个进程,这些隐藏文件就可以删除了。

c)ps -ef |grep “.nfs*” 得到进程id,然后通过kill -9 进程id杀掉即可。

 

29. /dev/null的含义和用途

/dev/是包含所有物理和虚拟设备的目录。例如,/dev/sda 可能是主硬盘驱动器,/dev/sdb可能是正在使用的笔记本驱动器的文件。这就是在 Linux 中访问设备的方式。除了这些物理设备(如硬盘驱动器)之外,Linux还具有虚拟设备。

虚拟设备是充当物理设备的设备,但实际上仅以软件形式存在。应用程序可以从这些设备获取数据,但该数据不是来自物理设备,而是来自/dev/null,/dev/null是一种特殊的虚拟设备,用于写入而不是读取。写入/dev/null的任何内容都会从操作系统中消失。正是由于这个原因,/dev/null 被称为 bitbucket。例如,将"Hello World"输出重定向到/dev/null中。结果就没有任何输出。“Hello World”不存储在系统上的任何文件中。它只是消失了。

/dev/null的使用:在Linux中运行任何命令时,都会生成两个输出流,即标准输出(stdout)和标准错误(stderr)。标准输出是程序正常生成的任何输出。标准错误包含命令生成的所有错误。stdout和stderr流可以通过它们的文件描述符(分别为 1 和 2)进行访问。

/dev/null与stdout和stderr一起使用:如下图所示,ping xrun.log是不会成功的,所以1>m.txt是有问题的,因为1代表标准输出stdout;这里应该使用2>n.txt,因为2代表标准错误输出,所以,m.txt是空的,n.txt里面存储了标准错误输出的结果。


 
如下图所示,ping xrun.log 2>/dev/null是丢弃错误信息到/dev/null,系统没有任何提示;ping xrun.log >/dev/null是丢弃正确信息到/dev/null,系统报错。



概括来讲,/dev/null 在Linux中是一个void,它会吸收任何输入,并且不返回任何内容。大多数情况下,管理员使用它来转储无用的数据,在其中输出,这样它就不会占用系统内存和处理能力。甚至可以通过将无用的文件直接移动到/dev/null/ 来删除它们。

30.参考文献 [转自微信公众号《芯片验证日记》]

[1] https://mp.weixin.qq.com/s/qzkIVkWkN_FFw94cFXdcbA[2] https://blog.csdn.net/wq1205750492/article/details/124497195
[3] https://blog.csdn.net/lxw1844912514/article/details/123414823
[4]大乐学IT
 
 
 
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
用户名: 验证码: 点击我更换图片