linux简介

linux 是一套操作系统

Linux系统内核为linux。

内核是一个电脑程序组成操作系统的核心,链接系统硬件和应用程序。

Linux系统是自由和开源的。

连接linux集群

将多个计算机(节点)连接在一起组成集群,我们可以登录到其中某个节点,通过这个节点向其它节点投 递任务。

Windows 使用putty等支持ssh连接的工具(rna_192.168.48.100_22)

mac 终端 ssh rna@192.168.48.100

password rna@2016

linux系统目录结构

(了解)

/ 根目录,有且只有一个根目录

/etc: 系统配置文件存放目录

/bin:/usr/bin: 可执行文件(命令)存放目录

/sbin:供超级用户使用的可执行文件

/home:存储普通用户的个人文件

/lib:/usr/lib:/usr/local/lib:系统使用的函数库的目录

/opt:给主机额外安装软件的目录

/usr:应用程序存放目录。

/usr/bin 存放可执行文件。/usr/share 存放共享数据。/usr/lib存放程序运行所必需的一些函数库文件。/usr/local 软件默认安装目录。/usr/share/doc 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录

/var:系统服务。

系统日志文件/var/log,/var/log/message 所有的登录文件存放目录,/var/spool/mail 邮件存放的目录,/var/run 程序或服务启动,/var/www web服务器目录

命令一般有两部分组成:命令名称+命令参数,之间用空格隔开

目录操作命令

pwd (print working directory)

查看当前目录完整路径,分为绝对路径和相对路径,即从根目录(/)or当前目录(./)

pwd /WORK/TRAIN/RNA

cd (change directory) 切换目录

cd . 当前目录

cd .. 上级目录

cd - 返回上次访问的目录

cd ~ 进入home目录

mkdir (make directory) 建立目录

mkdir -p test/test1 建立多级目录

mkdir Directory 建立目录

ls (list)显示指定工作目录下的内容

ls -a 显示所有子目录和文件,包括隐藏文件

ls -l 以长格式显示文件详细信息

ls -h 表示大小一栏转为便于人类识别的形式,加上单位。 默认情况下单位为字节。

ls -lh

ls -i 同时展示inode号

文件操作命令

vi 是一个文本编辑器,若文件存在则打开编辑,否则创建新的文件

vi filename 进入命令模式,i切换为编辑模式,esc退出返回命令模式

命令模式下:

:w 保存

:q! 强制退出

:wq 保存后退出

/pattern 向后查找

?pattern 向前查找

:%s///g 或:%s###g 全局替换

touch 创建空文件

修改以后文件的日期([yyyyMMDDhhmm])

touch filename 新建文件

touch -t 201808080808.08 filename 修改文件修改时间和访问时间

touch -m filename 改变修改时间为当前时间

touch -a filename

改变访问时间为当前时间

touch -r file1 file2 将file2时间改成file1时间一样

cp (copy) 对文件或者目录进行拷贝

cp -r 递归复制目录及目录中的文件

cp -r /Work Test

echo dirname* | xargs -n 1 cp -v filename

ln -s (link -solf) 建立软连接。制作软连接的时候,最好使用绝对路径。硬链接除了文件名以外,其它的信息都是相同的,软连接则是一个新的文件。

ln -s souce.txt destination.txt

ln -s `pwd`/test1.txt test4.txt

mv (move file)

对文件或者目录重命名 mv oldfile newfile

移动文件(夹)位置 mv file destination

rm (remove files)删除文件和目录

rm -r 递归删除目录及文件

rm -f 强制删除

rm -rf test.txt

stat 命令查看文件的附加属性,包括文件名,inode号等

stat test.txt

文件内容操作命令

cat

一次性显示整个文件,查看文件内容 cat filename

合并文件 cat file1 file2 > file3

less 查看一个文件的内容

显示行数 less -N file.fasta

行超过屏幕部分舍去 less -S unigene.fasta

查看文件 less file.txt

head/tail 查看文件前几行/后几行

head -5 unigene.fa

tail -10 unigene.fa

wc (wordcount)

wc -c print the byte counts 字节数

wc -w print the character counts 字数

wc -l print the newline counts 行数

sort 排序

sort -kx,y 对第x列到y列进行排序

sort -n 按大小排列,作为数字

sort -r 按相反顺序排列

sort -k 1.2 对第一个域的第二个字符开始到本域的最后一个字符为止的字符串进行排序

sort -k 1.2,1.2 只对第一个域的第二个字符排序

sort -k 2,3 对第三列到第四列排序

sort -t $'\t' 指定以tab键分割

sort -t : test 以冒号分割

