Linux 之shell脚本编程

01 Linux 系统环境

文件系统结构

/ 虚拟目录的根目录。通常不会在这里存储文件

/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   动态查看,看所有用户; htop -u June16【即自己的登录名】,看自己在运行的命令
ps -ef | grep "$LOGNAME"  该命令执行瞬间在进行的命令

变量

环境变量、状态变量、位置参数变量、自定义变量,调用变量时,要在变量前面加一个 $ 符号

• 环境变量: 用于存储有关shell会话和工作环境的系统变量

常见环境变量:

• $HOME:当前用户的主目录

• $PATH:shell查找命令的目录列表,由冒号(:)分隔。

• $SHELL:bash shell的全路径名

• $LOGNAME:当前用户的登录名

• $PS1:shell命令行界面的主提示符

• 位置参数变量: 用于用于向命令或程序脚本中传递信息

• 状态变量: 用于存储有关shell会话和工作环境的系统变量

• 自定义变量

由用户自行定义的变量,可用于用户编写的脚本,多个命令间的值传递等

03 结构化语句

• 条件语句 if

常见格式

常见条件:数值、字符串、文件判断

数值判断

if [ $? -eq 0 ] ##前后要有空格
  then
touch ok.txt
fi

字符串判断

文件判断

• 循环语句 for 和 while

for

常见格式

for i in {1..10}
do
touch file${i} ##为了不出问题,可以变量都加上{}
done

!!!!!

不按shift时直接按~键即可打出反引号

while

常见格式

• 参数扩展

索引位置从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

两个>>,否则不行

生成文件时sra前多了一个空格,while循环中没有空格→替换失败

04 Shell 脚本编程

• Shell 脚本

保存脚本

写三句命令,两句正确一句错误
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脚本的文件权限

ll test.sh
chmod 764 test.sh

参数传递

vim test2.sh
i
  #!/bin/bash
  cat $1
ESC
:wq

bash test2.sh readme.txt

• 任务提交

• nohup :不要挂断任务,即把任务提交到服务器上运行
• & :任务后台运行,通常与 nohup 连用
• top :实时显示系统中各个进程的资源占用状况,按 q 退出
• ps :Process Status列出当前系统中运行的进程列表,
一般加上 –ef 参数
• kill :杀掉进程,kill [PID]
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教程

1.阮一峰的bash脚本教程Bash 脚本教程 - 网道

2. 鸟哥的Linux私房菜:基础学习篇 第四版 (第14章)第十二章、学习 Shell Scripts | 鸟哥的 Linux 私房菜:基础学习篇 第四版

  • 2
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangchuang2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值