0%

命令工具常用操作

这里列举一些常用的,又不容易记忆的linux工具命令

zotero 添加SCIhub

1
Edit-Preference-Config editor-extensions.zotero.findPDFs.resolvers

添加

1
2
3
4
5
6
7
8
9
{
"name":"Sci-Hub",
"method":"GET",
"url":"https://sci-hub.ren/{doi}",
"mode":"html",
"selector":"#pdf",
"attribute":"src",
"automatic":true
}

然后,使用Zotero Connector或者Find Available PDF均可下载已有的PDF文件。

nvidia

1
2
3
4
5
6
7
8
nvidia-smi # 查看显卡信息
watch -n 0.1 nvidia-smi #每隔0.1s更新
lspci|grep NVIDIA # 查看显卡驱动
lspci | grep -i vga
sudo sh NVIDIA-Linux-x86_64-440.64.run # 安装Nvidia驱动
# 或者下面代码安装cuda
sudo chmod +x cuda_11.0.3_450.51.06_linux.run
sudo ./cuda_11.0.3_450.51.06_linux.run

添加路径

1
2
3
4
5
sudo gedit ~/.bashrc
export PATH="/usr/local/cuda-11.0/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH"
source ~/.bashrc
nvcc -V # 查看cuda安装

删除cuda。(有时候需要删除后,重新安装别的版本)

1
2
3
cd /usr/local/cuda-11.0/bin/
sudo ./cuda-uninstaller
sudo rm -rf /usr/local/cuda-11.0

安装cupti

1
2
sudo apt-get install libcupti-dev
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64

Sphinx

1
2
3
4
conda install Sphinx
sphinx-build --version
sphinx-quickstart docs
sphinx-build -b html docs docs/_build/html

Colab

Colaboratory is built on top of Jupyter Notebook.

GPU可以快速提高训练的速度。Colab提供K80显卡,价格一万多元。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 查看显存情况
!/opt/bin/nvidia-smi

# 查看GPU
import tensorflow as tf
tf.test.gpu_device_name()
# 在使用哪个GPU
from tensorflow.python.client import device_lib
device_lib.list_local_devices()

# 查看CPU
!cat /proc/cpuinfo

# RAM大小
!cat /proc/meminfo

使用google drive数据的方法:https://colab.research.google.com/notebooks/io.ipynb

1
2
3
4
from google.colab import drive
drive.mount('/content/drive')
import os
os.chdir('/content/drive/My Drive/')

Conda

Conda 比较慢,可以使用mamba加速:

1
conda install -c conda-forge mamba

之后,使用mamba替代conda使用。

Conda是一种python包管理工具,可以对环境进行封闭管理,不同环境之间不相互干扰。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
conda --version # 版本号
conda env list # 列出所有环境
conda list -n python_3.9 # 列出非当前环境的包
conda list # 列出当前环境的包
conda create -n env_name package_name # 创建环境,如conda create -n python2 python=2.7
conda activate python2.7 # 激活某环境
conda deactivate # 退出当前环境
conda install package_name #在当前环境中安装包
conda remove package #删除当前环境中的包
conda install --name env_name package_name #在指定环境中安装包
conda remove -- name env_name package
conda create -n tensorflow_env tensorflow #安装tensorflow的CPU版本
conda install tensorflow # 在当前环境下安装tensorflow
conda search tensorflow # 查找版本

删除环境之前需要先deactivate

1
2
conda deactivate tensorflow_env
conda remove -n tensorflow_env --all

添加conda-forge channel并设置为最高优先级

1
conda config --add channels conda-forge

查看现在的channel状态和优先级

1
conda config --get channels

激活某个环境,在环境中设置channel的严格优先。注,如果该环境中已经安装了若干库,则需要先更新所有的库以保证大多数库从conda-forge下载,以保持库的一致性。

1
2
3
4
5
6
# activate my environment
conda activate my_env
# update all packages if needed
conda update --all
# set channel priority as strict
conda config --set channel_priority strict

使用添加频道 conda config –add 频道 —(你的频道) 您添加的最后一个频道获得最高优先级……所以请保持顺序。您可以添加频道,即使您已经拥有它们,以便更改优先级顺序.

恢复原来的源,删除添加的源和设置。

1
conda config --remove-key channels

Docker

理解image、container。image可以共用,比如Ubuntu环境,而且非常精简。container是每次启动后的封闭容器,一个Ubuntu可以启动无数个container,彼此不相干。

1
2
3
4
5
6
7
8
9
10
docker images
docker info
docker run -it ubuntu bash
docker ps
docker ps -aq
docker start (id)
docker restart
docker kill
docker kill $(docker ps -aq)
docker start -d (id)

退出容器:

1
exit

退出,但是还在后台运行,Ctrl+P+Q.
退出后再次进入docker start -d (id)或者docker exec -it 3e17550b10c8 bash。此外还有attach可以进入正在运行的窗口。

查看日志

1
docker logs -f -t --details 3e17550b10c8

hexo

下面是简单的上传博客文章的hexo命令,其中hexo d -m "message" 可以产生commit

1
2
3
hexo new post "linux tools"
hexo g
hexo d -m "linux tools"

插入公式:

1
2
npm uninstall hexo-math --save
npm install hexo-renderer-mathjax --save

