生物信息linux命令

生信大白记第2记-linux命令

操作系统是一种软件,是计算机硬件和应用软件之间的接口。它为计算机提供了基本的服务和管理,使得计算机能够运行应用程序和管理数据。操作系统负责控制和协调计算机硬件和软件的各种活动,并为用户和应用程序提供一个友好的界面。

生物信息分析必定少不了linux系统,Linux是一种免费开源的操作系统,其内核由Linus Torvalds于1991年首次发布。与其他操作系统类似,Linux操作系统也有图形用户界面(GUI)和命令行界面,但Linux系统的核心在于其稳定性、可靠性和灵活性。有以下主要特点:

免费开源:Linux操作系统是免费的,并且源代码是开放的,这意味着用户可以自由地查看、修改和分发代码。

多用户支持:Linux系统支持多用户环境,这意味着多个用户可以同时使用同一台计算机。

多任务处理:Linux操作系统支持多任务处理,这意味着用户可以同时运行多个程序而不会出现系统崩溃或卡顿。

[图片上传失败...(image-6963d7-1679930285323)]

linux操作系统有许多不同的Linux发行版。以下是一些常见的Linux发行版:

生信分析通常要登录到linux服务器,在服务器上跑程序任务。

如何登录到linux服务器?

可以用远程登录软件登录到linux服务器,比如Putty, Xshell, MobaXterm等软件。

登录账号,一般需要

主机ip

端口号

用户名

密码

这四个要素。具体详细的登录教程可以搜索一下对应软件的登录使用教程。

以下是一些常见的Linux命令:

cd:用于更改当前目录。例如,使用“cd /home/user”命令可以进入/home/user目录。

ls:用于列出当前目录中的文件和文件夹。例如,“ls -l”命令将显示文件和文件夹的详细信息。

pwd:用于显示当前工作目录的完整路径。例如,“pwd”命令将显示当前目录的路径。

mkdir:用于创建新目录。例如,“mkdir new_directory”将创建一个名为“new_directory”的新目录。

rm:用于删除文件和目录。例如,“rm file.txt”将删除名为“file.txt”的文件。

cp:用于复制文件。例如,“cp file.txt new_file.txt”将把“file.txt”文件复制为“new_file.txt”。

mv:用于移动或重命名文件。例如,“mv file.txt new_directory/”将把“file.txt”文件移动到名为“new_directory”的目录中。

cat:用于查看文件内容。例如,“cat file.txt”命令将显示名为“file.txt”的文件的内容。

grep:用于在文件中搜索文本。例如,“grep 'hello' file.txt”命令将在“file.txt”文件中查找所有包含“hello”的行。

chmod:用于更改文件或目录的权限。例如,“chmod 777 file.txt”命令将为“file.txt”文件授予最高权限。

可以使用“man”命令查看命令的手册页,了解命令的详细信息和选项。

我的linux命令笔记

在跑程序的时候经常会多次用同样的命令,但自己不想记,也记不住,就想起来了去查一下相应的linux命令,于是就有了一个linux命令笔记便于查询:


du -ah --max-depth=1 ./ #查看文件存储

cp -r /home/packageA /home/packageB #复制一整个文件夹

rm -rf ./ #删除文件夹所有文件和文件夹

grep 'physical id' /proc/cpuinfo | sort -u | wc -l #查看物理cpu个数

grep 'core id' /proc/cpuinfo | sort -u | wc -l #查看每个cpu核心数量

grep 'processor' /proc/cpuinfo | sort -u | wc -l #查看线程总数

ls -a  #查看隐藏文件

rm -fr .*  #(删除当前目录下的所有隐藏文件)

rm -f .tmp #(删除tmp文件)

rm -fr .tmp #(删除tmp目录或者文件)

cat >hello.pl <<eof #输入文件

jobs------------查看在后台执行的进程

fg %n----------将后台执行进程n调到前台执行,n表示jobnumber(通过jobs查看的进程编号,而非pid)

ctrl+z----------将在前台执行的进程,放到后台并挂起

bg %n---------将在后台挂起的进程,继续执行

ctrl+c----------前台进程终止

