Commit 94cf9f9a authored by luxin433's avatar luxin433
Browse files

init repo.

parents
###### Shell编程:
1.配置文件:
​ shell中的配置文件有 /etc/profile、~/.bash_profile、~/.bash_login、~/.profile、~/.bashrc、/etc/bashrc、/etc/profile.d/*.sh
​ 启动shell的方式有登录式的shell与非登录状态的shell,登录状态不同,读取配置文件的方式也不同
​ 登录式的shell,首先会去读取/etc/profiles用户的全局配置文件,接着会去用户的主目录中寻找.bash_profile .bash_login .profile.如果说三个文件都存在的话,优先级顺序为: .bash_profile >.bash_login>.profile
​ 非登录式的shell会直接读取用户主目录下的.bashrc
2. export
用户在登录linux系统后,系统会启动一个用户shell,在创建运行shell脚本时,系统将会产生一个子shell,那么在shell脚本程序中定义的变量只能在本程序中使用,其他的shell不能引用它,为了能让其他的shell使用变量,可以使用export命令对这个变量进行输出.
3.变量的使用
​ 声明变量 name=zhangsan =号前后不能有空格
​ 使用变量 变量名称前加$符号
​ echo{$name}
4.常用的基本命令
​ cat file 查看文件的内容
​ chomd 修改文件的读,写,执行的权限
​ file file 查看文件的类型
​ find 在一个目录中寻找一个文件
​ head 输出文件的前10行
​ tail 输出文件的后10行
​ diff 比较两个文件的不同,并且展现出来
​ cp 复制文件
​ mv 移动文件到另一个地方
​ awk 常用的文本处理工具,逐行处理文本.常用的语法结构:
​ awk -F":" "{print $1 }" filename
​ -F ":" 表示指定分隔符为 :
​ "print $1" 表示输出该文件第一列
```shell
Example:
现在有一个文件"/etc/passwd"中的内容如下:
root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
# 输出这个文档中的第二列:
awk -F':' '{print $2}' /etc/passwd
```
​ sed 用于过滤和转换文本的流过滤器,一般用于对文本中的行进行增删改查
```shell
常用的一些命令:
# 查 - p
sed -n 'p' file.txt # 打印所有内容
# 删 - d
sed -i '1d' file.txt # 删除第1行内容
sed -i '$d' file.txt # 删除最后1行内容
# 改 - c
sed -i 'c内容' file.txt # 修改所有行内容
sed -i '1c内容' file.txt # 修改第1行内容
# 增加 - a i
a: 在当前处理行的下一行插入
i: 在当前处理行的上一行插入
sed -i 'a内容' file.txt # 每一行的下一行都李白
sed -i 'i内容' file.txt
# 替换 - s
sed -i 's/内容1/内容2/' file.txt
# 全部替换文件的内容1 在后面加g
sed -i 's/内容1/内容2/g' file.txt
```
​ grep 用于寻找一个或多个与正则表达式相匹配的内容,可以使用-i选项忽略单词大小写,-r选项指定目录下的文件
​ sort 对文本文件进行排序,可以利用-R选项来对文本文件的实现随机排序.
5.逻辑结构
```shell
if条件结构:
if [判断语句] ; then
执行语句
elif [判断语句]
执行语句
else
执行语句
fi
for循环结构:
for 变量 in 值序列
do
执行语句
done
while循环结构:
while 条件判断
do
执行语句
done s
```
6.shell中的函数
```shell
函数名(){
代码块
}
# 调用函数 直接写函数名
函数名
```
脚本小实践
```shell
#!/bin/bash
#每2秒检测一次MySQL并发连接数
user="root"
passwd="123456"
while :
do
sleep 2
count=`mysqladmin -u"${user}" -p"${passwd}" status | awk '{print $4}'`
echo "`date %F` 并发连接数为:$count"
done
```
```shell
# 备份MySQL数据库中的mysql库
#!/bin/bash
user="root"
passwd="123456"
dbname="mysql"
date=$(date +%Y%m%d)
#测试备份目录是否存在,不存在则自动创建该目录
if [ ! -d /home/tarena/mysqlbackup ];then
mkdir /home/tarena/mysqlbackup
fi
#使用mysqldump命令备份数据库
mysqldump -u"$user" -p"$passwd" "$dbname" > /home/tarena/mysqlbackup/"$dbname"-${date}.sql
```
\ No newline at end of file
# Shell
## Shell的重要意义
* 自我效率提升的工具
* 最强的胶水语言
* 极致的易用性
* 最轻量的数据处理
* 最简的语法
* 最接近bnf表达式的语法
## Shell编程语言
* 字符串类型
* 全局变量(export $var)
* 函数抽象
* 函数解析
## 工具命令
####文件管理
当前目录 cd pwd
文件 touch cp rm mv
文件夹
mv cp ln ls mkdir touch rm
## 正则表达式
awk, sed, grep, vim
cat | egrep 'pattern'
cat | awk '/pattern/ { print }'
cat | sed -n '/pattern/ p'
cat | perl -ne 'print if /pattern/'
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment