bash快捷键
Ctrl+c |
强制终止当前命令 |
Ctrl+l |
清屏 |
Ctrl+a |
光标移动到当前命令行首 |
Ctrl+e |
光标移动到当前命令行尾 |
Ctrl+u |
删除一行光标之前的内容 |
Ctrl+z |
放入后台执行 |
Ctrl+r |
在历史命令中搜索 |
bash常用命令
history |
查看历史命令 | |
-c |
清除历史命令 | |
! |
+”字符串”,执行以字符串开头的历史命令 | |
>> |
命令 >> 文件,将命令结果输出重定向到文件(追加到文件) | |
> |
覆盖文件 | |
2>>文件,记录错误信息(文件名前无空格) | ||
命令 &>>文件,不论对错都追加到文件(文件名前无空格) | ||
命令 >> filea 2>>fileb,正确结果保存到文件a,错误到文件b(错误无空格) | ||
; |
命令1 ; 命令2,多个命令顺序执行 | |
&& |
命令1 && 命令2,命令1正确才会执行命令2 | |
|| |
命令1 || 命令2,命令1错误才会执行命令2 | |
| |
命令1 | 命令2,将命令1的结果当作命令2的操作对象 |
shell脚本
变量
# 定义变量
name="martin"
# 使用变量
echo "$name"
# 变量传递
now=`date +%Y%m%d%H%M%S`
# 判断上一条命令是否执行成功
echo "$?"
# $0代表脚本名,$1 代表脚本的第一个参数,$2 代表脚本的第二个参数
#!/bin/bash
echo "脚本名是$0"
echo "一共有$#个参数"
echo "第一个参数是$1"
echo "第二个参数是$2"
# 读取从键盘输入的变量
read -p "请输入名字:" name
echo "你好,$name"
运算符
shell的运算符有+、-、*、/、%
# 取余
echo $(( $b % $a ))
# 比较两个数字,相等返回true
if [ $a == $b ];then
echo "a 等于 b"
else
echo "a 不等于 b"
fi
还可以用-eq作为等于关系运算符,不等于-ne、大于-gt、小于-lt、大于等于-ge、小于等于-le,
if [ $a -ge $b ];then
echo "ge判断结果:a 大于或等于 b"
else
echo "ge判断结果:a 小于 b"
fi
# 与运算-a、或-o、非!
if [ $a -eq 2 -o $b -eq 2 ];then
echo "a 和 b 至少有一个等于 2"
else
echo "a 和 b 都不等于 2"
fi
其他比较运算
# 判断字符串a长度是否等于0
if [ -z $a ]
# 判断文件夹是否存在
if [ -d "$dir" ]
# 判断文件是否存在
if [ -f "$file" ]
# 判断文件或者文件夹是否存在
if [ -e "$file" ]
流程控制
# 分支判断
read -p "请输入分数:" score
if [ $score -ge 0 -a $score -lt 60 ];then
echo "不及格"
elif [ $score -ge 60 -a $score -le 100 ];then
echo "及格"
else
echo "输入的分数不正确"
fi
# case
case "$1" in
"start")
echo "Begin start mysql"
;;
"stop")
echo "Begin stop mysql"
;;
*)
echo "Please enter the correct command"
;;
esac
# 循环
for i in `seq 100`
do
echo $i
done
函数
#定义函数
function sum() {
numsum=$(( $1 + $2 ))
return $numsum
}
#使用函数
sum 1 2
echo "$?"
重定向
# 把bbb写入到1.txt,并且覆盖之前的内容
echo "bbb" > 1.txt
# 把ccc追加到1.txt,之前的内容会保留
echo "ccc" >> 1.txt
# 把aaa执行错误的信息写入到err.log,2代表错误信息
aaa 2> err.log
# 把aaa执行的所有结果重定向到2.txt,不论aaa执行成功还是执行报错
aaa &> 2.txt