shell学习笔记

作者: 胡童远 | 来源:发表于2019-11-02 15:05 被阅读0次

导读

在线记笔记,呵护健忘的自己。

一、sed

替换、删除、插入

sed 's/ /_/g'  ##  替换所有空格

sed -i '1 i query\tmatch' file
# 在第一行前插入一行,直接覆盖文件

sed '1d' file
# 删除file第一行

二、awk

判断、统计、选择、打印

awk '{SUM+=$5}END{print SUM}' file  # 统计某一列之和
awk '{print $2}' file  # 打印某一列
awk '{if($2==0 || $2==16) print $0}' file  #  打印“列”满足条件的指定“行”
awk '{if($3!="tRNA" && $3!="rRNA") print $0}' file  # 打印“列”满足条件的指定“行”
awk 'NR==1{print}' file  # 打印指定行
awk -F,  file  # 读取csv文件
awk -F","  file  # 读取csv文件
awk '{$2=null;print $0}' file  # 删除某一列
awk 'BEGIN{OFS=",";}{print $0}'  #  保存csv文件 

三、for

循环:

for i in `ls ./`;do echo $i;done
#  获取某文件夹下的所有文件名

for i in $(find -name "*.ffn");do cp $i ./wd/;done  
# 获取所有子目录下的所有特定文件

for i in $(find -name "*.ffn");do cat $i >> ../bacteria.fastq;done 
# 批量合并子目录下特定文件

