计算化学公社

标题: 量化计算中的技巧(一) [打印本页]

作者
Author:
sky    时间: 2017-7-11 14:27
标题: 量化计算中的技巧(一)
本帖最后由 sky 于 2017-7-12 11:54 编辑

这是很早就计划好的一个系列,去年写过几篇文章。但是后来因为处理其它事而中断了一年。现在回来继续更新。
写这一系列文章的初衷主要是我发现我接触过的所有做量化计算的人和组,无论科研水平高低,对计算机的了解都仅限于皮毛,因为关注重心都在了怎么发文章上,而忽略了其它东西,比如说怎么用计算机提高工作效率。
做计算跟做实验不一样,实验上想要降低工作量,要么花钱找人代劳,要么压榨本科生,都不具有普适性。而计算机本来就是发明出来降低人类工作量的,尤其是对于重复的、无意义的工作。这一点在程序猿身上体现的淋漓尽致,为了提高工作效率,他们搞出了自动化部署、自动化测试工具,还写了专门的IDE来帮助写代码,把所有精力都集中到思考怎么写代码身上。
做量化计算的人其实跟程序猿有很多共同之处,很多习惯、思维和工具都可以借鉴程序猿的做法。比如当年跟一个程序猿聊过天,他就说对于程序猿来说,想方设法偷懒就是一个重要的习惯,把所有重复性的工作都写成代码,让机器去完成。

在接下来的一系列文章中,我就将介绍怎么省去这些重复劳动,把精力都集中到科研上。

首先介绍第一点:求求你们把bash shell都换了吧!!
shell 就是你敲命令的那个界面,而bash shell是linux自带的。除了bash shell,还有zsh shell, csh shell, ksh shell等等。每个shell使用方法大致相同,功能上略有差异。
我见过的所有做计算的人和组,用的全是清一色的bash shell,整个界面只有黑白两色,看着都难受。
gaussian可能还好一点,VASP的所有输入输出文件全是大写的,所以需要不停地在大小写之间来回切换,难道没有人觉得麻烦吗??
切换目录都需要在前面加 cd,你不觉得麻烦吗??
目录都需要一级一级敲,一级一级补全,没有人觉得麻烦吗??
曾经见过一个老师做计算,他的每个目录名字都很长,所以每进一级目录就得用一次ls,然后用鼠标双击需要的目录复制,再cd 粘贴。切换10次目录,就要在鼠标键盘之间来回10次,最关键的是他还不会盲打,所有命令都是食指敲出来的,看着我都难受(无意黑这位老师,他科研水平很高的,而且帮了我很多)。真的无法想象用这种界面是怎么做十几年科研的。


而fish shell可以解决上述所有烦恼:
fish shell: www.fishshell.com

随便举几个常用的例子:
1. 用vim编辑POSCAR文件只需要在小写状态下输入:
(, 下载次数 Times of downloads: 71)
然后按tab,就能自动补全大写:
(, 下载次数 Times of downloads: 76)
无论是目录还是文件,都不需要切换大小写。

2. 切换目录直接输入路径名称,不需要输入cd:
(, 下载次数 Times of downloads: 71)
按回车直接跳转

(, 下载次数 Times of downloads: 70)


3. 自动识别你曾经输入过的命令,比如我在之前的计算中,使用命令生成了一个POTCAR文件:
(, 下载次数 Times of downloads: 74)
之后我在新的目录里,只需要再输入ca两个字母,系统会给你提示出以ca字母开头的上一条使用过的命令:


(, 下载次数 Times of downloads: 62)
这时候只要按方向键→,就能自动补全整条命令:
(, 下载次数 Times of downloads: 72)
如果输入‘ca’后系统提示的命令'cat POTCAR >>POTCAR1'不是你想要的怎么办?按方向键↑自动列出你曾经使用过的,以ca开头的命令:
(, 下载次数 Times of downloads: 69)

4. 目录名称和文件名称模糊匹配
比如我有两个文件,分别是‘abc_def’和‘abc_hij’
我只需要输入:
  1. > ls bj
复制代码


然后按tab,就能自动补全为:
  1. > ls abc_hij
复制代码


5. 按alt+←或者alt+→可以在之前访问过的目录中随意跳转

fish shell能解决的问题远不止上面说到的那些,只有真正用过了才能体会到fish shell带来的便利。两者相比,bash shell就像是上个世纪老掉牙的产品,而fish shell才是属于这个时代的工具,时刻都能感受到它的优美和人性化设计,实际使用起来的体验和效率也是分分钟吊打bash shell的。


安装方法非常简单,只要是linux系统都能安装。这点官网写的很详细了,只要能拿到root权限,复制粘贴几条命令就可以了。