使用sort按1,2,4,3列排序,其中1,2,4是数字,同时使用tab作为分隔符,第4列逆序排列

sort -t $'\t' -k 1n,1 -k 2n,2 -k 4rn,4 -k3,3 file

uniq 去重复

sort -u filename 等价于 sort filename | uniq

uniq -c 统计重复的数量

uniq -u 显示没有重复的行

uniq -d 显示重复的行

grep 命令(global regular expression printer)

逐行对文件进行指定模式的搜索。

grep -c 查看行数

grep -i 忽略字母大小写

grep -v 输出不匹配的行

grep ^C test.txt 列出C开头的行

grep T$ test.txt 列出T结尾的行

ls -l | grep ^d ==列出所有文件夹==

cut 显示行中指定部分

cut -f 显示指定字段内容

cut -d 指定默认的分隔符,默认是tab键

split 分割文件

split -b 10k filename 按10kb分割文件

split -d filename 分割后文件数字为后缀

split -a 3 filename 分割后后缀长度

split -l 3 filename 按行分割

>重定向

> 表示将标准输出重定向到指定文件,并将原文件覆盖

>> 表示将标准输出重定向并追加到指定文件,原文件不覆盖

| 表示重定向输出到下一个命令的标准输入

文件通配符

?和*

ls file? ? 表示任意 1 个字符

ls file* 表示任意个任意字符,包括 0 个

管道 |

很多linux的命令输出直接达到屏幕上,也就是输出到stdout,这些输出可以直接作为一些命令的输入,也 就是stdin。这时候中间用 | 链接,也就是管道。

ls -l | less

文件的权限

chmod =x test.txt #将user group other的权限都设成x即只可执行,---x--x--x

chmod u=w test.txt #user只读 --w---x--x

chmod u+r test.txt #user的权限增加r

chmod o-x test.txt #other的权限减少x

chmod 124 test.txt # ---x-w-r--

chmod 731 test.txt # -rwx-wx--x

chmod -R 775 test1 #递归文件夹中文件以及文件夹递归实现权限变更

数序为二进制的十进制值

x=2^0

w=2^1

r=2^2

帮助信息

ls --help

man ls

集群操作命令

who 系统登录情况

who | wc -l 查看用户数量

whoami 查看自己登录用户名

任务投递

qsub -cwd -l vf=* -q all.q *.sh

查看已投递的任务状态

qstat –j job-id

查看某个具体任务的详细状态信息

vjob 查看任务状态,包括JOBID CPU Mnow Mmax node VF Hours CMD

节点状态查看

qhost 查看所有节点状态信息

qhost –j 查看所有节点状态信息,包含节点下面的任务列表

可用队列、节点查看

qselect –U username

压缩和解压缩

gzip 压缩

gzip file

gunzip 解压缩

gunzip file.gz

tar 打包压缩与解压缩

-v 压缩过程显示文件

-c 创建新压缩文件的指令

-z 用gzip压缩

-f 使用文档名,后直接接文件

-x 解压缩

tar -zvcf test.tar.gz file1.txt file2.txt 压缩

tar -zvxf test.tar.gz 解压缩

shell脚本与流程控制

shell优势:

简单性 效率高 开发容易

直接在命令行上测试;一旦找到适当语法,将其放入独立脚本中,设置可执行权限后,可以直接使 用该脚本。

规范格式

第一行: #!/bin/sh

基本元素:命令 参数

空白隔开命令行中各部分

命令名称为第一个项目

选项开头是一个减号,后面接字母

变量

本地变量

a=rna

$a vs a # rna vs a $a为本地变量

echo 输出与printf 输出

a=please b=enter c=your d=name

g="$a $b $c $d"

echo $g # 本地变量 please enter your name

echo '$g' #纯文本 $9

printf $g #只输出please,第一个

echo -n 不换行输出

echo -e echo -e 处理特殊字符

eg1:

echo -e '1\ta\n2\tb\n3\tc\n4\td\n5\te\n6\tf\n7\tg\n8\th\n9\ti\n10\tj\n11\tk\n12\tl' > test1.tsv

eg2:

DATE=`date` #date的结果赋值给DATE

echo $DATE

定义不可变的变量

readonly Whome=sth

readonly 定义后整个脚本不再能更改

位置变量

$0 脚本本身

$1 第一个参数

特殊变量

$# 传递到脚本的参数个数,eg 3

$* 以一个单字符串显示所有脚本传递的参数,默认tab键分割 返回"$1 $2 $3"

$@ 与$#类似,但每个变量是独立的。返回 “$1”,"$2","$3"

$? 显示命令最后退出状态,0表示没有错,其他值表示有错

双引号