for i in `find -name 'bin.*'`; do
    file=${i##*/}
    route=${i%bin*}
    mv $i ${route}${file}.gene.abun.txt
done
# 修改文件名,find搞定复杂路径

for i in Bin_all/bin.*.faa; do
    base=${i##*/}  # 取👉,切两刀
    name=${base%.faa}  # 取👈,切一刀
    command -i $i -o $name.raw &
done
# 常用的command for循环

四、sort

排序:

sort file  # 排序

sort -t "," -k 1n,1 -k 3rn,3 file
# 按第一列正排序,按第三列反排序
    -t 指定文本分隔符
    -k 指定排序列
    -n 按数字进行排序
    -r 翻转排序结果
        

五、uniq

去重、重复统计

uniq file  # 去重
sort file | uniq  # 排序,去重
uniq -c file  # 去重,计数

六、grep

匹配查找:

grep -E '^>.*$' file  # 提取特定行
grep -E '^[^#]' file  # 提取非xx的行

grep -n "^.*ID=rna23.*$"  file
#  显示特定行的信息,显示行数

grep -v '^$' file  #  删除空行

grep -v '^$\|_' file
# 匹配不符合条件的 \|: 或者转义。删除空行和有下划线的行

grep -v -E '^$|_' file
# 使用正则表达式;删除空行和有下划线的行

zcat file.fq.gz | grep '@' | wc -l
#  查看压缩文件特定行行数

ls -l | grep -c '^d'
#  文件数量统计
    1 普通文件的文件权限第一个字符为“-”
    2 目录文件的文件权限第一个字符为“d”
    3 字符设备文件的文件权限第一个字符为“c”;
    4 块设备文件的文件权限第一个字符为“b”
    5 符号链接文件的文件权限第一个字符为“s”

七、ln

软链接、删除软链接

ln -s /media/cheng/disk1/huty/ huty
# 嫌弃路径太长创建软连接,一键到达目的地

rm -rf ./huty
# 删除软连接

ln -s $(readlink -f ./phylophlan.py) ~/bin/
# 软件,软链接

rm -rf ./huty\color{green}{/},会删除数据

八、ps、kill

查看、杀死进程:

ps -df | grep '[ametag]'  #  查看ametag进程信息
kill -9 22608  # 通过进程号,杀死进程

九、sleep

数秒:

sleep 1800  # 30分钟
while :
do
    if [ `ps -ef | grep 'diamond blastp' | wc -l` != 1 ]; then
        sleep 300  # 5分钟 
        continue
    fi
    break
done
# 一直循环,等待diamond blastp的进程结束,再继续下游分析,下游分析需要diamond的结果

十、mount

挂载:

sudo fdisk -l  # 查看磁盘情况

Disk /dev/sdb: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

sudo mkdir disk1  # 创建挂载点
sudo mkdir disk2
sudo mkdir disk3

sudo mount /dev/sdb /[route]/disk2  # 挂载硬盘sdb到/media/cheng/disk2
sudo mount /dev/sdc /[route]/disk1  # 挂载硬盘sdc到/media/cheng/disk1
sudo mount /dev/sdd /[route]/disk3  # error,磁盘分区
sudo mount -t ntfs /dev/sdd1 /[route]/disk3

sudo umount /dev/sdb  # 弹出设备
umount -l /dev/sdd1
umount -f /dev/sdd1

修改虚拟目录/dev/shm大小:

如果需要使用到这个目录,并且默认的大小不够使用,而其他程序占用的内存又比较少的时候,可以修改器最大占用内存的大小,来达到自己的目的。其实修改它的原理很简单,对其进行重新挂载即可,挂载的时候指定挂载参数。

$ df -h
tmpfs           504G  320K  504G   1% /dev/shm
$ sudo mount -o size=1000g -o remount /dev/shm/
$ df -h
tmpfs          1000G  320K 1000G   1% /dev/shm

参考:https://www.cnblogs.com/oloroso/p/5405113.html

十一、ssh

远程登录:

ssh admin@192.168.1.xx  # 一台服务器登录到另一台服务器
$ 输入密码

十二、scp

远程传输:

scp file user@192.168.1.x:/home/
# win10 cmd和服务器可直接互通

十三、md5sum

查看文件的MD5信息:

$md5sum file
22d6e7e468afedf0f7cbe3997610452a file
$cat MD5_file.txt
22d6e7e468afedf0f7cbe3997610452a file
# 文件不改变,MD5就不会改变。MD5是一个文件的唯一序列号。

十四、chown、chmod

更改文件拥有者、更改文件使用权限:

drwxr-xr-x  7 root root  4096 11月  8 17:40 disk1/

$ sudo chown cheng disk1  # 更改拥有者

drwxr-xr-x  7 cheng root  4096 11月  8 17:40 disk1/

$ chmod 777 disk1  # 更改权限

drwxrwxrwx  7 cheng root  4096 11月  8 17:40 disk1/

\color{green}{😀😀持续更新😀😀}

相关文章

  • Shell十三问 学习笔记

    文本处理 Shell脚本编程 Shell 十三问 学习笔记 shell and Carriage 关系 Shell...

  • Shell脚本

    shell脚本学习笔记 shell命令的组合运用 常用命令组合

  • Shell 学习笔记

    Shell 学习笔记 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是...

  • shell基本语法

    学习做的笔记,以防日后忘记方便查询?***********shell基本语法***********

  • linux shell脚本攻略笔记

    LINUX SHELL脚本攻略笔记[速查] linux shell脚本攻略笔记

  • Linux操作系统命令汇总

    SHELL脚本学习笔记 标签(空格分隔): linux shell脚本 1. 常用命令汇总 alias 设置别名u...

  • shell学习笔记:shell简介

    1.Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过She...

  • Shell学习笔记-Shell 中 ()、(())、[]、[[]

    一、小括号,圆括号() 1、单小括号 () ①命令组。 括号中的命令将会新开一个子shell顺序执行,所以括号中的...

  • Shell学习笔记-Shell 信号

    # Linux信号类型 信号(Signal):信号是在软件层次上对中断机制的一种模拟,通过给一个进程发送信号,执行...

  • shell学习笔记

    shell是基于shell解释器的脚本编程语言,也是使用Linux的常用工具,连接着用户和系统内核。 查看操作系统...

网友评论

    本文标题:shell学习笔记

    本文链接:https://www.haomeiwen.com/subject/lssqbctx.html