标签归档:Linux

小试shell中的神器zsh

很早就知道神器zsh的存在,一直没有用,今天手痒装了一下,哈哈,用起来还不错。

zsh是bash的增强版,可以兼容bash,可谓是shell中的战斗机,非常方便的命令提示、补全、忽略大小写等功能,一个字爽,可参见

https://www.zhihu.com/question/21418449

不过通常zsh配置起来比较复杂麻烦,于是诞生了oh-my-zsh,专门为简化zsh的配置而开发,http://ohmyz.sh,极大的简化了zsh的配置,还是一个字,爽。

安装zsh

首先查看系统是否安装了zsh,发现系统没有安装zsh
cat /etc/shells 或者chsh -l

/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/dash
/bin/ksh

如果没有zsh,直接安装oh my zsh会报错Zsh is not installed! Please install zsh first!,所以第一步应该是先安装zsh
如果你有sudo权限或者root权限,可以执行

 apt-get install zsh

如果没有的话(如果有的话,忽略这一步),比如只能安装在自己的HOME目录下,可以通过下载源码自己编译的方式,实现安装zsh

wget -c https://jaist.dl.sourceforge.net/project/zsh/zsh/5.5.1/zsh-5.5.1.tar.gz
tar -xvzf zsh-5.5.1.tar.gz
cd zsh-5.5.1
./configure --prefix=/PATH
make
make install

在.bashrc文件中设置启动
exec /share/apps/zsh/bin/zsh -l
此时还要确保zsh在环境变量中,如果没有,请设置。

安装oh my zsh

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"


既然用了zsh,我也尝试了一下新的虚拟终端MobaXterm。
https://mobaxterm.mobatek.net
安利的文章可以看这个,https://www.isharebest.com/mobaxterm.htm
这个虚拟终端的功能非常丰富,但用起来有时候莫名其妙的卡。或许zsh和Xshell更搭。

尝试了下命令提示的功能,如图,还是很方便的,后续以后会经常用zsh了。

oh my zsh的主题列表https://github.com/robbyrussell/oh-my-zsh/wiki/themes
#####################################################################
#版权所有 转载请告知 版权归作者所有 如有侵权 一经发现 必将追究其法律责任
#Author: Jason
#####################################################################

解决 mount: unknown filesystem type ‘ntfs’

移动硬盘是ntfs格式的,服务器不能mount,报错 mount: unknown filesystem type ‘ntfs’

解决方法:安装 NTFS-3G,官网 https://www.tuxera.com/community/open-source-ntfs-3g

安装

wget -c https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2017.3.23.tgz
tar -xvzf ntfs-3g_ntfsprogs-2017.3.23.tgz 
cd ntfs-3g_ntfsprogs-2017.3.23
./configure 
make 
sudo make install

挂载

mount –t ntfs-3g /dev/sd**  /target

#####################################################################
#版权所有 转载请告知 版权归作者所有 如有侵权 一经发现 必将追究其法律责任
#Author: Jason
#####################################################################

Axel – Linux下多线程下载工具

在linux环境下,用wget下载大文件,实在是件痛苦的事情,下载速度慢。这非常的不科学,于是找到了axel这个工具,可以实现在linux下多线程下载。并且可以实现断点续传。

Axel项目网站 https://wilmer.gaa.st/main.php/axel.html

安装

wget -c https://wilmer.gaa.st/downloads/axel-1.0b.tar.gz
tar zxvf axel-1.0b.tar.gz
cd axel-1.0b/
./configure
make
make instal

或者

apt-get install axel

参数
-n 指定线程数
-o 指定另存为目录
-s 指定每秒的最大比特数
-q 静默模式

测试

比如从UCSC上下载 938M 的参考基因组序列gz格式文件

axel -n 8 http://hgdownload.cse.ucsc.edu/goldenPath/hg38/bigZips/hg38.fa.gz

Initializing download: http://hgdownload.cse.ucsc.edu/goldenPath/hg38/bigZips/hg38.fa.gz
File size: 983659424 bytes
Opening output file hg38.fa.gz
Starting download

