shell
1)系统的用户界面,提供了用户与内核进行 交互操作的一种接口
2)一门编程语言
文件系统结构
/ :虚拟目录的根目录。通常不会在这里存储文件
/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 -sh ~
查看系统进程:top / htop / ps -ef | grep “$LOGNAME”
变量
echo
1)打印字符串
2)打印变量的值,变量调用要加 $
3)单引号内变量不会被解释,双引号内变量会被解释
环境变量
用于存储有关shell会话和工作环境的系统变量
1)$HOME:当前用户的主目录
2)$PATH:shell查找命令的目录列表,由冒号”:”分隔
只有放在bin里面的程序可以直接调用,否则需要写绝对路径或相对路径
3)$SHELL:bash shell的全路径名
4)$LOGNAME:当前用户的登录名
5)$PS1:shell命令行界面的主提示符
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取和执行。
状态变量
用于存储有关shell会话和工作环境的系统变量
$? :获取执行上一个指令的执行状态返回值,返回0表示 上一个命令或者程序执行成功,返回的值为非0则表示上一个命令执行失败
$$:获取当前执行的shell脚本的进程号PID
$! : 获取上一个后台工作的进程的进程号PID
$_ :获取在此之前执行的命令或脚本的最后一个参数
位置参数变量
用于用于向命令或程序脚本中传递信息
$n :n 为数字,$0 代表命令本身,$1~$9 代表第 1~9 个参数,10以上的参数需要用大括号包含,如${10}
$* :命令行中所有的参数,把所有的参数看成一个整体
$@:命令行中所有的参数,不过把每个参数区别对待
$# :命令行中所有参数的个数
自定义变量
由用户自行定义的变量,可用于用户编写的脚本,多个命令间的值传递等
结构化语句
if条件语句

数值判断
| [ INT1 -eq INT2 ] | equal | INT1 和 INT2 两数相等 |
|---|---|---|
| [ INT1 -ne INT2 ] | not equal | INT1 和 INT2 两数不等 |
| [ INT1 -gt INT2 ] | great than | INT1 大于 INT2 |
| [ INT1 -ge INT2 ] | great equal | INT1 大于等于 INT2 |
| [ INT1 -lt INT2 ] | less than | INT1 小于 INT2 |
| [ INT1 -le INT2 ] | less equal | INT1 小于等于 INT2 |
字符串判断
| [ -z STRING ] | STRING的长度为零 |
|---|---|
| [ -n STRING ] | STRING的长度非零 |
| [ STRING1 ] | 字符串不为空 |
| [ STRING1 == STRING2 ] | 两个字符串相同 |
| [ STRING1 != STRING2 ] | 字符串不相同 |
| [ STRING1 < STRING2 ] | STRING1字典排序在STRING2前面 |
文件判断
| [ -a FILE ] | FILE 存在 |
|---|---|
| [ -d FILE ] | FILE 存在且是一个目录 |
| [ -f FILE ] | FILE 存在且是一个普通文件 |
for循环语句

变量要加{},否则容易分辨不出
反引号`` :将反引号内的Linux命令先执行,然后将执行结果赋予变量;获取来自于其他Linux命令的值
while循环语句

参数扩展
| ${变量#关键字} | 若变量内容从头开始的数据符合“关键字”,则将符合的最短数据删除 |
|---|---|
| ${变量##关键字} | 若变量内容从头开始的数据符合“关键字”,则将符合的最长数据删除 |
| ${变量%关键字} | 若变量内容从尾开始的数据符合“关键字”,则将符合的最短数据删除 |
| ${变量%%关键字} | 若变量内容从尾开始的数据符合“关键字”,则将符合的最长数据删除 |
| ${变量/旧字符串/新字符串} | 若变量内容符合“旧字符串”,则首个旧字符串会被新字符串替换 |
| ${变量//旧字符串/新字符串} | 若变量内容符合“旧字符串”,则全部旧字符串会被新字符串替换 |
| ${变量:索引} | 截取变量从索引位置到末尾的所有字符 |
| ${变量:索引:n} | 截取变量从索引位置开始的n个字符(从0开始编号) |
| ${变量:索引:(-n)} ${变量:索引:-n} |
截取变量从索引位置到倒数第n+1位的所有字符 |
shell脚本
为了和普通文本文件区分开,通常shell脚本都会以 .sh 为后缀名
脚本首行的 #! 是Linux的 Shebang符号,指定解释器
#!/user/bin/env bash:env用来找当前环境下的解释器
输出流
1:标准输出流,运行成功的代码的结果
2:标准误输出流,运行失败的报错
分开重定向,将正确和错误的结果输出到不同文件进行保存
修改权限
chmod 764 FILENAME:-rwxrw-r—
任务提交
nohup :不要挂断任务,即把任务提交到服务器上运行
& :任务后台运行,通常与 nohup 连用
top :实时显示系统中各个进程的资源占用状况,按 q 退出
ps :Process Status列出当前系统中运行的进程列表, 一般加上 –ef 参数
kill :杀掉进程,kill PID
图片引用自生信技能树团队