除此之外要是对自己电脑有足够自信,可以试试zsh shell,这才是shell当中的极品:
为什么说 zsh 是 shell 中的极品?(www.zhihu.com/question/21418449

可惜配置起来非常麻烦,可以调的参数太多了,对新手极不友好。




作者
Author:
get-it    时间: 2017-7-11 14:43
之前试过fish shell,不过用vi时有点问题就没有继续了
顺便,第一个功能修改inputrc也可以实现
作者
Author:
ulosggs    时间: 2017-7-11 14:51
再次鼓吹一遍 zsh 和 oh-my-zsh

https://github.com/robbyrussell/oh-my-zsh

免配置
作者
Author:
冰释之川    时间: 2017-7-11 15:11
楼主帖子分类有问题,应该发往 “计算机使用与Linux交流”。
作者
Author:
laoman    时间: 2017-7-11 16:39
本来还以为楼主准备教我等量化小白怎么做量化计算的,结果却是给什么shell打广告的,从入门开始就是用的bash shell,用得很习惯了,也不觉得有多麻烦。
期待楼主的第二篇可以更精彩些。
作者
Author:
冰释之川    时间: 2017-7-11 17:06
laoman 发表于 2017-7-11 16:39
本来还以为楼主准备教我等量化小白怎么做量化计算的,结果却是给什么shell打广告的,从入门开始就是用的bas ...

+1  bash shell 用习惯了,也就不想折腾了
作者
Author:
rtransformation    时间: 2017-7-11 18:54
本帖最后由 rtransformation 于 2017-7-11 18:56 编辑

感觉bash基本都能做,自动补全大小写,我配置的是if [[ $labtest > 0 ]]; then bind "set completion-ignore-case on"; fi(labtest是前面定义的一个参数),其他想要什么功能比如跳转目录什么的,GitHub上有各种“软件”,安装就行了。
嫌bash的prompt做的不好看,可以自己设计,我就设计成这样:
(, 下载次数 Times of downloads: 74)
当命令输入错误的时候,那个对号就变成闪烁的“叉”
(, 下载次数 Times of downloads: 81)
不也挺好看的

作者
Author:
ggdh    时间: 2017-7-11 21:55
本帖最后由 ggdh 于 2017-7-11 22:00 编辑

楼主给的知乎连接不能访问?原来是把括号给包括到链接当中了。。https://www.zhihu.com/question/41076349 知乎上这篇也可以参考



作者
Author:
冰释之川    时间: 2017-7-11 21:57
ggdh 发表于 2017-7-11 21:55
楼主给的知乎连接不能访问?

www.zhihu.com/question/21418449   【你把最右边的半个括号去了就能进】
作者
Author:
Jasminer    时间: 2017-7-11 23:08
冰释之川 发表于 2017-7-11 17:06
+1  bash shell 用习惯了,也就不想折腾了

+1
作者
Author:
sky    时间: 2017-7-12 08:19
ulosggs 发表于 2017-7-11 14:51
再次鼓吹一遍 zsh 和 oh-my-zsh

https://github.com/robbyrussell/oh-my-zsh

用过一次,感觉什么都不配置的话比起fish还是差了点
作者
Author:
sky    时间: 2017-7-12 08:20
冰释之川 发表于 2017-7-11 15:11
楼主帖子分类有问题,应该发往 “计算机使用与Linux交流”。

太久没来,没注意还有这个分类
作者
Author:
sky    时间: 2017-7-12 08:23
rtransformation 发表于 2017-7-11 18:54
感觉bash基本都能做,自动补全大小写,我配置的是if [[ $labtest > 0 ]]; then bind "set completion-ignor ...

与其装一堆软件,还不如直接装一个fish得了。
要是这么折腾,都可以玩玩zsh了
作者
Author:
rtransformation    时间: 2017-7-12 09:42
sky 发表于 2017-7-12 08:23
与其装一堆软件,还不如直接装一个fish得了。
要是这么折腾,都可以玩玩zsh了

感觉还是折腾好玩,2333
作者
Author:
wuy069    时间: 2017-7-16 21:54
呵呵!如果是单机,想怎么折腾都行,集群还是免了吧;尽管号称都兼容bash shell,但为什么各大服务器linux版还是用bash shell呢
作者
Author:
luopeng32477    时间: 2017-8-10 10:11
受教了
作者
Author:
kyuu    时间: 2017-8-25 17:10
Bash shell老掉牙?Vim在线编辑文本?咱敢不敢再多拿出点勇气出来继续写写,我看看还有什么是我跟现世脱钩的




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3