可以进行变量替换

a = helo

echo "$a world" # 输出hello world

单引号

不进行任何变量替换

反引号

执行系统命令赋给变量 等效于$()

a=ls *

echo $a

反斜线 转义元字符

4.1 布尔值

0表示false,1或者非零值表示true

4.2 条件测试

test [condition]

test -e 判断是否存在

test -f 判断是否存在且为file

test -d 判断是否存在且为directory

test -r 判断是否存在且可读

test -w 判断是否存在且可写

test -x 判断是否存在且可执行

条件 与或非 -a -o !

test -r txt.sh -o -w txt.sh -a -x txt.sh |echo $?

测试字符串

相等 ==

不等 !=

空串 -z

非空串 -n

测试数字

-eq 等于

-ne 不等于

-gt 第一个数大于第二个数。

-lt 第一个数小于第二个数。

-le 第一个数小于等于第二个数。

-ge 第一个数大于等于第二个数

test 5 -ne 10 && echo Yes || echo No

test -f /etc/resolv.conf && echo "File /etc/resolv.conf found." || echo "File /etc/resolv.conf not found."

5.流程控制

if then else

if condition; then ...

elif condition; then ...

else

... fi

eg1:

#!/bin/sh

if [ ! -e "study" ]; then

mkdir study

fi

eg2:

#!/bin/sh

echo -n "Enter your login name: "

read NAME

if [ -z $NAME ] || [ "$NAME" = "" ]; then

echo "You did not enter a name"

elif [ "$NAME" = "root" ]; then

echo "Hello root"

elif [ "$NAME" = "rna" ]; then

echo "Hello rna"

else

echo "You are not root or rna but Hi $NAME"

fi

eg3:

#!/bin/bash

read -p "Enter a password" pass

if test "$pass" == "novo2017"

then

echo "Password verified."

else

echo "Access denied."

fi

eg4:

#!/bin/bash

read -p "Enter a number : " n

if [ $n -gt 0 ]; then

echo "$n is a positive."

elif [ $n -lt 0 ]; then

echo "$n is a negative."

elif [ $n -eq 0 ];then

echo "$n is zero number."

else

echo "Oops! $n is not a number."

fi

case

case value in pattern1)

...

;;

pattern2)

...

;;

*)

...

;;

esac

eg1

#!/bin/sh

echo -n "Do you wish to proceed [y..n]: "

read ANS

case $ANS in

y|Y|yes|Yes)

echo "yes is selected"

;;

n|N)

echo "no is selected"

;;

*)

echo " $0: Unknown response"

;;

esac

for

for var in list

do

...

done

eg1:

#!/bin/sh

for file in `ls $PWD`

do

echo $file

done

while

while command

do

...

done

eg1:

#!/bin/sh

file=$1

while read Line

do

echo $Line

done < $file

eg2:

#!/bin/sh

count=0

while [ $count -lt 5 ]

do

count=`expr $count + 1`

echo $count

done

正则匹配

literal (逐字匹配) 匹配字符串的值

re1|re2 匹配表达式re1或re2

. 匹配任何字符(换行符除外)

^ 匹配字符串的开始

$ 匹配字符串的结尾

* 匹配前面出现的正则表达式零次或多次

+ 匹配前面出现的正则表达式一次或多次

? 匹配前面出现的正则表达式零次或一次

{N} 匹配前面出现的正则表达式N次

{M,N} 匹配重复出现M次到N次的正则表达式

.*? 非贪婪匹配

sed 命令

(stream editor), 用来对输入文件或者数据流进行编辑,逐行进行编辑,通常用来做替换。

sed -e 多次匹配

sed -i 对输入文件本身进行修改

sed -n 列出sed处理行,不加-n则列出所有行,重复处理行

==sed -f 加脚本文件使用脚本文件中的命令==

sed '1,5 s/\t/:/g' test.xls > result.xls

#一到五行全局替换

sed -i '1d' test.xls

#删除第一行

sed 's/T/U/g' input.txt

#这是一个将DNA序列转成RNA列的例子

sed -e 's/T/U/g' -e 's/A/a/g' input.txt #当想使用多个命令的时候,使用-e,每个-e后边跟一个命令,可以有很多

echo -e "s/T/U/g\ns/A/a/g" > edit.sed

sed -f edit.sed input.txt

#通过-f加脚本文件使用脚本文件中的命令

sed -n '/^A/=' input.txt

#返回以A开头的行。^表示开头,而 = 表示行号

sed 'y/ACGT/acgt/' input.txt

# y/.../.../ 字符转换,字符依次对应

sed '/^A/y/ACGT/acgt/' input.txt

