Util | 关于好用的Linux shell命令

1. ls命令查看文件数目

1
2
3
4
5
6
- 查看当前目录下的文件数量(不包含子目录中的文件)
ls -l|grep "^-"| wc -l
- 查看当前目录下的文件数量(包含子目录中的文件)
ls -lR | grep "^-"| wc -l
- 查看当前目录下的文件夹目录个数(不包含子目录中的目录)
ls -l | grep "^d"| wc -l

2. df/du查看磁盘/文件所占空间大小

1
2
3
4
5
6
- 查看磁盘空间利用情况
df -hl
- 查看子文件夹所占磁盘空间大小
du -h --max-depth=1 work/testing(filename)
- 查看某个文件的大小
du -shl 1.tar.gz

3. nohup实现后台训练

1
2
3
4
5
6
7
8
- nohup后台任务:nohup + command + &,当前路径产生日志文件nohup.out 
nohup bash scripts/run_inpaint_sa.sh &
- nohup后台任务,日志重定向到filename.txt
nohup bash scripts/run_inpaint_sa.sh > filename.txt 2>&1 &
- python脚本需要加一个 -u
nohup python -u main.py >ans.log 2>&1 &

log = logging.getLogger() #日志输出中间值

4. zip/unzip命令

  • zip

    1
    2
    3
    4
    - 之前用ssh传文件常用,先压缩再传文件是个好习惯
    zip -q -r gconvcode.zip(压缩后的文件名) Gated_conv(待压缩文件)
    - 解压
    unzip filename.zip
  • tar

    1
    2
    3
    4
    5
    - 多个文件压缩打包 
    tar czvf my.tar.gz file1 file2,...(file*)(也可以给file*文件mv 某目录 再压缩)
    - 解压
    tar -xvf file.tar 解压 tar包
    tar -xzvf file.tar.gz 解压tar.gz
  • 7zip

    1
    2
    3
    4
    - 安装7zip 需要root权限
    sudo apt update && sudo apt install --assume-yes p7zip-full #Ubuntu and Debian
    7z x filename.7z
    7z --help
  • undo unzip & tar

1
2
3
4
- 撤销unzip操作
zipinfo -1 path/xx.zip | xargs rm -rf
- 撤销tar操作
tar -tf xx.tar | xargs rm -rf

5. 学会写shell脚本

1
2
3
4
- 利用 \ 进行换行,脚本易读
- 运行shell脚本
bash scripts/run_inpaint_sa.sh(script name)
更好的方法是将能改的参数全部写进配置文件中(cfg, yml),便于记录训练参数~
  • 批量移动多个子文件内的文件到同一个文件夹中(数据集整理)
    1
    2
    3
    4
    5
    6
    #!/bin/bash
    for var in $(find ./ -name *.jpg);
    do
    cp -vf $var ./image/;
    done
    - 该脚本移动了文件夹内所有以jpg结尾的图片到image目录下。

6. Tips 学会整理数据集

把所有常用数据集整理在同一个文件夹下,并挂载在一个空间大的硬盘上。
训练中间生成数据也一样,进行整理。

  • 利用软链接使用数据集
    ln -s [源文件或目录] [目标文件或目录]
    例:

  • 删除软链接
    rm -rf filename

  • 注意,在打包代码的时候如果目录下有数据集的软链接,(zip)会一同打包,整理code的时候记得把该删的东西都删了。。(不要问我怎么想到这一点的)

7.ssh传输数据(scp,服务器ip)

1
scp -P 端口号 -r 文件名 远程服务器用户名@xxx.xx.xx.xxx服务器ip:/home/fengtl/BlindInpainting/vcnet服务器端路径

Util | 关于好用的Linux shell命令

https://jennyvanessa.github.io/2022/10/23/221023/

Author

Vanessa Ni

Posted on

2022-10-23

Updated on

2023-04-03

Licensed under

Comments

You need to set client_id and slot_id to show this AD unit. Please set it in _config.yml.