Shell
好久没写过shell了,复习一下
Shell 简介
Shell是一个程序,由C语言编写,是用户和Linux内核沟通的桥梁。它既是一种命令语言,又是一种解释性的编程语言。
shell命令解析器->kernel。 shell对接用户。
作用:
1.命令行解释器。
2.启动程序
3.输入输出重定向
4.管道连接
5.文件名置换(echo /*)
6.变量维护
7.环境控制
8.shell编程
Shell 语法
shell脚本就是将完成一个任务的所有的命令按照执行先后顺序,自上而下写入一个文本文件中,然后给予执行权限。
脚本命名规范
脚本命名名字要有意义,30个字节以内,以.sh结尾。
开头必须解释环境
#!/bin/bash --意思是要在/bin/bash下运行。#!是一个组合,特殊标记。
#!/bin/bash/env env 表示: python|bash 等,什么语言就用什么解释器。# 作为注释。
格式:
脚本名字:
解释器环境:
脚本信息:
脚本代码:
#!/bin/bash
#Author: Ye --作者
#Create Time: 2021-02-26
#Release :1.0
#Script Description: 这个脚本的作用。
脚本运行方法
给执行权限
chmod 700 first.sh
./first.sh
解释器直接运行
sh first.sh
shell 特殊符号
~ home目录
- 回到上一个目录
! 执行历史命令,如!! 执行上一个 命令,!p 上一个带p的
$ 变量
& 后台执行
* 通配符
? 匹配一个字符
; 执行一条命令中有多个命令,用;号分开
| 管道
转义字符
`` 能解释变量
"" 字符串
$? 判断上一条命令是否成功
管道
上一个命令的输出作为下一个命令的输入
重定向
> 重定向输入 覆盖数据
$>/dev/null;$? 把命令执行结果扔到null里面去,等于黑洞
>> 重定向追加输入,在原数据的末尾添加
< 重定向输出 wc -l < /etc/passwd
<< 重定向追加输出 fdisk /dev/sdb<<EOF
wc <<EOF
Hello World!
EOF
开头输出和结束都用EOF作为标记
数学运算 expr
expr 1 + 2
expr 1 * 2
expr 1 / 2
let sum=1-1
let 赋值到sum,然后 $sum 中运行
# 小数运算
可以安装,然后使用
scale=2 表示保留两位小数点
echo "`echo "scale=3;1/3"|bc`%"
双括号数学运算
echo $(((1+1)*10))
执行脚本后返回值
#!/bin/bash
echo ee
exit 0 # 退出后返回此值,返回值1-255
$? #获得上面的返回值
shell 格式化输出
-- 一个程序有0个或以上输入,一个或更多输出
echo 命令介绍
功能:将内容输出到默认显示设备
echo命令的功能是在显示器上显示一段文字。
命令格式
-n 不要再最后自动换行
-e 若字符串中出现一下字符,则特别加以处理,而不是将它当作字符串输出
-e后,将会使用下列转义
a 发出警告声
删除前一个字符
制表符
v与f相同
代码示例
#!/bin/bash
for time in `seq 9 -1 0`;
do
echo -n -e "$time"
sleep 1
done
字体颜色
echo -e " 33[40;2m 字符 33[4m dddd 字符串"
shell输入
read
执行到这里之后,等待用户输入
#!/bin/bash
clear
echo -n -e "Login:"
read loginUser
echo -n -e "Password:"
read -s -t5 -n6 loginPasswd
echo "$loginUser $loginPasswd"
read -p "请输入密码" $loginPasswd
echo $LoginPasswd
-s 超时
-t5 表示5秒超时
-n 表示读取6个字符