shell 笔记1

来源:互联网 发布:k歌达人 网络异常 编辑:程序博客网 时间:2024/06/05 16:37

这个笔记转自我自己的有道云笔记,分为上下两篇,记录的是我这两天学习shell所记录下来的一些笔记。

1.shell
命令解释器
2.脚本执行方式
1)赋予执行权限
路径执行:绝对路径或者相对路径
2)bash 脚本名 ,脚本可以不用赋予权限
3.历史命令
history -w 把内存中命令写入历史,保存入文件
history -c 清空所有的历史命令
重复历史命令
!n 重复第n条命令
!str 重复最后一个以str开头的命令
4.别名
alias 查看系统中生效的别名
alias ls='ls --color=auto'
vim ~/.bashrc 写入永久生效的别名
5.输出重定向
追加和覆盖
ls > bb 覆盖写入文件bb中
ls >> bb 追加写入文件bb中
ls sjjd 2>>将错误信息追加写入文件,2代表错误信息
ls geyu >>aa 2>>bb 把正确信息放入aa当中,把错误信息放入bb当中
ls sjjcj >> aa 2>&1 ,把错误和正确结果都放到aa,可以追加
注意:错误信息2中间不能加空格
6.多命令顺序执行
1)命令1;命令2;命令3 三个命令依次顺序执行,之间没关系;
2)命令1 && 命令2 命令1正确执行之后命令2才会执行;
3)命令1 || 命令2 命令1不正确执行命令2才会执行;
管道符:
命令1 | 命令2 命令1的执行结果作为命令2的操作对象
netstat -tlun | grep 22 查看监听端口,提取其中22

7.变量
分类:本地变量;环境变量;位置参数变量;预定义变量
【本地变量】
1)声明: 变量名=变量值,=左右不能有空格
调用: echo $变量名
查看变量:set 查看所有变量,包括环境变量和本地变量
删除: unset 变量名

2)变量值可以直接调用系统命令。使用反引号或者$(命令)

【环境变量】
1)环境变量一般设为大写
声明:export 变量名=变量值;export 变量名
查看:env/export 查看环境变量
declare 声明变量类型,如果不做特别声明,所有变量为字符串类型
-i 声明为int
-x 声明为环境变量
PATH="$PATH":/路径 追加系统环境变量路径

2)环境变量配置文件:
对有所用户生效
/etc/profile
/etc/bashrc
对当前用户有效
~/.bashrc
~/.bash_profile



8.位置参数变量
$0 命令自己
$1 第一个参数
$2 第二个参数
$9 第九个参数
例:
输出位置参数变量
#!/bin/bash
echo "the command is $0"
echo "canshu1 shi $1"
echo "canshu2 shi $2"

9.预定义变量
$?:上一个命令的返回值;0表示上一个指令正确执行,非0表示上一个指令不正确;
$#:返回命令参数之后的参数个数
$*:返回所有参数
$n:位置参数变量

10.键盘读取命令
read -p “提示信息” -t “等待时间” 变量名
read -p “please input num1:” -t 30 num1 等待三十秒

11.数值运算
变量默认是字符串,想要进行数值运算,需要使用以下三种方法之一:
1)declare方法
num1=123
num2=456
declare -i sum=$sum1+$sum2
2) sum=$(($sum1 + $sum2))
3) sum=$(expr $sum1 + $sum2)
注意加号两边必须存在空格

12.行提取命令grep
选项 -v 反向选择
-n 提取时,显示行号

13.列提取命令
1)cut
cut -d "分隔符" -f 提取列 文件名
实例:
cut -d ":" -f 1,3 /etc/passwd
将/etc/passwd的第一列和第三列提取出来,并且用分隔符分开
2)awk
awk ‘条件 {动作}’
last | awk 'printf $1 "\t" $3 "\n"}'
提取last显示结果的第一列和第三列
\t tab键;\n 换行;\r 回车

14.echo命令
echo -e "输出内容" 识别格式化打印内容
例:echo -e ”1\t2\t3“ 会打印tab键

15.一个例子
数据备份:
#!/bin/bash
DAY=$(date +%F)
#定义日期变量
SIZE=du -sh /var/lib/mysql
#定义统计mysql目录大小的变量
echo "Date:$DAY">>/tmp/dbinfo.txt
#把日期输入信息文档
echo"Date Size:SIZE">>/tmp/dbinfo.txt
#把大小输入信息文档
cd /opt/dbbak
#切换目录
tar zcf mysqlbak-${DAY}.targz /var/lib/mysql /tmp/dbinfo.txt
#打包备份mysql目录,同时打包信息文档
rm -f /tmp/dbinfo.txt


0 0
原创粉丝点击