首页 > 技术文章 > shell 常用语法-mysql

zhongwang 2022-02-13 13:20 原文

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

 

字符串运算符 (返回truefalse

= 检测字符串是否相等  [  $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/SC指客户端,s指服务器   例如 QQ 微信 就属于CS架构

 

BSmsyql有个典型的管理工具 PMAphpMyAdmin

CS中 典型工具是navicat

LAMP 架构:
linux+Apach+mysql+php

LNMP架构:

Linux+Nginx+mysql+php-fpm

 

Apach 是世界排名第一的web服务器软件,可以运行在所有计算机平台上,跨平台较好

 

PHPApach的安装

Yum install php (安装好php同时会自动安装好apach)

启动apachservice 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 后跟数值n0-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 [选项参数] commandfilename

 -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

 

推荐阅读