Shell (一) 基础知识以及常用特殊符号

Shell的概念

  1. 自动化批量系统初始化(update,软件安装,时区设置,安全,安全策略…)
  2. 自动化批量的软件部署(LAMP、LNMP、Tomcat、LVS、Nginx等)
  3. 管理应用程序(KVM、集群LVS管理扩容,MySQL,DELLR720批量RAID)
  4. 日志分析处理程序(pv)
  5. 自动化备份回复程序(MySQL完全备份/增量/+Crond)
  6. 自动化管理程序(批量远程修改密码,软件更新、配置更新)
  7. 自动化信息采集及监控程序(收集系统/应用状态信息,CPU,Mem,Disk,Net,Apache,MySQL)
  8. 配合Zabbix信息采集(收集系统/应用状态信息,CPU,Mem,Disk,Net,Apache,MySQL)
  9. 自动化扩容(增加云主机—>部署应用)
  10. Shell可以做任何事情,

程序语言执行:

C     		------编译------(机器码二进制) 直接被CPU去执行效率高
JAVA       	------编译------ 字节码 JAVA虚拟机去执行
Shell      	------**解释**------(/usr/bin/bash)
Perl        ------解释------(/usr/bin/perl)
expect      ------**解释**------ (/usr/bin/python)   
Python     	------**解释**------
            ------编译------字节码(只能再Python虚拟机中执行) 

程序是由那些组程序:逻辑 + 数据

Shell Bash解释器

Linux 解释器

/usr/bin/bash 				#shell解释器
/usr/bin/python			    #python解释器
/usr/bin/perl    			#perl解释器

例:#!/usr/bin/bash //#! 不是注释 而是明确指定解释器/usr/bin/bash
不同程序应使用相同的解释器去执行脚本。

执行方式

bash shell.sh       #sub shell 子shell中执行
./shell.sh          #sub shell 子shell中执行
source shell.sh     #当前shell执行
. shell.sh          #当前shell执行

切换用户shell的区别
su - user //su加横杠表示登录用户shell环境

1.login shell
su - user

/etc/profile           	 #系统级别 登陆时执行       
/etc/bashrc         	 #系统级别 登录时执行
~/.bash_profile          #用户级别 登陆时执行
~/.bashrc                #用户级别 登陆时执行

2.nologin shell
su user

/etc/bashrc            #系统级别  登录时执行
~/.bashrc              #用户级别 登陆时执行
~/.bash_logout         #用户级别离开时执行
~/.bash_history        #用户级别离开时执行

一、Shell技术

  1. shell 特性
  2. shell变量
  3. shell条件测试
  4. shell运算

二、Linux支持的shell

cat /etc/shells
chsh -l
/bin/sh
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh

三、GNU/bash shell特点

  1. 命令和文件自动补齐
  2. 命令历史记忆功能上下键、!number、!string、!$: 上一个命令的最后参数、!!:上一个命令、^R //!表示历史
  3. 别名功能 alias、unalias cp、~username/.bashrc、\cp-rf /etc/hosts.
  4. 快捷键^R, ^D, ^A ,^E, ^L, ^U:删除光标前, ^K:删除光标往后字符, ^S:锁屏, ^Q:解锁
  5. 前后台作业控制 &:后台运行, nohup:退出shell后台仍运行, ^C 结束进程, ^Z 终止进程 ,bg%1 显示上次进程, fg%1 返回上次进程,kill%3, screen,
  6. 输入输出重定向1,2,3 > >> 2> 2>> 2>&1 &> cat < /etc/hosts cat < file1 <<EOF
类型操作符
<从指定的文件读取数据,而不是从键盘输入
>>将输出结果追加到指定的文件
>将输出结果保存到指定的文件(覆盖原有内容)
2>将错误信息保存到指定的文件(覆盖原有内容)
2>>将错误信息追加到指定的文件中
&>将标准输出、标准错误的内容保存到同一个文件中
  1. 管道 | tee
   ip addr | grep “inet” | grep eth0
   ip addr | grep “inet”  | test test | grep ehh0 覆盖
   ip addr | grep “inet” | tee -a test | grep eth0    -a 追加
      例: 
       df | grep ‘/$’
       date > aaaa.txt      
       [root@ansible ~]# date | tee aaaa.txt        //使用|tee 会显示在显示器并重定向到文件中
        2020年 04月 29日 星期三 17:36:03 CST
        [root@ansible ~]# cat aaaa.txt 
        2020年 04月 29日 星期三 17:36:03 CST
  1. 命令排序
    #执行时按顺序去执行
    例: ping -c1 192.168.1.1; echo “shibai” ; cd /home #前面命令执行结果如何后面命令都执行。

    && || #具备逻辑判断
    例 : mkdir -p /var/111/222/333 && echo ok #mkdir命令执行成功,后面命令才能执行
    ls /var/111/222/333/444 || mkdir -p /var/111/222/333 //前面命令返回值错误时,||后命令才执行
    ping -c 114.114.114.114 &>/dev/null && echo “queren” || echo “down” 如果--------那么就------||否则

    注意:
    command & 后台执行
    commadn &> 混合重定向(标准输出1,错误输出2)
    command && command2 命令排序,逻辑判断

  2. shell通配符(元字符)表示的不是本意
    * 匹配任意多个字符 ls in* rm-rf * rm -rf .pdf find/-inname “-eht0”
    ? 匹配任意一个字符 touch love loove love l7ve ; ll l?ve
    [] 匹配括号中任意一个字符[avc] [a-z] [0-9] [a-zA-Z0-9] | l[lo]ve 等。
    () 在子shell中执行(cd /boot;ls) (umask 077;touch file 1000)
    {} 集合touch file{1. .10} 必须是两个点
    #make /home/{111,222} mkdir -pv /home/{333/{aaa,bbb},444}
    \ 转义符,让元字符回归本意

  3. echo带颜色输出

 -e   //激活转义符
echo -e "\e[1;31m \e[0m"          //30-36,40-47都均为颜色,\e[0m   返回值。
文字色:
    \e[0m 将颜色重新置回
   颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37
背景色:
   Greed Background颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47

文字闪动:
   echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"
   红色数字处还有其他数字参数:0 关闭所有属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值