tag 标签: shell

相关帖子
相关博文
  • 2021-6-8 18:05
    52 次阅读|
    0 个评论
    心血来潮想写一篇帖子,一来是想总结下最近的收获,二来也想与各位相互探讨一下 初识 python 是因为课题组需求,对具有不同尺度和构型的富勒烯进行半经验的结构优化。 前处理(也就是生成输入文件)及后处理(提取能量及排序)主要使用 open 方法去读写文件,另外就是需要学习正则表达式,利用的是 re 库的 findall 方法,以便准确找到输出文件中的能量; 中间的计算过程是在 linux 操作系统下进行的,使用的是 shell 语言,调用 Gaussian 。比起 python , shell 语言更容易上手,很少的代码量就能执行很复杂的功能,我给出几个常用的命令: cd 进入某一目录 sed 修改、删除、添加文件中指定行的内容 grep 用来搜索指定文件的指定字符串,输出包含字符串的行 awk 指定分隔符(比如空格, abc , 123 )分隔指定的行(可以是 grep 输出的行),输出特定位置的字符串 for 循环或 which 循环 if 判断 文件重定向 文件追加 | 管道,上一个命令的输出作为下一条命令的输入,常用做法: grep 字符串 文件名 | awk-F ' ' '{print $1,$2,$5}' 此命令的含义是先 grep 一个文件找到包含字符串的所有行,然后在这些行中以,为分隔符将行分为多个段,最后输出第 1 、 2 、 5 段的字符 python 由于可以使用第三方库,使得其使用领域极为宽泛,这里针对计算化学,我推荐几个常用且好用库 pymatgen 可以用于 vasp 、 gaussian 、 abinit 、 lammps 、 QE 等多个模拟软件的输入生成和后处理,其中针对 vasp 的后处理极为全面,建模和后处理功能极其强大。 pymatgen.analysis.defects package — pymatgen 2022.0.8 documentation openbabel 用于分子结构的建模或可视化,甚至包含类似 gaussian 、 MS 的 clean 功能,即利用分子力场( uff 、 mmff94 、 guff 等)快速优化结构,用分配了 2 核 4g 内存的虚拟机优化一个 80 原子左右的结构用时 0.03s ,另外还支持结构转 smiles 及 smiles 转结构功能,安装此库需要限制 python 版本为 3.7 以下。 Python — Open Babel v2.3.1 documentation RDkit 功能上类似于 openbabel ,个人认为 openbabel 好用,弊端是此包解析 gaussian 和 MS 生成的 mol 文件会出错,此包生成的 mol 文件与前者格式不同。 The RDKit Documentation — The RDKit 2021.03.1 documentation ase 提供了非常多计算软件的接口,几乎包含了所有主流模拟计算软件,另外自身也包含了 BFGS 等优化算法以及四个简陋的 calculator ,多数用不上,主要是利用其接口。 Atomic Simulation Environment — ASE documentation (dtu.dk) moapc 此包是软件 mopac 的接口,主要功能是利用半经验方式优化结构,没有动力学功能,也就是说无法利用成键信息( mol 文件)优化结构。 目前先整理这么多,后续再做继续补充吧 想做高通量材料智能设计的,首推 MatCloud+ http://matfusion.paratera.com ———————————————— 版权声明:本文为 CSDN 博主「 qq_40983842 」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接: https://blog.csdn.net/qq_40983842/article/details/117548957
  • 热度 3
    2020-4-13 20:36
    2240 次阅读|
    1 个评论
    在公司项目的开发过程中,需要编写shell脚本去处理一个业务,在编写过程中发现自身对shell脚本的知识不够完善,顾整理一下,本文章主要内容来自 菜鸟教程 , 也添加了一些知识点 看完这边文章应该就可以独立完成大部分脚本得编写 shell脚本? 在说什么是shell脚本之前,先说说什么是shell。 shell是外壳的意思,就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包括ls、cd、pwd等等。总结来说,Shell是一个命令解释器,它通过接受用户输入的Shell命令来启动、暂停、停止程序的运行或对计算机进行控制。 shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。 shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序。 那么什么是shell脚本呢? shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件中,进行处理业务逻辑,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。 shell脚本中最重要的就是对shell命令的使用与组合,再使用shell脚本支持的一些语言特性,完成想要的功能。 博主所有文章首发在微信公众号:【 匠心Java 】 【匠心Java】公众号分享工作中涉及到的技术知识,主要分享数据库相关和Java技术干货(JVM+并发+全链路优化);涉及计算机网络、数据结构与算法、linux等编程知识; 注释 “# ”开头的就是注释,被编译器忽略 单行注释: # 多行注释: :<
  • 热度 28
    2016-4-10 15:48
    2291 次阅读|
    0 个评论
    对操作系统来讲,无论是 PC 的 Windows 、 Linux 还是嵌入式系统 VxWorks 、 QNX 、 SylixOS , shell 都是一个强大的调试手段,在进行驱动开发、应用开发、系统维护方面有着重要作用。 SylixOS 提供了基本的 shell 命令,能够满足绝大多数情况下的需要,但在一些特殊应用中通过添加自定义的 shell 命令,可以极大的方便设备的维护和使用。 在 SylixOS 中添加 shell 命令的函数为 API_TshellKeywordAdd ,该函数需要在内核模块中调用,函数介绍如下: API_TShellKeywordAdd(pcKeyword,       /*  添加的 shell 命令     */            pfuncCommand);       /*  执行 shell 命令的函数  */ 下面使用一个简单的实例演示添加 shell 命令的过程,该命令可以实现三个整数的加法运算。 #define  __SYLIXOS_KERNEL #include SylixOS.h #include "linux/compat.h" #include module.h   #include "../SylixOS/kernel/include/k_kernel.h" #include "../SylixOS/system/include/s_system.h" #include "../SylixOS/system/include/s_internal.h" #include "sys/time.h" /****************************************************************************** ** 函数名称: shellCmdTest ** 功能描述: 添加的 shell 测试命令功能函数 ******************************************************************************/ INT  shellCmdTest (UINT32  uiStart, UINT32  uiCount, UINT32  uiData) {     UINT32  uiRet;       uiRet = uiStart + uiCount + uiData;     printk("result:%d\n", uiRet);       return  (ERROR_NONE); } /****************************************************************************** ** 函数名称: tshellTestCmd ** 功能描述: 向内核添加的测试命令 ******************************************************************************/ static INT  tshellTestCmd (INT  iArgC, PCHAR  ppcArgV , "-g") == 0) {     }     sscanf(ppcArgV , "%d", uiStart);     sscanf(ppcArgV , "%d", uiCount);     sscanf(ppcArgV , "%d", uiData);       shellCmdTest(uiStart, uiCount, uiData);       return  (ERROR_NONE); } /****************************************************************************** ** 函数名称: module_init ** 功能描述: 内核模块被注册进系统时调用的函数 ******************************************************************************/ int module_init (void) {     API_TShellKeywordAdd("numadd",                   /*  添加的 shell 命令           */                              tshellTestCmd);            /*  执行 shell 命令的函数       */     return  (ERROR_NONE); } /****************************************************************************** ** 函数名称: module_exit ** 功能描述: 内核模块从系统时调用的函数 ******************************************************************************/ void module_exit (void) { } 代码使用: 1. 在控制台中将工作目录切换到“ /lib/modules ”,注册模块并测试 shell ,过程如下; # ls modu_shell_add.ko               xinput.ko       xsiipc.ko # modulereg modu_shell_add.ko hello_module init! module modu_shell_add.ko register ok, handle : 0x30c74910 # numadd 1 3 5 result:9 # 注意:本例程的工程创建时,需要选择 kernel module工程类型
  • 热度 26
    2016-3-12 23:23
    1021 次阅读|
    0 个评论
    awk工作流程是这样的:读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是"空白键" 或 " 键",所以$1表示登录用户,$3表示登录用户ip,以此类推。 awk中同时提供了print和printf两种打印输出的函数。 其中 print 函数的参数可以是变量、数值或者字符串。字符串必须用双引号引用,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。这里,逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。 printf 函数,其用法和 c 语言中 printf 基本相似 , 可以格式化字符串 , 输出复杂时, printf 更加好用,代码更易懂 awk 中同时提供了 print 和 printf 两种打印输出的函数。 其中 print 函数的参数可以是变量、数值或者字符串。字符串必须用双引号引用,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。这里,逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。 printf 函数,其用法和 c 语言中 printf 基本相似 , 可以格式化字符串 , 输出复杂时, printf 更加好用,代码更易懂
  • 热度 20
    2016-3-12 23:18
    1873 次阅读|
    0 个评论
    shell 读取文件的指定行字符串 在得到数行输出时,需要得到指定行的字段,可以使用该指令。 sed -n Np 文件名 如sed -n 2p xxx 输出结果即为第二行的内容 在shell脚本中有时需要按行读出文件的内容,比如文件中每一行的命令等。假设存在文件filename,需要从中按行读取内容,并在每行的开头增加字符串command,命令如下 cat filename | while read line; do echo "command $line"; done
相关资源