前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生信马拉松 Day15 Linux-shell笔记

生信马拉松 Day15 Linux-shell笔记

原创
作者头像
阿呆的月历
发布2024-02-05 19:47:30
1150
发布2024-02-05 19:47:30
举报
文章被收录于专栏:生信马拉松生信马拉松

碎碎念:完蛋了,虽然补完了linux的课程但是感觉linux对我来说还像新的一样,完全不知道怎么用以及有什么用,唯一能记住的东西只有自己以前在书上学过的部分,现在回想起来觉得前面R的内容学的好,不会只是因为我本来就会吧!!!∑(゚Д゚ノ)ノ,突然就明白了曾老师在群里说完成Linux的题目需要至少1个月才能完成,简直保守了----

附上曾老师Linux题目的链接:http://www.bio-info-trainee.com/2900.html

笔记正文如下:

内容一:查看服务器信息

代码语言:sh
复制
lscpu
# 查看CPU信息
代码语言:sh
复制
free -h 
#查看内存信息

df -h 
#查看硬盘信息

du -h -d 1 
##查看第一层文件夹的大小

du -sh ~ 
#查看家目录的总结,~可以被其他文件夹名代替

top 
#查看系统进程和任务,按q或者ctrl+C退出

htop 
#可以达到相同的效果,但是需要用conda安装

htop -u <username> 
#可以只看某一个用户名的使用情况

内容二:变量

来自:生信技能树,生信马拉松,卖萌哥
来自:生信技能树,生信马拉松,卖萌哥

1.自定义变量

由用户自行定义的变量,可用于用户编写的脚本,多个命令间的值传递等(注:=前后不要有空格)

代码语言:sh
复制
a=gene
echo $a
#gene

echo 'This is a $a'
#This is a $a

echo "This is a $a"
#This is a gene

单引号:变量不会被解释

双引号:变量会被解释

2.环境变量

来自:生信技能树,生信马拉松,卖萌哥
来自:生信技能树,生信马拉松,卖萌哥

3.状态变量

用于记录命令的运行结果,常用的是$?,用于获取上一条命令的执行情况,输出0时代表成功,不是0就代表出错了

代码语言:sh
复制
ls
echo $?
#0

4.位置参数变量

来自:生信技能树,生信马拉松,卖萌哥
来自:生信技能树,生信马拉松,卖萌哥

内容三:结构化语句

1.条件语句if

代码语言:sh
复制
# 写法1
if commad 
then
   commands
fi

# 写法2
if command
then
 commands
else
 commands
fi
来自:生信技能树,生信马拉松,卖萌哥
来自:生信技能树,生信马拉松,卖萌哥
代码语言:sh
复制
if [ 1 -eq 1 ]
then
  echo 'Hi'
else
  echo '???'
fi
#Hi!

#另一种写法
if [ 1 -eq 1 ]; then echo 'Hi'; else echo '???'; fi

注意方括号[]和两个1之间都有空格,否则会报错

表示语句的分隔,各干各的

如果写&&就有承接关系,只有前面执行成功了后面才能执行

来自:生信技能树,生信马拉松,卖萌哥
来自:生信技能树,生信马拉松,卖萌哥

2.循环语句for

代码语言:sh
复制
for i in list
do 
 commands
done



for i in 1 2 3 4 5
do
echo "${i} Hi!"
sleep 3s
done



for i in {1..10}
do
touch file${i}
done
# 注意:变量前要加${}
代码语言:sh
复制
# 两种使Linux把内部正则表达式提前展开的方式
for i in $(ls file\*)

for i in `ls file\*`

3.循环语句while

代码语言:sh
复制
while read id
do 
 commands
done

内容四:参数扩展

来自:生信技能树,生信马拉松,卖萌哥
来自:生信技能树,生信马拉松,卖萌哥
来自:生信技能树,生信马拉松,卖萌哥
来自:生信技能树,生信马拉松,卖萌哥
代码语言:sh
复制
for i in {1..10}
do
 touch file${i}.txt
done

ls file* > config

cat config | while read id
do
mv ${id} ${id%.txt}
done

id=example.test.fq

echo ${id#example}

内容五:shebang

脚本首行的 #! 符号是Linux的Shebang符号,指定解释器,一般用bash

代码语言:sh
复制
#!/bin/bash

但作为文件而言,有没有这一行不影响脚本的使用

但当做命令来用在Linux在使用其他编程语言,需要在shebang中定义解释器,Python是python、python2、python3,R是 Rscript

可以用which来查找解释器的位置,例如which Rscript

shebang具有扩展性

通用写法如下

代码语言:sh
复制
#!/usr/bin/env bash
代码语言:sh
复制
#!/usr/bin/env python
代码语言:sh
复制
#!/usr/bin/env Rscript

内容六:输出流和后台

代码语言:sh
复制
bash test.sh 1>test.log 2>$1

1是标准输出流,2是标准误输出流

来自:生信技能树,生信马拉松,卖萌哥
来自:生信技能树,生信马拉松,卖萌哥
代码语言:sh
复制
tail -f nohub.out
# 可以实时查看命令

结尾:Linux的内容实在太干了,感觉要反复练习好久才能掌握。一个3小时的直播回发要反复拖回来看,学习起来要花至少5小时,再接再厉吧~

生信技能树,生信马拉松,卖萌哥

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内容一:查看服务器信息
  • 内容二:变量
    • 1.自定义变量
      • 2.环境变量
        • 3.状态变量
          • 4.位置参数变量
          • 内容三:结构化语句
            • 1.条件语句if
              • 2.循环语句for
                • 3.循环语句while
                • 内容四:参数扩展
                • 内容五:shebang
                • 内容六:输出流和后台
                相关产品与服务
                云直播
                云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档