zhoufcumt的个人博客分享 http://blog.sciencenet.cn/u/zhoufcumt

博文

linux下一些很有意思的工具

已有 3160 次阅读 2013-3-21 16:02 |个人分类:LINUX|系统分类:科研笔记| Linux, 查找, grep

最近在看fortran的源码,尝试了一些很有意思的linux下的命令或工具,现罗列出来与大家分享。


首先在你的.bashrc下设置这样的语句,这样查看出来的关键字是红色字体,比较醒目:

# for grep

alias grep='grep --color=auto'


1.在查看一些命令的帮助文件时,你可能想知道哪些参数是大小写不敏感的(case insensitive),比如find命令,那么你可以这样 man find | grep -3n case,这个3是打印其中一个case关键词的上下3行,n是打印出关键字所在的行数。


2.查看当前目录下文件的个数:

find . -type f | wc -l

.代表当前路径,也可以指定绝对或相对路径。


3.删除当前目录下除某种后缀名以外的其它文件,比如当前目录下有大量的.11o、.12o、.11n、12n、.sp3等格式的文件,我只想保留.sp3格式的文件,可以这样做:

rm `ls | grep -v ".sp3"`

NOTE: ls左上角和上面命令最右上角的是tab键上面的符号。


4.我在读fortran77源码的时候遇到这样一个问题,比如我有个main.f程序调用test和test1两个subroutine,而test和test1这两个subroutine同时定义在了test.f程序里,如果文件很多的话 我想查看test1是如何定义的是件很麻烦的事情,因为谁也不知道test1会定义在test.f里。

方法一)这时候可以用nm来获取,比如编译的时候将test.f编译在了类似libtest.a这样的静态库里,那么:

nm -a libtest.a > temp

在生成的temp文件搜索test1,本例子会出现两个test1(main.o和test.o下),main.o下的test1前面有U参数,表示在main.o下被调用,但并没有定义;而test.o下的test1前面有T参数,表示在test.o下定义。

nm libnetcdf_linux.a | grep -in nf_open

方法二)一个很简单但很给力的方法,还是要用到grep工具,在当前目录下:

grep -i test1 *.f

-i参数是忽悠查找的参数的大小写,这样会将当前目录下所有文件出现test1的地方的对应的那一行打印出来,无论是引用还是调用,如果这还不能满足你,那么加上-n参数,即

grep -in test1 *.f

试试看吧,不光针对fortran程序,对于c、c++这样即使有头文件声明的,grep也照样发挥它强大的查找功能,如果你懒得去看头文件的声明的话。



https://blog.sciencenet.cn/blog-350278-672551.html

上一篇:科研忽悠时代,咱坚决远离忽悠!
下一篇:NETCDF文件读取要点
收藏 IP: 222.66.117.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-10-20 04:45

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部