登陆服务器:
ssh 用户名@IP地址 [端口号]
退出服务器:
exit
文件传输至服务器
选择SFTP>拖动文件至服务器窗口
echo 'export PS1="\[\033]2;\h:\u \w\007\033[33;1m\]\u \033[35;1m\t\033[0m \[\033[36;1m\]\w\[\033[0m\]\n\[\e[32;1m\]$ \[\e[0m\]" ' >> ~/.bashrc
source ~/.bashrc
Linux 命令:命令格式: 命令+参数+文件
command [-options [parameter]] [file]
例子:tar(命令) -zxvf(参数) Data.tar.gz(待处理文件)
#####文件-目录#####
pwd #打印工作目录 print working directory
ls #列出当前目录的文件 -a,-l,-h,-S,-t,-r 参数 [路径/目录/文件名] list
cd #切换目录 change directory
mkdir #创建新目录 make directory
#####文件-外在#####
touch #创建新文件
mv #移动和重命名 move
rm #删除 remove
cp #复制粘贴 copy and paste
tar #压缩或解压文件 tape archive
ln #链接文件 link
#####文件-内在#####
cat #查看文本
head #查看文档开头,默认10行
tail #查看文档末尾,默认10行
more #逐页查看文档内容
less #逐页查看文档内容,more的plus版
wc #统计文本的行数
cut #文本切割
sort #排序
uniq #去重复
paste #文本合并
tr #字符替换
1.1.1 pwd #打印工作目录
1.1.2 ls -al ./*txt #列出当前目录的文件 【模版示例】
# -a 全部文件,包括隐藏文件 all
# -l 目录详细信息 long
# -h 转换目录容量单位 human
# -S 以文件大小排序 Size
# -t 以时间排序 time
# -r 倒序排列 reverse
ls [参数] [路径/目录/文件名]
ls #当前目录文件
ls ./ #当前目录文件,.代表当前目录
ls ./*txt #当前目录以txt结尾的文件
* #匹配任意多个字符
? #匹配任意单个字符
ls ../ #上层目录的文件
ls -a #当前目录所有文件,包括隐藏文件
ls -l #当前目录,文件详细信息
ll #等同ls -la,自定义的别名
ls -lh #加上-h参数,以K\M\G的形式显示文件大小
ls -lh / #根目录下文件详细信息
#无常见参数
#常见用法:cd [路径/目录]
cd #切换目录,没有常见参数
cd .. #到上层路径
cd / #到根目录
cd /teach/ #到根目录下的teach
cd - #回看
cd ~ #到家目录
cd #到家目录
..#上层目录
/ #根目录
#绝对路径、相对路径
mkdir #创建新目录
常见用法 mkdir [-p] 目录名
-p/--parents #递归目录创建
tree #展示文件夹和文件
touch #创建新文件
touch file
mv #移动和重命名
mv [待移动的文件] [移动到那个目录]
mv [待重命名的文件] [重命名后的文件名]
mv file test/
mv file file1
####举例####
mv file1 file3 #file1重命名为file3
mv file2 file3 #file2重命名为file3
mv file3 myDir1 #file3移动进myDir1
mv myDir1 myDir2 #myDir1移动进myDir2
mv myDir2 myDir3 #myDir2重命名myDir3
-f #不显示警告讯息
-i #删除前询问
-r #删除文件夹
-r #若是目录文件,复制该目录下所有的子目录和文件
tar -zxvf Data.tar.gz #解压文件
tar -zcvf Data.tar.gz Data #压缩文件
-x #从已有tar文件中提取文件
-c #创建一个新的tar文件
-f #输出结果到文件或设备
-v #显示处理进度
-z #将输出结果重定向给gzip指令
ln -s TARGET DIRECTORY #无s为硬链接,有s为软链接,功能类似快捷方式
cat #查看文本
-A #打印所有内容
-n #打印行号
-b #打印非空白行号
zcat #可以查看压缩的文本文件
tac #逆向查看
>重定向 Ctrl+c #退出重定向编辑
head #查看文档开头,默认10行
tail #查看文档末尾,默认10行
-n #指定查看的行数
head/tail -n 3 #查看文档开头/末尾3行
more #逐页查看文档内容
less #逐页查看文档内容,more的plus版
-N #显示行号
-S #单行显示
zless #查看压缩文件
####文件查看方式####
# 上下左右查看文本内容
# Enter键向下移动一行
# 空格键翻页
# q退出
wc #统计文本的行数
-l #统计行数
-w #统计字符串数
-c #统计字节数,空格也算
cut #文本切割
-d #默认分隔符,\t
-f #输出哪几列
less -S Data/example.gtf | cut -f 1,3-5,7 #指定输出行数
less -S Data/example.gtf | cut -d 'h' -f 1 #指定分隔符
sort #排序
-n #按照数值从小到大排序
-V #字符串中含有数值时,按照数值从小到大排列
-r #逆向顺序
-k #指定按哪一列排序
-t #指定分隔符
less -S Data/example.gtf | sort -n -k 4 | less -S
uniq #去重复
-c #统计每个字符串连续出现的行数
####使用uniq之前需要sort排序####
cat Data/example.gtf | cut -f 3 | sort |uniq
paste #文本合并
-d # 指定分隔符
-s # 按行合并
paste file1 file2 #按照列合并成一个
seq 20 | paste -- #数据变成2列
tr #字符替换
tr '<pre>' '<dest>'
-d #删除指定字符
-s #缩减连续重复字符
1、命令模式
2、编辑模式
3、末行模式
vim FILENAME #默认进入命令模式
i #进入编辑模式 Esc退出进入命令模式
: #进入行末模式 Esc退出进入命令模式
wq #在行末模式下,输入wq(退出保存)
vimtutor zh_CN#查看中文帮助文档
fasta:2行,有id行和序列行
fastq:4行,@开头,序列信息,+保留行,碱基质量值
gff/gtf:9列,序列名字,注释来源,基因结构,起始位置,终止位置,碱基测序结果可信度,链的+向与-向,密码子偏移,其他属性
less -S Data/example.gtf | column -t | less -S
column -t #让列对齐
grep [options] pattern file
#grep 文本搜索工具,使用正则表达式匹配模式搜索文本,打印匹配的行#
grep 'TATATT' -r Data/ # -r后面要接文件夹的位置
grep 'TATATT' -r Data/ ~ # 接多个文件夹的位置
grep -n 'TATATT' -r Data/ # 加入行号
cat example.gtf | grep -w 'gene' # -w精确查找某个关键词
zless Homo_sapiens.GRCh38.102.chromosome.Y.gff3.gz | grep ' gene '
zless Homo_sapiens.GRCh38.102.chromosome.Y.gff3.gz | grep -w 'gene' #限制字符范围
less example.gtf | grep -w -c 'gene' #统计函数
less example.gtf | grep -w -v 'gene' #反向选择
less example.gtf | grep -w -e 'gene' -e 'UTR' #查找两个关键词
#把关键词集成在一个文档之中,-e的可重复写法#
cat file
gene
UTR
start_codon
stop_codon
less Data/example.gtf | grep -w -f file | less -S
###正则表达式###
^ #行首
cat Data/example.fa | grep '^TATA' #打印行首为TATA的基因
$ #行尾
cat Data/example.fa | grep 'TATA$' #
cat Data/example.fa | grep '^TATA$'#
. #表示任意一个字符
cat readme.txt | grep 'f.ee' #找到了free
?#之前项的0次或者1次
cat readme.txt | grep 'f\?ee' #找到了f出现1次或者0次的情况
+ #匹配1次或者多次
cat readme.txt | grep 're\+'
* #匹配0次或者多次
{n} #匹配n次
{n,}#匹配至少n次
{m,n} #至少m,最多n
[] #匹配任意一个
[^] #排除字符
| #或
cat Data/example.gtf | grep -E 'UTR|exon'
#练习1答案
一、cat example.gtf | grep -wc 'gene'
二、cat example.gtf | grep -wv 'exon'
cat example.gtf | grep -wvc 'exon'
三、cat example.gtf | grep -w -e 'UTR' -e 'CDS'
四、cat example.fq | grep '@'
五、cat example.fq | grep ^'@'
六、grep 'TATA[AT]A[AT].' -nr Data/
附加题:一 zless Homo_sapiens.GRCh38.102.chromosome.Y.gff3.gz | cut -f 3 | grep -v '#' | grep -wc gene #不要的东西先过滤,查找自己需要的基因
二 zless Homo_sapiens.GRCh38.102.chromosome.Y.gff3.gz | cut -f 3 | grep -v '#' | sort | uniq -c | sort -n
sed #对标准输出流里面的文本进行增删改查
sed [-options] 'script:[address][!] command' file
###常见参数###[options]部分-参数
-n #只显示sed处理过的行
-e #接一个或者多个命令
-f #执行含有sed动作的文件
-r #sed 基础正则编程扩展正则
-i #只修改不输出
###script:[address]###部分
2 #第2行
2,4 #第2行到第4行
2,$ #第2行到最后一行
2~3 #第2行开始,每隔3行取一行
2,+4#从第2行到2+4行
/pattern/ #匹配上pattern的行输出
[i] #取反'2 !'除了第2行
###script:command部分###
a #指定行的后增加一行,a后面接字符串内容
i #指定行前增加一行,i后面接字符串
d #删除某一行或几行
c #改变指定行内容
s #更改或替换字符串,'s/pattern/new/[flags]',把pattern更换成为new,默认只替换一个,可以指定flags
y #转换,字符一对一转换,'y/abd/ABC'
p #print 把匹配或者修改过的行打印出来,常与-n参数合用
cat readme.txt | sed '1a Welcome to Biotrainee' #1行后加内容
cat readme.txt | sed '1,3d' #删除1-3行
cat readme.txt | sed -e '2i Welcome to Biotrainee' -e '2a Welcome to Biotrainee()' #2行前后加字,-e参数
cat readme.txt | sed -e '2,4i **********' -e '2,4d' #是未修改文本的2-4行删除
cat readme.txt | sed '2,4c **********' #2-4行被替换**********
cat readme.txt | sed '1~3s/ee/EE/' #替换每隔3行取一次行的ee为EE
cat readme.txt | sed -n '/ee/p'
cat readme.txt | sed -n 's/ee/EE/p' #打印的同时完成替换
##练习2
2、head example.gtf | sed 's/HAVANA/ENSEMBL/' #
3、head example.fa | sed '2,$ y/ATCG/TAGC/' #碱基互补配对
4、cat md.txt | sed '1 d' #删除第一行
补充:head example.fa | sed '2,$ y/ATCG/TAGC/' | rev #反向互补序列
head example.fa | sed '2,$ y/ATCG/TAGC/' | rev | tac #多行反向互补
#awk 对文本和数据进行处理#
###常见参数###
-F,fiels,#设置字段分隔符
awk [options] '{script}' file #基本格式
awk [options] '/pattern/{script}' file
awk [options] 'BEGIN{script} {script} END{script}' file
$0 #整个文本行
$1 #第一个数据段
$NF#最后一个数据段
cat example.gtf | awk '{print $9}' | less -S #默认分隔符为空格
cat example.gtf | awk '{print $9"@"$10}' | less -S
cat example.gtf | awk '/UTR/{print $0}' | less -S
cat example.gtf | awk '/UTR/{print $7,$3,$4,$5,$1}' | less -S #输出顺序可以发生变化
cat example.gtf | awk 'BEGIN{print"find UTR feature"} /UTR/{print $0} END{print "end"}' | less -S #扩展格式,先做什么再做什么
####awk内置变量###
FS #定义字段分隔符
RS #定义记录分隔符
OFS#输出字段分隔符
ORS#输出记录分隔符
NF #列数
NR #行数
cat example.gtf | awk 'BEGIN{OFS=":"} {print $3,$4,$5}' | head
cat example.gtf | awk 'BEGIN{OFS=":"} {print $3":"$4"-"$5}' | head #更换输出分隔符
#####awk条件判断和循环语句####
awk '{if (判断条件){yes} else {no}}'
awk '{for (循环条件){循环语句}}'
cat example.gtf | awk '{if($3=="gene") print $0}' | less -S #判断第三列是不是基因,是的话打印出来
cat example.gtf | awk '{if($3=="gene") {print $0} else{print $3 "is not gene"}}' | less -S #加上else
less -S example.gtf | awk '{for(i=1;i<4;i++){print $i}}' | less -S | paste - - -
#####awk 数学运算####
+,-,*,^,/,**(平方),%(取余),int(x),log(x)
less -S example.gtf | awk '{print int($5/$4)}' | less -S #四舍五入加0.5
练习3: 3题 head example.gtf | awk '/protein/{print $10,$12,$20}' | less -S | sed -e 's/unprocessed_pseudogene/protein_coding/'
# #注释符号
! #非
\ #转义符,必须是这一行的最后一个字符,换行符号
/ #目录符号
| #管道
>> #追加符号
> #重定向输出(赋值)
< #重定向输入
. / .. #当前目录/上一层目录
~ #家目录
'' & "" #在linux中有不同的含义
$ #使用变量前导符。
`` #中间的命令优先级最高,先执行,与$()一样
1、找不到文件,文件不存在 使用tab键
2、没有权限
3、命令不存在 apt/yum/sudo 使用tab键
解决报错注意点:root # 和 apt/yum/sudo,使用到了管理员权限。注意自己的权限
#官网安装包地址
wget -c https://mirrors.bfsu.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
#生信技能树安装包软链接地址
cd ~
ln -s /home/t_linux/Miniconda3-latest-Linux-x86_64.sh ./
#安装 输入yes或者enter返回
bash Miniconda3-latest-Linux-x86_64.sh
## 重新激活环境
source ~/.bashrc
#查看帮助文档
conda --help
## 配置镜像
# 下面四行配置北京外国语大学的conda的channel地址(首选)
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes
# 下面这四行配置清华大学的conda的channel地址(首选北外,如果体验不好再换成清华)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes
# 如果需要官方频道,可以添加下面这两行配置官网的channel地址(不推荐)
conda config --add channels conda-forge
conda config --add channels bioconda
# 删除defaults频道
sed -i '/defaults/d' ~/.condarc
## 配置镜像成功
# 查看配置结果
cat ~/.condarc
# 创建名为rna的软件环境来安装转录组学分析的生物信息学软件
conda create -y -n rna python=3.7
# 创建小环境成功,并成功安装python3版本
# 每建立一个小环境,安装一个python=3的软件作为依赖
# 查看当前conda环境
conda info -e
conda env list
# 每次运行前,激活创建的小环境rna
conda activate rna
# 退出小环境
conda deactivate
#软件要安装在小环境中,不要安装在base
# 激活环境
conda activate rna
# 安装 fastqc 软件
conda install fastqc
conda install mamba #安装mamba软件
# 调出帮助文档
fastqc --help
# 可以指定软件版本
conda install -y samtools=1.14
# aspera
conda install -y -c hcc aspera-cli
ascp --help
# 可以一次安装多个软件
conda install -y python=3.7 libstdcxx-ng=9.1.0 trim-galore hisat2 subread multiqc samtools=1.14 salmon=1.4.0 fastp fastqc
# mamba install -y python=3.7 libstdcxx-ng=9.1.0 trim-galore hisat2 subread multiqc samtools=1.14 salmon=1.4.0 fastp fastqc
## 不是通过软件名来调用帮助文档,而是软件的命令
# sra-tools
prefetch --help
fastq-dump --help
which prefetch
# trim-galore
trim_galore --help
# hisat2
hisat2 --help
# subread
featureCounts --help
# multiqc
multiqc --help
# samtools
samtools --help
# salmon
salmon --help
# fastp
fastp --help
#
# 创建R4环境
conda create -y -n R4 python=3.8
# 激活R4环境
conda activate R4
# (可选步骤:在R4里安装mamba)
# conda install mamba
# 安装R语言本体
conda install -y r-base=4.1.2
## 或者使用mamba安装: mamba install -y r-base=4.1.2
# 安装R语言软件包
conda install -y r-getopt r-tidyverse r-ggplot2=3.3.5 bioconductor-limma bioconductor-edger bioconductor-deseq2 bioconductor-clusterprofiler bioconductor-org.hs.eg.db=3.13.0
## 或者使用mamba安装:mamba install -y r-getopt r-tidyverse r-ggplot2=3.3.5 bioconductor-limma bioconductor-edger bioconductor-deseq2 bioconductor-clusterprofiler bioconductor-org.hs.eg.db=3.13.0
##激活R
# 输入R进入R语言的交互
R
#验证安装包
library(getopt)
library(tidyverse)
library(ggplot2)
library(limma)
library(edgeR)
library(DESeq2)
library(clusterProfiler)
library(org.Hs.eg.db)
#包名查询 A: [Bioconductor - Home](https://bioconductor.org/) 在Bioconductor的官网搜索即可
#在R里面安装包
install.packages("BiocManager")
BiocManager::install("org.Hs.eg.db")
#退出R环境
Ctrl+d
#下载钉钉群里的yaml文件
conda env create -n rna -f rna.yaml
# 如果有mamba的话可以用mamba安装
# mamba env create -n rna -f rna.yaml
conda env create -n R4 -f R4.yaml
mkdir ~/biosoft
cd ~/biosoft
# wget -c https://cloud.biohpc.swmed.edu/index.php/s/oTtGWbWjaxsQ2Ho/download -O hisat2-2.2.1-Linux_x86_64.zip
ln -s /teach/software/hisat2-2.2.1-Linux_x86_64.zip ./
unzip hisat2-2.2.1-Linux_x86_64.zip
cd hisat2-2.2.1/
./hisat2 --help
# echo 'export PATH="${HOME}/biosoft/hisat2-2.2.1/:$PATH" ' >> ~/.bashrc
ln -s ~/biosoft/hisat2-2.2.1/hisat2* ~/bin/
卸更新软件:conda update 软件名
载软件:conda remove 软件名
删除环境:conda remove 环境名
克隆环境:conda create –n 新环境名 –clone 旧环境名
查找软件:conda search 软件名
/ 虚拟目录的根目录。通常不会在这里存储文件
/bin 二进制目录,存放许多用户级的GNU工具
/boot 启动目录,存放启动文件
/dev 设备目录,Linux在这里创建设备节点
/etc 系统配置文件目录
/home 主目录,Linux在这里创建用户目录
/lib 库目录,存放系统和应用程序的库文件
/media 媒体目录,可移动媒体设备的常用挂载点
/root root用户的主目录
/sbin 系统二进制目录,存放许多GNU管理员级工具
/run 运行目录,存放系统运作时的运行时数据
/tmp 临时目录,可以在该目录中创建和删除临时工作文件
/usr 用户二进制目录,大量用户级的GNU工具和数据文件都存储在这里
查看系统资源
查看CPU信息:lscpu
查看内存信息:free -h
查看硬盘信息:df -h
查看文件大小:du -h -d 1
查看文件大小:du -h -d 1
查看系统进程:top 或者 ps -ef 或者 jobs
环境变量、状态变量、位置参数变量、自定义变量,调用变量时,要在变量前面加一个 $符号
环境变量:用于存储有关shell会话和工作环境的系统变量
状态变量:用于记录命令的运行结果
位置参数变量:用于用于向命令或程序脚本中传递信息
自定义变量:由用户自行定义的变量,可用于用户编写的脚本,多个命令间的值传递等
$HOME
$PATH
$SHELL
$LOGNAME
$PS1
$PATH:输入命令时Linux会去查找PATH里面记录的路径,如果命令存在某一个路径中,就可以成功调用。
找到工具的老家并且使用$PATH调用命令
echo #打印字符串,打印变量值,变量调用要加$
$echo $PATH #echo命令在服务器中的路径
/trainee2/vip28/miniconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
# 可以把 : 替换成换行符 \n
$echo $PATH | tr ':' '\n'
/trainee2/vip28/miniconda3/condabin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin
# 比如 ls 命令存在
$ ls
$ which ls
/bin/ls
在自己家目录下创建一个~/bin/文件夹并将其添加到环境变量中,后续安装软件,就拷贝可执行文件到这个bin文件夹(类似于工具箱本箱)
mkdir ~/bin
echo 'export "PATH=~/bin:$PATH" ' >> ~/.bashrc
source ~/.bashrc
用于记录运行结果
$? #获取上个指令的执行状态返回值,0表示成功,不是0表示失败
echo $?
$$ #当前执行的shell脚本的进程PID号
$! #上一个后台工作的进程PID号
$_ #获取在此之前执行的命令或脚本的最后一个参数
$n #n是数字,$0代表命令本身,$1-$9代表1-9个参数,10以上的数字表示为 ${1111}
$* #命令行中所有的参数,把所有参数看成一个整体
$@ #命令行中所有的参数,把所有参数区别对待
$# #表示参数的个数
# 1
if [ condition ]
then
commands
fi
# 2
if [ condition ]
then
commands
else
commands
fi
# 3
if [ condition ]
then
commands
else
if [ condition ]
then
commands
fi
fi
# (else if 可以缩写为 elif )
if [ condition ]
then
commands
elif [ condition ]
then
commands
fi
fi
# 数值判断,运行顺序从左往右,返回逻辑值
-eq # equal 相等返回T
-ne # not equal 不相等返回T
-gt # great than 大于返回T
-ge # great equal 大于等于返回T
-lt # less than 小于返回T
-le #less equal 小于等于返回T
###例
if [ 1 -eq 1 ] #判断1是否等于1
then
echo "Welcome to Biotrainee() !"
else
echo "**************"
fi
# 结合状态参数 $?
if [ $? -eq 0 ]
then
touch ok.txt
fi
#字符串判断
[ -z STRING ]
[ -n STRING ]
[ STRING1 ]
[ STRING1 == STRING2 ]
[ STRING1 != STRING2 ]
[ STRING1 < STRING2 ]
###例
if [ "aa" == "aa" ]
then
echo "equal"
fi
# 文件判断
[ -a FILE] #FILE存在返回T
[ -d FILE] #FILE存在并且是目录返回T
[ -f FILE] #FILE存在且是普通文件返回T
###例
if [ ! -f ok.txt ]
then
touch ok.txt
fi
for i in 1 2 3 4 5
do
echo ${i} "Welcome to Biotrainee() !" #变量要加{},否则不容易识别
done
for i in {1..10}
do
touch file${i}
done
list="CDS exon gene start_codon stop_codon transcript UTR"
for i in ${list}
do
echo "This feature is ${i}"
done
ls file* | while read id;
do
mv ${id} ${id}.txt ;
done
ls file* > config
cat config | while read id
do
mv ${id} ${id%.txt}
done
##使用vim编辑器编辑,后缀常修改为.sh
#####test.sh#####
$ vim test.sh
#!/bin/bash
echo "Welcome to Biotrainee() !"
$ bash test.sh
# 1标准输出 和 2标准误输出
$ bash test.sh 1>test.log 2>&1
# 可执行权限
$ ls -lh test.sh
$ chmod 764 test.sh
$ ls -lh test.sh
# 路径调用可执行文件
./test.sh
#####test2.sh#####
$ cat test2.sh
#!/bin/bash
cat $1
$ bash test2.sh readme.txt
#####test3.sh#####
$ cat test3.sh
#!/bin/bash
echo "Start"
sleep 100s
echo "End"
$ bash test3.sh
$ nohup bash test3.sh &
$ nohup bash test3.sh 1>test3.log 2>&1 &
$ top
$ ps -ef | grep test3
###任务提交
nohup # 不要挂断任务,把任务提交到服务器上运行
& #任务后台运行,常与nohup连用
top #实时显示系统中各个进程的资源占用情况,按q退出
htop #优化的top命令,界面更加美观
ps #process status 列出当前系统中运行的进程列表,一般加上-ef参数
ps -ef | grep #检索带有指定字符的运行任务
kill #杀掉进程,kill -9 PID
##查看命令运行情况##
#使用tail浮动查看输出结果
tail -f <log file>
#使用less浮动查看
less<log file>
shift + F
#用top或者htop进行监视
top/htop 或者 top | grep '$LOGNMAE'
$ cat test.R
#!/usr/bin/Rscript
a = 1:10
paste0("gene",a)
$ Rscript test.R
[1] "gene1" "gene2" "gene3" "gene4" "gene5"
[6] "gene6" "gene7" "gene8" "gene9" "gene10"
$ cat test.py
#!/usr/bin/python3
print("Hello World")
$ python3 test.py
Hello World
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。