kill %n---------杀掉后台运行的进程,n表示jobnumber(通过jobs查看的进程编号,而非pid)

nohup sh test.sh > myout.log 2>&1 &  #不挂断运行

awk -F "\t" '{print $5}' class.OC_1yrF > filter_id.txt #提取某一列

wc -l filename  #就是查看文件里有多少行。

wc -w filename  #看文件里有多少个word。

wc -L filename  #文件里最长的那一行是多少个字。

awk -F'\t' 'END{print NF}' test.txt #查看有多少列

#替换字符

awk -F "  " '{OFS="  "} {if ($1==1) $1="chr1"}1' test.gff3 > oschr.gff3  #替换字符

#将一列数据转换为一行数据

cat a.txt | awk '{printf("%s ", $0)} END {printf("\n")}' | cat -A

#统计文件夹,文件数量命令

ls -l |grep “^d”|wc -l

ls -l |wc -l

#在文件的首行插入指定内容:

sed -i "1i#! /bin/sh -" a

#在文件的指定行(n)插入指定内容:

sed -i "niecho "haha"" a

egg:

sed -i "10ithis is a test" /etc/profile

#在文件的末尾行插入指定内容:

echo “haha” >> a

#删除指定范围的行:

sed -i 'begin,endd' + 文件名

egg:

sed -i '10,20d' /etc/profile

#删除指定行:

sed -i '行数d' + 文件名

#查看指定范围行:

sed -i 'begin,endp' + 文件名

egg:

sed -i '10,20p' /etc/profile

#查看指定行:

sed -i '行数p' + 文件名

#删除最后一行

sed -i '$d' file

#参考链接https://blog.51cto.com/u_15278282/4896535

#将文件链接到另外一个目录