[  0%]  .......... .......... ..........  [  41.3KB/s]
[  0%]  .......... .......... ..........  [ 179.5KB/s]
[  0%]  .......... .......... ..........  [ 423.4KB/s]
[  0%]  .......... .......... ..........  [ 583.9KB/s]
[  0%]  .......... .......... ..........  [ 772.0KB/s]
[  0%]  .......... .......... ..........  [ 801.8KB/s]
[  0%]  .......... .......... ..........  [ 802.1KB/s]
[  0%]  .......... .......... ..........  [ 813.1KB/s]
[  1%]  .......... .......... ..........  [ 843.5KB/s]
[ 99%]  .......... .......... ..........  [ 666.7KB/s]
[ 99%]  .......... ......
Connection 7 finished
        ,,,,,,,,,, ,,,,,,,,,, ,,,,,,....  [ 666.6KB/s]
[ 99%]  .......... .......... ..........  [ 666.7KB/s]
[ 99%]  .......... .......
Connection 2 finished
        ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,...  [ 666.5KB/s]
[ 99%]  .......... .......... ..........  [ 663.1KB/s]
[ 99%]  .......... .......... ..........  [ 662.8KB/s]
[100%]  ....
Connection 0 finished

Downloaded 938.1 megabytes in 24:09 seconds. (662.81 KB/s)

当awk碰到百分号%数值时

awk可以通过$1,$2等,对数据进行逻辑判断或处理,比如

> echo -e "1t2n3t4" | awk '{if($1==1){print $0}}'
1       2

但如果碰到带有百分号%的数据时,则不能直接通过加减乘除进行计算或者判断

> echo -e "1%t2%n3%t4%" | awk '{if($1==0.01){print $0}}'
>

因为系统没有将1%转成数值0.01,无法进行判断$1是否等于0.01

但是可以进行大小比较

> echo -e "1%t2%n3%t4%" | awk '{if($1>0.5){print $0}}'
1%      2%
3%      4%

但此时,两行数据都输出了,表示系统认为$1大于0.5

如果与1.00001进行大小判断,则第一行不被输出,与0.0009比较则第一行输出,所以个人感觉,当awk碰到带有百分号的数据时,如果进行大小判断,则不考虑百分号%,看下例,awk把1%当作了1

> echo -e "1%t2%n3%t4%" | awk '{if($1>0.0009){print $0}}'
1%      2%
3%      4%
> echo -e "1%t2%n3%t4%" | awk '{if($1>1.0001){print $0}}'
3%      4%
> echo -e "1%t2%n3%t4%" | awk '{if($1=$1+0){print $0}}'   
1 2%
3 4%

所以,如果在处理数据时,碰到百分号进行数据处理时,一定要小心
有一种方法就是,将$1转成数值类型,即将$1加0即可,但不要赋值给$1。
下例打印第一列为%1的行,先将$1加0,转换为数值,转换过程中awk不考虑百分号%,故和1进行比较

> echo -e "1%t2%n3%t4%" | awk '{if($1+0==1){print $0}}'   
1%      2%

#####################################################################
#版权所有 转载请告知 版权归作者所有 如有侵权 一经发现 必将追究其法律责任
#Author: Jason
####################################################################

多线程gzip压缩神器—pigz

Fastq文件为纯文本文件,占用的硬盘空间较大,所以一般都会将Fastq文件压缩成gz格式,很多软件也支持fastq的gz格式输入。我用过python读取gzip,非常方便。单纯的通过gzip的命令压缩fastq,效率非常非常慢,据说是没有利用整个机器的cpu。

于是我就找到了pigz这款神器,可以在压缩数据时,发挥多核多处理器的优势,简而言之就是利用多线程进行gzip任务,比单纯的gzip压缩要快很多,有人测试快了5倍多(因为gzip压缩100G的文件时间是太长了,我也就没有测试)。

pigz

官网 http://www.zlib.net/pigz/

pigz, which stands for parallel implementation of gzip, is a fully functional replacement for gzip that exploits multiple processors and multiple cores to the hilt when compressing data.

安装pigz

wget http://zlib.net/pigz/pigz-2.3.3.tar.gz
tar -xvzf pigz-2.3.3.tar.gz
#如果提示不是gz格式,请尝试  tar -xvf pigz-2.3.3.tar.gz
cd pigz-2.3.3.tar.gz
make
如果报错 pigz.c:(.text.startup+0xca): undefined reference to `deflateEnd' gcc
请在第八行$(CC) $(LDFLAGS) -o pigz $^ -lpthread -lm 后面添加-lz选项,表示link libz

运行pigz

pigz -h 可以看到它的command option。

运行pigz和简单,和gzip的命令差不多,比如

# -c 表示打印到标准输出std,如果没有-c选项,则会生成一个后缀为gz的压缩文件。
pigz -c file > file.gz
# -k 表示压缩后不删除源文件
pigz -k file

继续阅读