linux 命令总结精简有用
目录
1.将目录不含-label.png的文件,加上前缀路径,输出到all.list
5. linux soft link: ln -sf src dst
6.makefile 中 $@ $^ %< 使用http://blog.csdn.net/kesaihao862/article/details/7332528
19 中文显示乱码,vim, print ,命令行等,修改本地语言编码日期货币为中国显示
25.1 那么输出到/dev/null里面,是什么意思呢,都做了什么呢?
1.将目录不含-label.png的文件,加上前缀路径,输出到all.list
1.1 ls . | grep -v -- "-label.png" | awk '{print "PATH_TO_FILES/"$1}' > ../all.list
grep -v :--invert-match ,select non-matching lines
1.2 replace .xml with blank: awk '{sub(/.xml/,"");print $1}'
1.3 把某目录下的文件,去掉后缀,文件名到一个文件中:
ls JPEGImages/ | awk '{sub(/.jpg/, "");print $1}' > all.list
https://github.com/domoritz/label_generator
1.4 把文件夹下面的很多压缩文件解压,到自己名字去掉后缀的文件夹下面,${NAME%.tar},表示NAME去掉.tar
find . -name "*.tar" | while read NAME ; do mkdir -p "${NAME%.tar}"; tar -xvf "${NAME}" -C "${NAME%.tar}"; rm -f "${NAME}"; done
1.5从目录中多个视频中抽取帧,放到去后缀的文件名为目录名的目录中。视频文件后缀h264, 如test_12597_fp1.h264
ls /home/silva/data/carvideo2annotation/ | awk '{sub(/.h264/,"");print $1}' | xargs -I {} turkic extract /home/silva/data/carvideo2annotation/{}.h264 /home/silva/data/carframe2annotation/{}/ --no-resize
1.6 把视频帧导入到turkic 数据库中
ls /home/silva/data/carframe2annotation/ | xargs -I {} turkic load {} /home/silva/data/carframe2annotation/{}/ car --overlap 0 --offline
1.7 把视频段列表转换为网页(加<br>)
cat ~/test_0.txt | while read NAME; do echo "<br>"$NAME"<br>" >> b.txt ; `turkic find --id $NAME|xargs -I {} echo {}"<br>" >> b.txt`;done
y=0;cat ~/test_0.txt | while read NAME; do echo "<br>"$NAME `echo $(($y%3))`"<br>" >> c.txt ; `turkic find --id $NAME|awk '{gsub(/localhost/, "192.168.12.31");print $0}'|xargs -I {} echo {}"<br>" >> c.txt`;y=$y+1; done;
1.8 从一台机器一个目录烤到另外一个一个机器的目录
从目标机器新建一个目录,拷贝小于1G的用M,否则有问题; 不包含后缀.pkl .o .caffemodel ;条件或|要加反斜杠
mkdir pyfaster2 && cd pyfaster2
ssh sam@192.168.12.243 "cd /home/sam/src/pyfaster2 && find . -size -1000M \( ! -regex'.*/\..*\|.*\.pickle\|.*\.bak\|.*\.bak2\|.*\.bin\|.*\.pkl\|.*\.caffemodel\|.*\.o\|.*\.mdb\|.*\.git/.*' \) | cpio -ov | bzip2 -c" | bunzip2 -c | cpio -ivd
使用awk,正则表达式,列出目录中不包含.git/, .pickle等的文件:
find . -size -1000M | awk '!/.*\.git\/.*/ && !/.*\.pickle/ && !/.*\.bak/ && !/.*\.bak2/ && !/.*\.bin/ && !/.*\.pkl/ && !/.*\.caffemodel/ && !/.*\.o$/ && !/.*\.mdb$/ && !/.*nohup\.out.*/'
远程传输
find caffeup2date_pyfasterrcnn -size -1000M \( ! -regex '.*/\..*\|.*\.pickle\|.*\.bak\|.*\.bak2\|.*\.bin\|.*\.pkl\|.*\.caffemodel\|.*\.o\|.*\.mdb\|.*\.Git/.*\|.*\.nohup.*' \) | cpio -oaV -O archive2.cpio
scp -l 500 -P9520 archive2.cpio sam@202.100.210.218:/home/sam/src/ar2.cpio #因为scp 贪婪的用大带宽,如果网速不好要限速,才不会stalled
cpio -imVd -I archive.cpio
2.将JPEG文件改变大小,保持横纵比例。
resize all the images such that the smaller dimension is 256 and the aspect ratio is intact
find. -name "*.JPEG"| xargs -I {} convert {} -resize "256^>" {}
convert clapton-1.jpg -resize 96x90! clapton-1p.jpg
https://github.com/facebook/fbcunn/tree/master/examples/imagenet
3.如何知道一个可执行程序依赖哪些库
ldd命令可以查看一个可执行程序依赖的共享库,ldd -v可以查看动态库有依赖与那个依赖库, 非常有用
例如# ldd /bin/lnlibc.so.6
=> /lib/libc.so.6 (0×40021000)/lib/ld-linux.so.2
=> /lib/ld- linux.so.2 (0×40000000)
可以看到ln命令依赖于libc库和ld-linux库
查看一个正在运行的程序加载了哪些动态库
查看apache2 加载了哪个python
sudo lsof | grep apache2 |grep libpython
3.1如何知道一个动态库,来源于那个安装包:
dpkg -S libopencv_core.so
sudo apt-cache rdepends lib32stdc++6
另外一种方法是:
sudo apt-get update && sudo apt-get install apt-file
sudo apt-file update
sudo apt-file search /usr/lib32/libstdc++.so.6
The result should be :
$ apt-file search /usr/lib32/libstdc++.so.6
lib32stdc++6: /usr/lib32/libstdc++.so.6
lib32stdc++6: /usr/lib32/libstdc++.so.6.0.21
lib32stdc++6: /usr/share/gdb/auto-load/usr/lib32/libstdc++.so.6.0.21-gdb.py
lib32stdc++6-5-dbg: /usr/lib/debug/usr/lib32/libstdc++.so.6.0.21
/usr/lib32/libstdc++.so.6
4.查看导出的库函数
nm -D /usr/lib/libopenal.so.1
.
.
.
00012ea0 T alcSetThreadContext
000140f0 T alcSuspendContext
U atanf
U calloc
5. linux soft link: ln -sf src dst
hard link: ln src dst
difference: hard link have no difference with original file. Soft link is just a link to the file.
6.makefile 中 $@ $^ %< 使用http://blog.csdn.net/kesaihao862/article/details/7332528
Makefile有三个非常有用的变量。分别是$@,$^,$<代表的意义分别是:
$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件。
7.递归检索文件内容,指定文件类型,匹配完整word
grep -r str-to-find .
grep -Er "[^a-zA-Z]Detect[^a-zA-Z]" --include \*.cpp .
grep -R 可以把文件夹下面的链接也搜索,然后-r需要在命令行里面指定搜索那些链接
8. 添加到python path
1). import sys
sys.path.append(your_path)
2). set PYTHONPATH
9. 把前台任务,放到后台执行
有时候不小心,把nohup任务,fg一下到了前台了,这时
ctrl+z, bg
10. 建立用户及home目录
useradd -u 544 -d /usr/testuser1 -g users -m testuser1
11. 查看各个程序的网络接受发送情况
sudo nethogs eth1
12. over great wall
1.sudo lantern
2. git clone https://github.com/rofl0r/proxychains-ng.git && cdproxychains-ng && ./configure && make
3. vim src/proxychains.conf 最后面修改为lantern 地址如下:
[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
socks5 127.0.0.1 56148
http 127.0.0.1 55468
4. ./proxychains4 -f src/proxychains.conf wget google.com
13. sudo 时候保持环境变量不变
14. vim 粘贴自动缩进,导致格式混乱
粘贴之前::set paste
粘贴完了::set nopaste
另一个很棒的方法::r! cat
然后用
shift+insert
或其他方式粘贴代码,然后
ctrl+d
完成输入。
15.编译链接pgsql
gcc -I/home/sam/install/include/ -L/home/sam/install/lib/ a.cpp -o db -lpq
-lpq 必须放在后面,g++ -I/home/sam/install/include/ -L/home/sam/install/lib/ -lpq a.cpp -o db, 就会出错
16 centos防火墙开端口并重启
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --reload
17 抓包
在5020端口抓udp包,-X 16进制打印包体, -vv详尽打印:tcpdump udp port 5020 -vv -X
18 本地文件同步到远端
rsync -avr ./text-detection-cptn-can-train sam@192.168.12.243:/home/TextDetection/
19 中文显示乱码,vim, print ,命令行等,修改本地语言编码日期货币为中国显示
locale 显示当前自己所在国家,所用语言,所用编码, -a显示本地已经安装的字符集
sudo apt-get install -y language-pack-zh-hans 安装中文字符集
export LC_ALL=zh_CN.utf8 即可显示中文
python里面打印要单独打印,不可以 var = <网络传来的字符,utf8的> print('abc', var),打印出来带引号,单独print(var)即可
20 查看linux 版本
centos : lsb_release -a uname -a
21 centos 设置系统时间
timedatectl set-time '2015-11-23 08:10:40'
22. 编译vl_slic
/usr/local/MATLAB/R2016a/bin/mex -I/home/sam/TextDetection/fayao-dcnf-fcsp/libs/vlfeat-0.9.18/toolbox/ -I/home/sam/TextDetection/SynthText_Chinese_version-master/libs/vlfeat-0.9.18/ -L. -lvl -L. vl_slic.c
23. vscode linux 无法启动显示
sudo sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' /usr/lib/x86_64-linux-gnu/libxcb.so.1
24. 持续查看nvidia-smi输出
watch -n 0.1 nvidia-smi
25.如何让unzip a.zip 的输出不显示?
25.1 那么输出到/dev/null里面,是什么意思呢,都做了什么呢?
unzip命令的输出还是产生了,只是没有写到屏幕,而是输出到了/dev/null,而/dev/null是直接丢弃,所以更好,更高效的办法是,unzip -q a.zip
26.ffmpeg录制视频
ffmpeg -i rtsp://admin:Admin12345@10.18.100.100:554/Streaming/Channels/3 -vcodec copy -f segment -segment_time 60 seg%d.mp4
每60秒录制一个视频文件