zoukankan      html  css  js  c++  java
  • (一)shell基础

    (1)shell作用:

    	1)自动化批量系统初始化程序(软件安装,时区设置,安全策略)
    	2)自动化批量软件部署程序(LNMP,LAMP,LNTM)
    	3)管理应用程序(kvm,集群管理扩容)
    	4)日志分析处理程序(PV,UV)
    	5)自动化备份恢复程序(mysql完全备份,增量)
    	6)自动化管理程序(批量远程修改密码,软件升级,配置更新)
    	7)自动化信息采集及监控程序(收集系统/应用状态信息,CPU,mem,disk,tcp status,net,nginx,mysql)
    	8)配合zabbix信息采集
    	9)自动化扩容(增加云主机--->业务上线)
    		zabbix监控cpu 80% + python API AWS/ECS(增加/删除云主机)+shell Script(业务上线)
    

    (2)shell执行

    • shell执行方式
    	ping -c1 www.baidu.com &>/dev/null && echo "www.baidu.com is up" || echo "www.baidu.com is down"
    	方式一:bash ping01.sh
    	方式二:sh ping01.sh
    	方式二:./ping01.sh 
    	方式二:source ping01.sh 
    		sh是bash的软连接   通过whish sh   ll /usr/sbin/sh查看
    
    • 开头语言标识
    	#! /usr/bin/bash      声明使用bash解释器执行该文件
            执行方式使用bash test.sh 这种方式开头添加#! /usr/bin/bash 可以忽略
            执行方式./test.sh 需要在文件的开头声明解释器
    
    • 当前shell和子shell区别和执行方式
    	子shell中执行的两种方式:bash和sh,不会影响当前shell
    	当前shell中执行的两种方式:. /root/.bashrc和 source /root/.bashrc    执行会影响当前shell
    		例:在/root/.bashrc 定义一个别名:alias wang='data'   如果使用bash /root/.bashrc 不会生效因为它是在子shell中执行不会影响当前shell;
    

    (3)shell特性

    • 1)命令和文件自动补齐:tab键
    • 2)命令历史记忆功能:上下键丶!number丶!string丶!$丶!!丶 ctrl+R
    • 3)别名功能: alias , unalias cp , ~username/.bashrc cp
    • 4)快捷键
    		crtl+c :终止当前用户的命令
    		crtl+d :退出当前会话,相当于logout
    		crtl+l :清屏,相当于clear命令
    		crtl+a  :移动到命令行首
    		crtl+e :移动到命令行尾
    		crtl+u  :清除当前光标之前的命令
    		crtl+k :清除当前光标之后的命令
    		crtl+s :挂起,当前会话挂起,不能动
    		crtl+q :解除挂起
    
    • 5)前后台作业控制:
    		& :
    		nohup :
    		ctrl + c    ctrl + z 
    		bg fg screen 
    
    • 6)输入输出重定向
    		>或1> :输出重定向,把前面输出的东西输入到后边的文件中,会清除文件原有内容
    		>>或1>> :追加输出重定向,把前面输出的内容追加到后边的文件尾部,不会清除文件原有内容
    		0<或<:输入重定向,输入重定向用于改变命令的输入,后面指定输入内容,可以理解为把文件的内容输入到命令中进行处理
    		0<<或<<:追加输入重定向,后跟字符串,用来表示"输入结束",也可用ctrl+d来结束输入
    			cat >>hello.txt<<EOF
    			> hello
    			> EOF
    		2> :错误输出重定向,把错误信息输入到后边的文件中,会删除文件原有内容
    		2>> :错误输出追加重定向,把错误信息追加到后边的文件中,不会删除文件原有内容	
    		
    	特殊重定向的三种高级用法
    		例:正确输出和错误输出都放入到同一个文件中:
    			方法一:#echo 'hello,world!'  >a.txt  2>a.txt    ,可以使用追加输出重定向
    			方法二:#echo 'hello,world!' >a.txt 2>&1     常用方法,不可以使用追加输出重定向
    			方法三:#echo 'hello,world!'  &>a.txt   
    
    • 7)管道:| 把命令的结果作为后面命令的参数
    • 8)命令排序:
    	;  不具备逻辑判断    &&|| 具备逻辑判断
    		;  :分号,执行多个命令,不具备逻辑判断,前一个命令执行失败后一个命令还会执行 date;date
    		&&  :具备逻辑判断,前一个命令执行成功返回值$? == 0 才会执行后面一个命令  ./configure && make && make install 
    		||  :前一个命令执行失败(命令的返回值$?为非0),才会执行后面一个命令 ls /home/222/333/aaa/bbb || mkdir -pv /home/222/333/aaa/bbb
    		
    		注意:
    			command &  后台执行
    			command &>/dev/null 混合重定向
    			command 1 && command 2  命令排序
    
    • 9)shell通配符(元字符)
    		*	:匹配任意多个字符   ls *.log    rm -rf *  find / -name "*.log"
    		?	: 匹配任意一个字符
    		[]	:匹配括号中任意一个字符	[abc] [a-z] [0-9] [A-Z] [a-z0-9A-Z] [^a-z0-9A-Z]  ll /dev/sd[a-z]
    			[^a-z0-9A-Z]  :取反
    		()	:在子shell中执行, (umask 077;touch test100.txt)  这种不会修改当前shell的umask值
    		{}	:集合 touch file{1..9}
    			cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.old
    			cp -rv /etc/sysconfig/network-scripts/{ifcfg-ens33,ifcfg-ens33.old}
    			cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33{,.old}
    			:转移符,让元字符回归本意
    			echo *
    			echo *
    			可以让普通字符变成特殊字符
    				echo -e "a	b"   	表示tab键
    				echo -e "a
    b"	 
    表示换行符
    
    • 10)echo颜色输出文本
    		前景色:
    			echo -e "e[1;31mThis is a red text."
    			echo -e "e[1;32mThis is a green  text."    这样会把当前终端的颜色也会改变
    			echo -e "e[1;32mThis is a green  text.e[0m"   只改变需要输出文本的颜色  e[0m表示重置
    
  • 相关阅读:
    GCD 并行子线程
    iOS开发>学无止境
    iOS开发>学无止境
    iOS开发>学无止境
    FMDB使用
    递归
    局部变量与全局变量
    函数式编程与参数
    文件的操作
    集合的操作
  • 原文地址:https://www.cnblogs.com/lovelinux199075/p/8858054.html
Copyright © 2011-2022 走看看