history
history命令是Linux/Unix系统中的一个常用命令,用于查看当前用户在命令行中执行过的命令历史记录。该命令允许用户查看、搜索、编辑和执行之前执行过的命令,为用户提供了方便、快捷的操作方式。
查看历史命令:
history
查看最近n条历史命令:
history n
搜索历史命令:
history |grep "指定字符串"
调出第84行命令执行:
!84
调出上一条指令执行
!!
grep
grep是一个在Unix和Unix-like系统上使用的命令行工具,用于在文本文件中搜索匹配指定模式的行。它的名字来自于"global regular expression print"(全局正则表达式打印)的缩写。grep的基本用法是通过指定一个正则表达式模式和一个文件名(或者从标准输入读取数据),来查找和打印与模式匹配的行。它可以用于简单的文本搜索,也可以与其他命令结合使用来实现更复杂的操作。
递归查询当前目录下匹配的字符串,直接定位软件源码报错位置,方便debug:
grep "指定字符" * -nr
管道
Linux管道(Pipeline)是一种将多个命令连接在一起形成一个处理数据流的方法。通过管道,一个命令的输出可以直接作为另一个命令的输入,实现数据的连续处理,提高命令行的灵活性和效率。当在两个命令之间设置管道时,管道符|左边命令的输出就变成了右边命令的输入。只要第一个命令向标准输出写入,而第二个命令是从标准输入读取,那么这两个命令就可以形成一个管道。大部分的 Linux 命令都可以用来形成管道。
举个例子,搜索历史命令:
history |grep "指定字符串"
vim
Vim(Vi IMproved)是一款功能强大的文本编辑器,它是Unix和Unix-like系统中的一个常用编辑器。Vim是从Vi编辑器发展而来,提供了许多增强的功能和扩展性。Vim被设计成高度定制和可扩展的,可以通过配置和插件来满足不同用户的需求。
查看文件第561行:
:561
然后回车,直接跳到对应行数找到问题所在。
使用指定库编译软件
一般情况下我们编译安装的软件或库都有四个目录:
-
bin目录:bin目录通常存放可执行文件(二进制文件),例如命令行工具和可执行程序。当您安装新软件或库时,相关的可执行文件通常会被安装在这个目录下。系统会将bin目录添加到环境变量PATH中,以便在任何位置都可以直接运行这些可执行文件。
-
include目录:include目录用于存放头文件,头文件包含了函数和数据结构的声明,供其他程序在编译时引用。
-
lib目录:lib目录用于存放库文件,库文件包含了已编译的代码和函数,供其他程序在链接时使用。通常,库文件分为静态库和动态库两种形式。静态库(以".a"为扩展名)在编译时会被完整地复制到可执行文件中,而动态库(以".so"为扩展名)在运行时由系统动态加载。当您开发软件时,可以将自己编写的库文件或第三方库的库文件放在这个目录下,以便其他程序可以链接并使用。
-
share目录:share目录主要用于存放共享数据,例如程序使用的配置文件、文档、示例数据等。共享数据可以供多个程序或用户共享和访问。
举个例子,mpi库有很多版本,我们需要用指定的mpi编译软件,一种方法是添加环境变量:
export PATH=/usr/local/mpi-x/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/mpi-x/lib:$LD_LIBRARY_PATH
冒号是并列的意思,如果单纯用作字符比如生成文件名需要转义,我就吃了这个亏,所有变量一样,唯有文件句柄不一样,最后查到冒号这里。另一种方法是配置时指定mpi编译软件,CC=/usr/local/mpi-x/bin/mpicc:
./configure --with-log-path=/darshan-logs --with-jobid-env=PBS_JOBID CC=/usr/local/mpi-x/bin/mpicc --prefix=/thfs3/software/darshan_nudt/software/darshan-3.4.4/darshan-prefix