shell基础知识

shell基础知识

1 自动化 运维
	写shell脚本完成运维活动
	
2 shell
	1 定义:
		命令解释器(应用程序和操作系统之间的接口)

2 分类:
	狭义上指的是命令行shell(linux下的bash)
	
3 查看shell信息
	查看当前系统shell版本:
		echo $SHELL
	查看系统兼容性支持的其他版本:
		cat /etc/shells
		
4 shell脚本
	脚本执行方式:
		命令写到文件中,直接执行文件(shell脚本---》shell命令们)
	
3 创建shell脚本:
	1 创建工具:记事本(vim)
	2 脚本命令:
		1 名称有意义
		2 .sh结尾(给程序员看的)
	3 脚本内容
		1 首行指定解释器#!/bin/bash
		2 命令从上到下罗列
	4 注释
		单行注释: # 开头
		多行注释: :<<字符 ... 字符 (将字符包含的内容重定向到啥都不干)

4 运行shell脚本
	1 bash 脚本名(先启动子进程名字叫bash,在子进程中执行脚本内容)
		解释器:bash
	2 ./脚本名 (先启动子进程名字叫脚本名,在子进程中执行脚本内容)
		解释器:#!指定的解释器-----》系统缺省shell
	3 source 脚本名 (直接在当前shell执行脚本内容---》跟脚本内容复制粘贴执行的效果相同)
		解释器:当前shell

5 变量
	1 变量定义:
		普通变量:
			1 变量名=变量值 (变量值不能有特殊字符)
			2 变量名='变量值'  (变量值作为整体)
			3 变量名="变量值"  (变量套变量套变量)
	
	命令变量:(命令的输出作为变量值赋给变量名)
		变量名=`命令` 
		变量名=$(命令)
		
		命令变量的值在定义时确定
	
2 变量访问
	1 $变量名 
	2 "$变量名" (保证变量值是字符串)
	3 ${变量名} (限定变量名范围)
	4 "${变量名}" (推荐使用)
	
3 删除变量:
	unset 变量名:
		unset LANG (修改字符编码)

4 变量分类
	1 本地变量
		哪里定义哪里访问
	2 全局变量(环境变量)
		1 查看当前全局变量:
			env
		2 定义全局变量:
			1,先定义后转换
				变量名=值
				export 变量
			2 二合一
				export 变量名=值
				
		3 生效范围
			当前shell和子shell生效
		4 要想全部环境都生效:
			1 修改~/.bashrc (打开终端后,系统会先source执行该文件)
				source 执行~/.bashrc立即生效
				打开新shell也生效
			2 修改/etc/profile(所有用户生效,系统启动后,会source执行该文件,后续用户shell都继承自初始shell')
				source 执行/etc/profile 立即生效
				重启计算机也生效
				
	3 内置变量
		1 脚本相关内置变量
			$0 脚本名
			$$ 执行脚本的进程号
			$n 第n个命令行参数
			$# 参数个数
			$? 上一条指令的返回值(0成功,非0失败---》若上一条指令是执行脚本,则获取脚本最后一条命令的返回值)
		
		2 字符串截取
			${变量名:起始位置:截取长度}
			
			尾部截取:
				${abc:0-5:3}
				
		3 默认值
			${变量名:-默认值}
				若变量存在则输出变量值。否则输出默认值
			${变量名:+提示信息}
				若变量存在则输出提示信息,否则,啥都不输出
					
6 表达式
	将逻辑转化成控制
	1 测试语句
		test 条件
		[ 条件 ]  (方括号内左右各有一个空格)
		1 数值比较:
			n1 -eq n2 相等
			n1 -gt n2 大于
			n1 -ge n2 大于等于
			n1 -lt n2 小于
			n1 -le n2 小于等于
			n1 -ne n2 不等于
		2 字符串比较
			== !=
		
	比较操作符左右各有一个空格

2 逻辑表达式
	命令1 && 命令2 (1成功则执行2)
	命令1 || 命令2 (1失败则执行2)
	
3 文件表达式
	-f 判断是否是文件
	-d 判断是否是目录
	-x 判断是否可执行 (一般目录可执行)

4 计算表达式(支持整数运算)
	$((计算过程))
	let 等式
7 常见符号
	1 重定向
		命令的输出放到文件里
		应用程序的输出:
			1 标准输出(standard output)---》程序正确运行时的输出
			2 标准错误(standard err)------》程序异常时的输出
		
	1 分别重定向:
		bash 5-chongdingxiang.sh > res.log 2>err.log
	2 合并重定向
		bash 5-chongdingxiang.sh > res.log 2>&1
	3 丢弃:
		bash 5-chongdingxiang.sh > /dev/null 2>&1

2 管道符
	命令1 | 命令2 
	(1的标准输出作为2的输入---》命令2要有输入)
3 后台展示符
	命令 & (将命令放到后台运行,释放当前终端)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值