sed '/^A/!y/ACGT/acgt/' input.txt

sed '2,4y/ACGT/acgt/' input.txt

sed '2,4!y/ACGT/acgt/' input.txt

#只对以A开头的行进行转换,/^A/ #不对以A开头的行进行转换,/^A/!

#只对2-4行进行转换

#不对2-4行进行转换

sed -i '1iAddThisBeforeThe1stLine' input.txt

#在第一行前加入一行

sed -i '$iAddThisBeforeTheLastLine' input.txt

#在最后一行前加入一行

awk 命令

awk 会对文件的每一行进行识别

awk -F {s} '{pattern + action}' {filenames}

{s} 分隔符

pattern :查找的内容,一般为正则表达式,用斜杠括起来。

action :在找到匹配内容时所执行的一系列命令。

==awk -f address.awk address.tx

执行address.awk脚本==

内置变量

变量名

含义

FS

输入文件fields之间的分隔,-F指定内容

OFS

awk输出是fileds之间的分隔符

RS

输入时记录(RECORD)之间的分隔符,默认\n

ORS

输出时RS

NR

numbers of records

FNR

每个文件的records

filename

现处理的文件名

操作符

Operator

Description

>

is greater than

>=

is greater than or equal to

<

is less than

<=

is less than or equal to

==

is equal to

!=

is not equal to

&&

Both the conditional expressions are ture

|

either one of the conditional expressions is ture

+

addition

-

subtraction

*

multipliction

/

division

%

modulo division

eg1:

who |awk -F ' ' 'BEGIN{print "name\ttime"} {print $1"\t"$3} END{print "haha"}'

eg2:查看每一行的列数

awk -F '\t' '{print NR ":" NF}' sed_sample.xls

eg3:查找特定行

awk '/ENSRNOT00000058031/' sed_sample.xls

eg4:提取特定的列,比如所有正在登录的用户名

awk -F: '/home/ {print $6}' /etc/passwd | awk -F / '{print $3}'

eg5:根据某一列的条件进行筛选

awk -F "\t" '{if ($9<=0.05)print $0}' RNT_vs_RNC.isoform.xls>diff.xls

awk 'NR>100 && NR<200' RNT_vs_RNC.isoform.xls

eg6:查看 gtf 文件中第三列不是 exon 的行

awk '$3 !~ /exon/' Niben101_annotation.gene_models.exon.gtf | les

ex1:

操作文件: /WORK/TRAIN/RNA/rna/HAOJING/part2/RNT_vs_RNC.isoform.xls 请完成以下操作:

1.查看该差异列表共展示多少转录本定量结果; 2.其中lncRNA明显标示的共有多少个(id为:LNC_****);

3.查看 RNT_vs_RNC.isoform.xls 文件中qvalue<=0.05的lncRNA,输出:

1)差异lnc的个数;

2)lncRNA来源基因列表;

3)lncRNA来源基因的个数(去重);

4)调参pvalue<=0.05后的结果; 5)筛除其中fpkm均为0的转录本(筛除所有样品表达量均小于0.5的转录本);

更多命令汇总

tree

tree -C #颜色显示

tree -f #显示文件全路径

tree -L #显示路径层级

tree -P #只显示文件目录

tree -F #显示目录后面的\;显示可执行文件*;功能类似ls -F

tree -N 直接列出文件和目录名称,包括控制字符。

tree -p 列出权限标示

read

-n(不换行) -p(提示语句) -n(字符个数) -t(等待时间) -s(不回显)

-a :将内容读入到数值中

-n :用于限定最多可以有多少字符可以作为有效读入

-p :用于给出提示符

-r :在参数输入中,'/'表示没有输入完, /n 这类特殊字符生效

-t :用于表示等待输入的时间,单位为秒,等待时间超过,将继续执行后面的脚本

-s :不在terminal上打印

-d :表示delimiter,即定界符,一般情况下是以IFS为参数的间隔,但是通过-d,我们可以定义一直读到出现执行的字符位置。

eg1: 输入不在终端显示

read -p "Input passwd:" -s Passwd

echo $Passwd

eg2: 限时输入,否则退出

read -p "Input a number:" -t 5 Number

eg3: 读取限定字符

read -p "Input a word:" -n 5 Word

eg4:等待输出q退出

read -dq -p "Input some words end with q:" word

