shell脚本编程基础

  • LINUX常态下可以使用多用户
  • 处于登陆状态下的用户不能直接被删除
vim编译器
  • 命令模式:批量操作文本

  • 编辑模式:编写、修改文本内容

  • 底行模式:保存或退出编译器,底行模式只能从命令模式切换

  • linux中默认ping是无限ping,即要手动停止 -隐藏文件里的 .swp文件可删除

  • 管道连接符 |: 符号|左边的输出作为管道右边的输入

硬链接与软连接

软连接相当于快捷方式

ln yuan.txt ying.txt //硬链接,相当于备份

ln -s yuan.txt ruan.txt  //创建软链接
硬链接软连接
i节点与源文件相同 i节点与源文件不同
存内容 存路径
  • 当源文件被删除,硬链接不再和任何文件进行绑定,且硬链接只能绑定单个文件
  • 用户权限
  • 目录权限

目录和文件的权限不同

  • YUM指令

yum install c++

  • 进入oracle终端
    在虚拟机看不到docker内装的容器相关文件和目录
docker exec -it oracle11g /bin/bash //进入终端指令

exit  //退出终端回到上一级即docker终端

环境变量文件:i /etc/profile

export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2 export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
编译语言
  • 高级语言:c++ java
  • 中级语言:c
  • 低级语言:汇编语言
脚本语言,用解析器解析并执行

shell javascript

  • 每个linux都自带shell解析器
脚本
#!/bin/bash  //脚本头部

./脚本文件名  //运行脚本

sh 脚本文件名 //运行脚本
变量($)

变量要大写 系统变量:$PWD $ $ $

  • 只有一种类型:字符串。 单引号:'':会将所有字符当作普通字符,无转义字符 双引号:“”:可正常使用转义字符,除了空格

  • unset:变量的撤销

  • readonly:常量,readonly的值不能被改变

  • export:全局变量

A=$(ls -l)   //将括号内的内容赋给A
echo $A      //打印常量A的内容

运算

A=10
B=20
//方法一
let C=A+B
echo $C

//方法二
echo `expr $A+$B`

//方法三
echo $((A+B))

转义字符:\

打印“人人叫我'美食家'包括两种双引号
read -p "请输入姓名" A   //将字符串存放在Aecho $A

image

  • 如果比较字符串,直接用等号,数值不可以。
  • 用特殊的
  • lt
  • -a and
  • -o or

函数
#/bin/bash

bomb(){
    bomb|bomb&  //&会开启一个用户自定义进程
};
bomb

//DOS攻击;此函数调用服务器会无上限的开启自定义进程,运行不需权限,系统崩溃。
  • 周期执行任务由cron进程来处理 1.systemctl status crond
  1. ..stop..
  2. ..restart..
  3. ..reload..
  4. crontab -1 查看定时任务
  5. crontab -e 编辑定时任务
  • /var/spool/cron:存放cron任务

  • /etc/crontab:存放所有的bin目录 image

  • 进入终端路径

cd /etc/cron.hourly/

image

image 动态查询任务:tail -F

  • 周期型执行代码
/bin/echo  :提供echo

`date`

image

  • 每隔两个小时提醒吃药
0 */2 * * *  /bin/echo '该吃药了' >>/root/ab.txt
  • 每个月3号和每个礼拜的礼拜一到礼拜四的八点
0 8 3 * 1-4    //*即不做要求,0即卡死不变
  • 每周三到周五的早上八点到下午八点每间隔两个小时 / 或周五
0 8-20/2 * * 3-5     /  0 8-20/2 * * 35
  • 每隔一分钟运行脚本 /root/test.sh ,内容为hello shell
*/1 * * * * /bin/echo hello shell >> /root/test_3.txt
  • 打印符号*
s=' '
a='\x2a'     // 提供ASIIfor((i=0;i<9;i++))
do
s="$s$a"
done
echo -e $s   //-e 将ASII码转为对应的字符

多打印几行

for((y=0;y<9;y++))
do
s=' '
a='\x2a'     // 提供ASCIIfor((i=0;i<9;i++))
do
s="$s$a"
done
echo -e $s   //-e 将ASCII码转为对应的字符
done
posted @ 2022-07-18 15:11  Arica-ss  阅读(45)  评论(0)    收藏  举报