bash 技巧 note

Written by

in

算是写给自己看也方便自己记住。

最近运行python程序的时候学会了一个用法 -m, 具体的来说就是可以直接从当前root调用文件夹内的程序而不用担心相对关系。比如 在文件结构如下的时候

+Root ———————+
+–Data ——————-+
+—-32_1.npy————-+
+–Output—————–+
+–Scripts—————–+
+—- compare_data.py—+
+ main.py——————+

可以用 python -m Root.Scripts.compare_data 来调用程序。在用argparser设置了参数以后,参数的调用也可以直接从子文件夹开始就可以了,比如–data-dir Data/32_1.npy

在调用bash命令的时候可以活用 > 来调节输出,比如

python s.py 2>&1 >output.txt

python s.py >output.txt 2>&1

之间,前者将stderr映射到了terminal,但是只有stdout输出到了output.txt,而后者先将stdout映射到了output.txt,然后将stderr也映射到了同一个地址,导致的后果就是terminal里什么都没有,但是所有的结果都输出到了output.txt。bash里的小逻辑还真是挺有趣的。

这倒让我想起来在hpc上面交任务的时候,有时候要批量处理,我会做

for i in {1..15}; do cd a_$i; sbatch main.py; cd ..; done; end;

现在想起来,当时的代码要是写成现在可以指定输出文件夹的方式,跑起来就舒服多了,也不需要一直cd进文件夹去,哈!

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.