Linux中复制前10kb的数据,linux基本操作相关推荐

  1. linux多网卡bind发送数据,Linux系统多网卡绑定实战

    原标题:Linux系统多网卡绑定实战 纯手工打造每一篇开源资讯与技术干货,数十万程序员和Linuxer已经关注. 导读 对于服务器来说,网络设备的稳定也是比较重要的,特别是网卡.在生产型的系统中,网卡 ...

  2. linux中mongo的导出数据,Linux下mongodb安装及数据导入导出教程(示例代码)

    Linux下mongodb安装及数据导入导出教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 一.Linux下mongodb安装的一般步骤 1 ...

  3. linux中dd命令写入数据,Linux中dd命令的用法

    dd命令: convert and copy a file 用法:dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=#: block size, 复制单元大小 coun ...

  4. linux怎么读取群辉数据,Linux下读取群晖SHR/RAID硬盘组 Data Recovering of Synology DSM SHR/RAID Volume...

    背景 昨天DSM的pgsql坏了,修复的时候一时手贱把群晖的libc.so给弄坏了,彻底瘫了,想到的解决办法如下: linux下读取系统区(DSM下所有初始化过的sata硬盘的头两个分区组的raid) ...

  5. linux读取sd卡文件数据,Linux系统和SD卡读写部分程序.doc

    Linux系统和SD卡读写部分程序 11.1.1 SD卡系统概念 Linux系统移植>第11章SD卡驱动移植,本章重点为SD卡协议介绍和SD卡驱动分析,后面也介绍SD卡驱动移植过程.随着SD卡存 ...

  6. linux怎么查看硬盘读写数据,Linux查看硬盘读写情况(汇总版)

    除了 CPU 和内存,硬盘读写(I/O)能力也是影响 Linux 系统性能的重要因素之一.本节将介绍几个可用来查看硬盘读写性能的系统命令,并教大家如何通过这些命令的输出结果,判断出当前系统中硬盘是否处 ...

  7. linux备份mysql部分表数据,linux mysql 数据按表名称备份

    1.按表名称备份 #!/bin/bash #user #数据库用户 dbuser="root" #数据库密码 dbpassword="chenyong" #时间 ...

  8. linux收不到icmp数据,linux – ICMP Host Unreachable消息导致火星源数据包

    我一直试图在我们的路由/防火墙设置中了解一段特殊的行为已经有一段时间了,但是我并不真正了解正在发生的事情. 我们有一个防火墙/路由器设备,它有两个面向外部的接口和许多内部VLAN. 当我们的访客WiF ...

  9. linux带行号显示数据,linux中查看文件时显示行号

     [root@1-min etc]# cat -n rsyslog.conf//显示所有行号(包括空行) [root@1-min etc]# cat -b rsyslog.conf         ...

最新文章

  1. VAT code VAT NO.
  2. idea中修改jsp文件不用再重启tomcat的方法
  3. SparkStreaming简介 - 与第一个Spark实时计算程序,使用netcat来写数据 - wordcount
  4. 力扣236. 二叉树的最近公共祖先(JavaScript)
  5. LVS--DR模型介绍及实现
  6. Restful 风格
  7. 微信公众号教程(8)用微信开发模式做欢迎词
  8. Linux基础学习笔记整理——第二章 管理文件和目录
  9. 干货丨爱奇艺CDN IPv6系统配置
  10. OMNeT学习之TicToc2-7详解
  11. phpstudy教程之自带ftp server使用方法详解(图文)
  12. 流程框图——各方框含义
  13. 固态硅压阻压力传感器的优点
  14. matlab坐标轴设置
  15. 【Flutter小记3】Android打开前置或广角摄像头的同时打开闪光灯方案
  16. linux图形界面和dos界面切换
  17. mac上传文件到阿里云ECS及scp命令使用
  18. 6 个设计准则让图表焕然一新,数据可视化并不难!
  19. 18937 阿克曼(Ackmann)函数
  20. 图解项目绩效评价的13个常用方法大全

热门文章

  1. 制作自己的多媒体个性相册(上篇)
  2. (转)艾宾浩斯遗忘曲线——记忆与复习
  3. Facebook创始人5大趣闻:禁欲 怀有帝王志向 来自: 腾讯科技
  4. MEMS陀螺仪、加速度计和磁强计原理
  5. 低代码开发-牛刀低代码和专业开发云 JNPF 3.4.5 旗舰版 /微服务、单体 、JAVA 和.net6版本
  6. 成就你一生的100个哲理91-100
  7. hibernate访问mysql没有响应_Struts2+hibernate + mysql C3P0连接池 导致写数据库无反应(死机)...
  8. 9代cpu装linux,客户新买的电脑要重装系统,9代处理器装Windows7,谁有本事装?
  9. IntelliJ IDEA 14,15 使用教程,实战总结,倾囊相授,内附PDF学习文档
  10. 顺风车发生交通事故 乘客诉嘀嗒出行索赔3.7万元