Linux 提供的 cat /etc/shells
Sh 是bash的快捷方式
Centos 默认解析器是bash
常用的系统变量:
HOME PWD SHELL USER
局部变量 和全局变量
#Export 变量名 //可以把变量转为全局变量
$n 特殊变量
$0 代表脚本名称 $1-9 代表第一到第九个参数,十以上的参数要用${}
$# 返回参数个数
$* 所有参数,把所有参数看成一个整体,$@也是代表所有参数但是把每个参数区分对待
运算符:
$((运算式)) 或 $[运算式]
Expr + - \* / % (expr 运算符间要有空格)
例如: expr `expr 2 + 3 ` \* 4 =20
字符串运算符 (返回true或false)
= 检测字符串是否相等 [ $a = $b ]
!=
-z 字符串长度是否为0 ,为0 返回true [ -z $a ]
-n 字符串长度是否不为0,不为0返回true
Str 检测字符串是否为空,不为空返回true [ $a ]
文件测试运算符
-d file 检测文件是否是目录 如果是返回true
-f file 检测文件是否是普通文件 如果是返回true
-r file -w file 检测文件是否可读、可写
-s file 检测文件是否为空,不为空返回true
-e file 检测文件是否存在,如果是返回true
条件判断: 前后要有空格
两个整数间比较:[ ]
-lt 小于 -eq 等于 -ge 大于等于 -le 小于等于 -gt 大于 -ne 不等于
按照文件权限判断:
-r 有读权限 -w 有写权限 -x 有执行权限
按照文件类型判断:
-f 文件存在并且是一个常规的文件 -e 文件存在 -d 文件存在并且是一个目录
多条件判断:
&& 表示当一条命令执行成功后才执行后一条命令,|| 表示上一条执行失败后才执行下条命令
包解压详解
Tar -zxvf *.tar.gz
Tar -jxvf *.tar.bz2
-z 通过gzip指令处理文件
-x 从文件中还原文件
-v 显示操作过程
-f 指定一个文件
-j 支持bzip2 解压文件
1 源码安装
配置(config/configure/bootstrap)->编译(make/bootstrap)->安装(make install /bootstrap install)
2 二进制包(rpm)
优点:管理系统简单、只需要几个命令就可以实现包的安装升级、卸载
缺点:经过编译不能再看到源代码
Rpm -qa |grep 关键词
Rpm -e 关键词
Rpm -ivh 完整名称
3 yum 傻瓜式安装
优点:简单快捷
yum list 列出当前已经装的和可以装的软件
Yum search 名 搜索关键词的包
Yum -y install 包名 | update 包名 |remove 包名
Mysql 部署默认目录/文件位置
数据库存储目录 /var/lib/mysql
配置文件 /etc/my.cnf
Mysql安装和初始化:
Yum install mysql-server
Service mysqld start //启动mysqld
Mysql_secure_installation
Mysql> flush privileges;
最后记得阿里云的安全端口放行才可以远程连接服务器
Mysql基本操作:
常见字段数据类型 int char(定长字符) varchar(不定长)
备份和还原:
全量备份
Mysqldump -uroot -p123456 -A > 备份文件路径
指定库备份(数据+结构)mysqldump -uroot -p123456 库名 > 备份文件路径
多个库备份 mysqldump -uroot -p 123456 --databases db1 db2 > 备份文件路径
还原:
通过mysql命令行source方法 或者系统命令行方法
(1)Mysql> Source 备份文件路径
(2)Mysql -uroot -p123456 < 备份文件路径
设置mysql连接字符集: set names utf8;
两大架构:
B/S: B指浏览器,s指服务器 例如百度搜索应用就属于BS架构
C/S:C指客户端,s指服务器 例如 QQ 微信 就属于CS架构
BS中 msyql有个典型的管理工具 PMA(phpMyAdmin)
CS中 典型工具是navicat
LAMP 架构:
linux+Apach+mysql+php
LNMP架构:
Linux+Nginx+mysql+php-fpm
Apach 是世界排名第一的web服务器软件,可以运行在所有计算机平台上,跨平台较好
PHP和Apach的安装
Yum install php (安装好php同时会自动安装好apach)
启动apach: service httpd start
启动成功后可以直接浏览器输入ip 访问返回apach界面
流程控制
If判断语句
If [条件判断式];then
Xxxx
Elif [条件判断式];then
xxxxxx
Fi
case语句
Case $变量名 in
“值1”)
Xxxxxx
;;
“值2”)
Xxxxxx
;;
*)
Xxxxxx
;;
Esac
For 循环语法1
For (( 初始值;循环控制条件;变量变化))
Do
Xxxxxx
Done
语法2:
For 变量 in 值1 值2 值3 。。。。。
Do
Xxxxxx
Done
例如:
For i in “$*”
Do
Echo 结果为 $i
Done
当 for j in “$@”
Do
Echo $I
Done
注意:当xxx.sh 1 2 3 4 第一个输出 结果为 1 2 3 4
第二个输出:
结果为1
结果为2
结果为3
结果为4
While 循环:
While [条件判断式]
Do
Xxxxx
Done
Read 读取控制台输入
#read
-p 指定读取值时的提示符
-t 指定读取值时等待的时间
函数:
系统函数:
Basename [string/pathname] ][suffix]
Basename 命令会删掉所有的前缀包括最后一个/字符,然后字符串显示出来
选项:suffix为后缀,如果suffix被指定了basename会将pathname中的suffix去掉
basename /root/ceshi/ceshi1/test.txt 得到 test.txt
Basename /root/ceshi/ceshi1/test.txt .txt 得到 test
Direname 文件绝对路径(从给定的绝对路径的文件名去除文件名,然后返回剩下的路径)
dirname /root/ceshi/ceshi1/test.txt 得到 /root/ceshi/ceshi1
自定义函数
[function] funname()
{}
Funname
函数返回值,只能通过$? 系统变量获得,可以显示增加,return返回,如果不加将以最后一条命令运行结果作为返回值 return 后跟数值n(0-255)
例如:
Function sum(){
S=0
S=$[$1+$2]
Echo $s
}
Reap -p “para1:” p1
Reap -p “para2:” p2
Sum $p1 $p2
shell工具:
Cut
文件中负责剪切数据的,从每一行截切字节、字符和字段并将结果输出
#cut [选项] filename
-f 列号 提取第几列
-d 分隔符 按照分隔符分割列
获取ip值:
Ifconfig eth0 |grep “inet addr”|cut -d : -f 2|cut -d “ ” -f 1
Sed
是一种流编辑器,一次处理一行内容,处理时把当前处理行存储在临时空间中,接着用sed命令处理缓冲区中的内容,处理完后把内容发送屏幕,接着处理下一行,这样不断重复直到文件末尾。文件内容没有改变
Sed [选项参数] ‘command’ filename
-e 直接进行编辑
-a 新增 下一行出现 -d 删除 s 查找并替换
Awk
一个强大的文本分析工具把文件逐行读入,以空格为默认分隔符将每行切片,切开部分在进行分析处理
Awk [选项参数] ‘pattern{action1} pattern{action2}’ filename
Pattern 表示awk在数据中查找内容就是匹配模式 action 就是找到匹配内容后执行的命令
-F 指定输入文件分隔符
-v 赋值一个用户定义变量
Awk 内置变量
FILENAME 文件名
NR 已读的记录数
NF 浏览后 切割的列的个数
例如:将passwd中第三列的值都加1
Awk -F : -v i=1 ‘{print $3+i}’ passwd
Awk -F : ‘{print FILENAME ,NR,NF}’ passwd
切割ip值
Ifconfig eth0|grep “inet addr” |awk -F : ‘{print $2}’ |awk -F “ ” ‘{print $1}’
查询空行所在的行号
Awk ‘/^$/{print NR}’ sed.txt
Sort
将文件进行排序并将结果标准输出
-n 按照数值大小排序
-r 以相反的顺序来排序
-t 设置排序时所用的分割字符
-k 指定需要排序的列
例如:sort -t : -nrk 2 passwd