01 Linux 系统环境
文件系统结构
![](https://img-blog.csdnimg.cn/img_convert/65ff6c997649402620e0be74feaad73e.png)
/ 虚拟目录的根目录。通常不会在这里存储文件
/bin 二进制目录,存放许多用户级的GNU工具
/boot 启动目录,存放启动文件
/dev 设备目录,Linux在这里创建设备节点
/etc 系统配置文件目录
/home 主目录,Linux在这里创建用户目录
/lib 库目录,存放系统和应用程序的库文件
/media 媒体目录,可移动媒体设备的常用挂载点
/root root用户的主目录
/sbin 系统二进制目录,存放许多GNU管理员级工具
/run 运行目录,存放系统运作时的运行时数据
/tmp 临时目录,可以在该目录中创建和删除临时工作文件
/usr 用户二进制目录,大量用户级的GNU工具和数据文件都存储在这里
![](https://img-blog.csdnimg.cn/img_convert/8a5ae7d98e8a9555c840c36bd4c4057d.png)
• 查看CPU信息:lscpu • 查看内存信息:free -h • 查看硬盘信息:df -h • 查看文件大小:du -h -d 1 • 查看文件大小:du -sh ~ • 查看系统进程: top htop 动态查看,看所有用户; htop -u June16【即自己的登录名】,看自己在运行的命令 ps -ef | grep "$LOGNAME" 该命令执行瞬间在进行的命令
变量
环境变量、状态变量、位置参数变量、自定义变量,调用变量时,要在变量前面加一个 $ 符号
• 环境变量: 用于存储有关shell会话和工作环境的系统变量
常见环境变量:
• $HOME:当前用户的主目录
• $PATH:shell查找命令的目录列表,由冒号(:)分隔。
![](https://img-blog.csdnimg.cn/img_convert/e0ab04e51125dd332d4f33f364601480.png)
• $SHELL:bash shell的全路径名
• $LOGNAME:当前用户的登录名
• $PS1:shell命令行界面的主提示符
![](https://img-blog.csdnimg.cn/img_convert/92ab215f1c32910a74610b74a7ae0a21.png)
• 位置参数变量: 用于用于向命令或程序脚本中传递信息
• 状态变量: 用于存储有关shell会话和工作环境的系统变量
• 自定义变量
由用户自行定义的变量,可用于用户编写的脚本,多个命令间的值传递等
03 结构化语句
• 条件语句 if
常见格式
![](https://img-blog.csdnimg.cn/img_convert/2f978321118446843d94ceccc84971a6.png)
常见条件:数值、字符串、文件判断
数值判断
![](https://img-blog.csdnimg.cn/img_convert/bdfa3e2d9ba854b9b3e5a68a1b47d97d.png)
if [ $? -eq 0 ] ##前后要有空格 then touch ok.txt fi
字符串判断
文件判断
• 循环语句 for 和 while
for
常见格式
![](https://img-blog.csdnimg.cn/img_convert/6f1d34c9df0a6d74ec8913609687fde1.png)
for i in {1..10} do touch file${i} ##为了不出问题,可以变量都加上{} done
![](https://img-blog.csdnimg.cn/img_convert/ee32f64270dd317c2e61acc8903228fc.png)
!!!!!
![](https://img-blog.csdnimg.cn/img_convert/5d77e8721b73959ece7c71b4817b9981.png)
不按shift时直接按~键即可打出反引号
while
常见格式
![](https://img-blog.csdnimg.cn/img_convert/4d7abf2c4d960109609fb6846a072d34.png)
• 参数扩展
![](https://img-blog.csdnimg.cn/img_convert/3566f51d298388af86f02f370f8a3d47.png)
![](https://img-blog.csdnimg.cn/img_convert/8d2be9b1feaaeb11d74bf83f9208b50e.png)
![](https://img-blog.csdnimg.cn/img_convert/c7d6e25929ac2c1b90d7835ad6c62e8e.png)
![](https://img-blog.csdnimg.cn/img_convert/35a34808ffd7da7302484d2ce3aa4d3c.png)
索引位置从0开始
练习
1.生成SRR1234501.sra到SRR1234510.sra这10个id
2.将结尾的.sra替换成.fastq
for i in {01..10} do echo SRR12345{i}.sra >> config done cat config | while read id do echo ${id%.sra}.fastq done cat config | while read id do echo ${id//sra/fastq} done
![](https://img-blog.csdnimg.cn/img_convert/cf4eedb3eb987fce546ed1d8a7a20efe.png)
两个>>,否则不行
![](https://img-blog.csdnimg.cn/img_convert/75c82e2c4193fd5d6ada3c64d1d15066.png)
生成文件时sra前多了一个空格,while循环中没有空格→替换失败
04 Shell 脚本编程
• Shell 脚本
保存脚本
![](https://img-blog.csdnimg.cn/img_convert/67f56079e25d28472aa70d2f4ae60487.png)
![](https://img-blog.csdnimg.cn/img_convert/9135f0c4a54b8200813994a0c7840b38.png)
写三句命令,两句正确一句错误 vim test.sh #!bin/bash pwd pwd ppp 1.不进行重定向,结果直接输出到标准输出流(屏幕) bash test.sh 2.进行重定向,但不指定标准输出和标准误输出 正确的在out.log中,错误的输出到标准输出流(屏幕) bash test.sh > out.log 3.进行分开重定向,正确与错误分别进入两个log文件 bash test.sh > out.log 2 > error.log 4.进行分开重定向,将2输出到1中,两者都输出到out.log bash test.sh > out.log 2>&1 ## 最推荐,可以把有问题的命令清晰呈现 cat out.log
shell脚本的文件权限
![](https://img-blog.csdnimg.cn/img_convert/d8fb182f5aa79125c76d35426f07fded.png)
ll test.sh chmod 764 test.sh
参数传递
vim test2.sh i #!/bin/bash cat $1 ESC :wq bash test2.sh readme.txt
![](https://img-blog.csdnimg.cn/img_convert/f7edb3ce8fdc7b536546fc0c658e0c7b.png)
• 任务提交
• nohup :不要挂断任务,即把任务提交到服务器上运行 • & :任务后台运行,通常与 nohup 连用 • top :实时显示系统中各个进程的资源占用状况,按 q 退出 • ps :Process Status列出当前系统中运行的进程列表, 一般加上 –ef 参数 • kill :杀掉进程,kill [PID]
![](https://img-blog.csdnimg.cn/img_convert/668eec662346c4f78d3a3446edee332d.png)
vim sleep.out i #!/bin/bash for i in {1..500} do echo $i>>sleep.out sleep 2s done ESC :wq 1.挂后台运行 nohup bash sleep.out & 2.动态查看输出内容(此处查看nohup.out是没有内容的哦) tail -f sleep.out 3.用top、htop分别查看命令的运行情况 top -u Last30 htop -u Last30 4.用ps -ef查看挂后台的命令 ps -ef | grep "June16" ##"登录名" 5.杀死命令 kill -9 id ## kill -9 无条件杀死
推荐bash教程
![](https://img-blog.csdnimg.cn/img_convert/fda48fbc6762c944438975d701823b6e.png)
1.阮一峰的bash脚本教程Bash 脚本教程 - 网道
2. 鸟哥的Linux私房菜:基础学习篇 第四版 (第14章)第十二章、学习 Shell Scripts | 鸟哥的 Linux 私房菜:基础学习篇 第四版