ln -s /mnt/usr/lib/* /usr/lib/

sed -i '1d' filename  #去掉第1行

#删除send_url_log.txt前面第1行到14030000行

sed -i ‘1,14030000d’ send_url_log.txt

#删除第一列

sed -e 's/[^ ]* //' text

awk '{OFS="\t"}{$1="";print $0}' text

#取行名输出成列

head genotype_transpose.txt -n 1|sed 's/ /\n/g' >genetype_sample_name.txt

#给文件在开头追加一行数据

sed -i "1i cat 1.txt" filename.txt

#删除文件某一行

sed -i "nd" filename

#连续提取文件几列数据

awk '{for(i = 2; i <= 5; i++) printf("%s ", $i); {print $8, $9}}' a.txt

#替换字符

sed 's/原字符串/新字符串/' 文件

sed 's/原字符串/新字符串/g' 文件

#没有“g”表示只替换第一个匹配到的字符串,有“g”表示替换所有能匹配到的字符串

#有斜杠/冲突时可以

sed -i "s#abc#cde#g" file

#-i 选项是直接在文件中替换,不在终端输出。

#提取指定行

sed -n '2p' a.txt

#列处理

cut -f 3-315 test.txt #提取3到315列数据,默认制表符分隔

cut -d "|" -f 1,3,5 test.txt #提取1,3,5列数据,以|分隔

-e filename 如果 filename存在,则为真

-d filename 如果 filename为目录,则为真

-f filename 如果 filename为常规文件,则为真

-L filename 如果 filename为符号链接,则为真

-r filename 如果 filename可读,则为真

-w filename 如果 filename可写,则为真

-x filename 如果 filename可执行,则为真

-s filename 如果文件长度不为0,则为真

-h filename 如果文件是软链接,则为真

#如果文件夹不存在,创建文件夹

if [ ! -d "/opt/test/111" ]; then

    mkdir -p /opt/test/111

fi

#如果目录/opt/test存在,删除目录

if [ ! -d "/opt/test" ]; then

    rm -rf /opt/test

fi

#查看用户占用空间

du -sh /share/ganyuli

du -sh /share/*

#解压:

bzip2 -d FileName.bz2。

bunzip2 FileName.bz2。

tar jxvf FileName.tar.bz2,或tar --bzip xvf FileName.tar.bz2。

tar jcvf FileName.tar.bz2 DirName。

#ls按时间 降序 排列:

ls -lt (最常用)

#ls按时间 升序 排列:

ls -lrt

ls -lS  #按照由大到小排序

ls -Slr    #按照从小到大排序

ls lSh | ls -lShr  #如果想要输入是按照“便于人类阅读的方式”,那么就再加一个-h,表示"--human-readable"

#运算

a=10

b=20

val=`expr $a + $b`

echo "a + b : $val"

val=`expr $a - $b`

echo "a - b : $val"

val=`expr $a \* $b`

echo "a * b : $val"

val=`expr $b / $a`

echo "b / a : $val"

val=`expr $b % $a`

echo "b % a : $val"

if [ $a == $b ]

then

echo "a 等于 b"

fi

if [ $a != $b ]

then

echo "a 不等于 b"

fi

awk 'BEGIN{printf"%.1f%%\n",('29'/'500')*100}'    #保留一位小数

awk 'BEGIN{printf"%.2f%%\n",('29'/'500')*100}'    #保留两位小数

awk 'BEGIN{printf"%.3f%%\n",('29'/'500')*100}'    #保留三位小数,以此类推

awk 'BEGIN{printf"%.f%%\n",('29'/'500')*100}'    #四舍五入

printf "%d%%" $((29*100/500)) #计算29除以500的百分数,不保留小数位

#通配符

1、星号(*)可以使用星号代替零个、单个或多个字符

2、问号?可以匹配任意一个字符

3、中括号[]匹配中括号任意一个字符,如[ljk]代表匹配一个l,j或k的字符

4、[-]匹配范围,[0-9]代表匹配任一个数字

5、[*]匹配不是中括号的一个字符

#替换掉换行符

sed ":a;N;s/\n//g;ta" a.txt

#取出两个文件中相同的行

grep -wf aaa.txt bbb.txt

#取出两个文件中不同的行

grep -wvf aaa.txt bbb.txt

#此时取出的是bbb.txt文件中存在而aaa.txt文件中没有的内容

grep -wvf bbb.txt aaa.txt

#从远处复制到本地

scp -P 2222 -r ganyuli@123.123.123.123:/share/ganyuli/index ./

#方式 一:mv

#使用mv进行批量替换:

# ①、批量替换文件中“_”字符为"-"字符

find ./ -name "*_*" | while read f; do mv $f ${f/_/-}; done

# ②、批量替换文件中“test”字符为"TEST"字符

ls | while read f; do mv $f ${f/test/TEST}; done

> 引申,文件中的文本替换为:

# A). 对于单个文件

sed -i 's/string1/string2/g' example.txt

#说明:将example.txt文件中的 "string1" 替换成 "string2"(如果不加-i参数,则在内存中替换; 添加-i参数,则在文件中直接替换)

# B). 对于多个文件

ls|while read f; do sed -i 's/beijing/shanghai/g' $f; done

#方式 二:rename

#linux的rename命令有两个版本,一个是c语言版本的,一个是perl语言版本的,一般内置的都是C语言版本的

# C语言版本格式:rename 原字符串 新字符串 文件名

例子:将文件名中的“test”批量替换为“TEST”

rename test TEST test_*.log

ls

TEST_10.log  TEST_1.log  TEST_2.log  TEST_3.log  TEST_4.log  TEST_5.log  TEST_6.log  TEST_7.log  TEST_8.log  TEST_9.log

Perl语言版本格式:rename ‘s/原字符串/新字符串/’ 文件名

perl版的rename因其支持正则表达式,使用更广泛:

例子:

字母的替换rename "s/AA/aa/" * //把文件名中的AA替换成aa

修改文件的后缀rename "s//.html//.php/" * //把.html 后缀的改成 .php后缀

批量添加文件后缀rename "s/$//.txt/" * //把所有的文件名都以txt结尾

批量删除文件名rename "s//.txt//" * //把所有以.txt结尾的文件名的.txt删掉

Linux中join命令可以对两个文件进行merge

查看linux服务器cpu个数

grep -c ^processor /proc/cpuinfo

生信大白记第2记,就到这里,下一记,持续更新学习生物信息学的内容!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容