配置参考:

https://www.jianshu.com/p/9b9c241146bc

行内的公式用$公式内容$包裹起来,在公式中右键即可查看公式$\TeX$代码。
同样右键可查看公式代码。

例如:
\begin{equation} \sum_{k=1}^{n} \frac{1}{1+8 \sin ^{2} \frac{k \pi}{n}}=\frac{n\left(2^{n}+1\right)}{3\left(2^{n}-1\right)} \end{equation}

文章抬头需要加入类似:

1
2
3
4
5
6
---
title: hexo中插入数学公式
date: 2019-05-09 12:40:16
mathjax: true
tags:
---

git

常用git命令

1
2
3
4
git status
git add .
git commit -m "add dac"
git push origin master

弹出openSSH的问题,要求第二次输入username和密码,注意这里需要登录GitHub,新建一个Personal access tokens。username就是note的名字,密码就是token。

更新代码到本地。如果本地没有修改,可以直接使用:

1
git pull

撤销不小心add的文件

1
git reset data/era5/4d/south/era5.pl.*.nc

.gitignore修改无效的问题
.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的,所以我们需要使用rm命令清除一下相关的缓存内容.这样文件将以未追踪的形式出现,对某个文件取消跟踪。

1
2
3
git rm -r --cached .
git add .
git commit -m 'update .gitignore'

git撤回commit

写完代码后,我们一般这样
git add . //添加所有文件
git commit -m “本功能全部完成”
执行完commit后,想撤回commit,怎么办?
这样凉拌:
git reset –soft HEAD^

不再追踪某文件

1
git rm --cached test/ja3_check/mypoints.kml

在VPN,比如clash,环境下使用,遇到错误:

1
fatal: unable to access 'https://github.com/yangleir/gnsswave.git/': failed to connect to github.com port 443: timed out

解决方案:

1
2
git config --global https.proxy http://127.0.0.1:7890
git config --global https.proxy https://127.0.0.1:7890

或者在用户根目录下,直接打开.gitconfig,手动修改:

1
2
3
4
5
[http]
postBuffer = 524288000
proxy = 127.0.0.1:7890
[https]
proxy = 127.0.0.1:7890

批量解压gz

我下载了很多个文件夹,每个文件夹下都是gz压缩文件,现在想批量解压指定文件夹的文件。

文件下载如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ ls | head
cycle_0066/
cycle_0067/
cycle_0068/
cycle_0069/
cycle_0070/
cycle_0071/
cycle_0072/
cycle_0073/
cycle_0074/
cycle_0075/

$ ls cycle_0099 | head
global_sla_l2p_ntc_h2_C0099_P0001_20150704T020146_20150704T024914_20180712T075832.nc.gz
global_sla_l2p_ntc_h2_C0099_P0002_20150704T025439_20150704T034613_20180712T075832.nc.gz
global_sla_l2p_ntc_h2_C0099_P0003_20150704T034614_20150704T043339_20180712T075832.nc.gz
global_sla_l2p_ntc_h2_C0099_P0004_20150704T043901_20150704T053040_20180712T075832.nc.gz
global_sla_l2p_ntc_h2_C0099_P0005_20150704T053041_20150704T062248_20180712T075832.nc.gz
global_sla_l2p_ntc_h2_C0099_P0006_20150704T062321_20150704T071508_20180712T075833.nc.gz
global_sla_l2p_ntc_h2_C0099_P0007_20150704T071509_20150704T080720_20180712T075833.nc.gz
global_sla_l2p_ntc_h2_C0099_P0008_20150704T080722_20150704T085935_20180712T075833.nc.gz
global_sla_l2p_ntc_h2_C0099_P0009_20150704T085936_20150704T095149_20180712T075833.nc.gz
global_sla_l2p_ntc_h2_C0099_P0010_20150704T095150_20150704T104402_20180712T075833.nc.gz

解压cycle_0068和cycle_0069两个文件夹下的全部gz文件,并删除gz原始文件。

1
gzip -d cycle_006[8-9]/*.gz

批量转换图片格式

把pdf转为png,并设置density 300,表示图像每英寸面积内的像素点数,数值越高图片质量越高

1
for file in *.pdf; do magick convert -density 300 $file ${file%%.*}.png; done

视频编辑

截取视频

1
2
$ ffmpeg  -i ./linchang.mp4 -vcodec copy -acodec copy -ss 00:00:00 -to 00:00:16 ./cutout1.mp4 -y
$ ffmpeg -i ./linchang.mp4 -vcodec copy -acodec copy -ss 00:00:29 -to 00:00:48 ./cutout2.mp4 -y

合并视频(对于MP4格式,需要先转ts再合并)

1
2
3
$ ffmpeg -i cutout1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input1.ts   
$ ffmpeg -i cutout2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input2.ts
$ ffmpeg -i "concat:input1.ts|input2.ts" -c copy -bsf:a aac_adtstoasc -movflags +faststart output.mp4

慢速,三倍慢速

1
$ ffmpeg -i 2021-02-19-22-38-32.mp4 -vf  "setpts=3*PTS" test2.mp4

Latex转word

1
pandoc template.tex -o output.docx -w docx  --pdf-engine pdflatex

Linux 解压乱码问题

使用下面的编码即可。

1
unzip -O CP936 test.zip