一、shell
1.1shell程序的特点:
1.简单易学
2.解释性语言,不需要编译即可执行
1.2查看shell类型
echo $SHELL
[root@localhost ~]# cat/etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
shell特性
1.顺序执行:逐条执行(自上而下循环执行)
2.选择执行:代码有一个分支:条件满足时才会执行
两个以上分支:只执行其中一个,马满足条件的分支
3.循环执行:代码片断(循环体)要执行0,1或多个来回
脚本语言含义:
shell PHP Python JavaScript Perl Ruby
编程(译)语言含义:Java c c++
解释器和编译器最大的不同:一个面向的是计算机,一个面向的是某个特定的软件或者计算机某一个部分。(编译器:移植性较差,但运行效率高)
比较
1.脚本语言不需要编译器,减少开发时间
2.可以实时更改代码
3.容易学习,但不够全面
4.通用性较差,但可以通过专门的应用来调整
shell优势
处理操作系统底层的业务(linux系统内部应用的都是shell脚本来完成)。如:grep,awk,sed,shell开发更简单快捷,易用高效。
学好shell编程基础知识
1.熟练使用vim编辑器 注释:
2.熟练掌握Linux基本命令
3,熟练掌握文本三剑客工具(grep、sed、awk)
4.熟悉常用服务器部署、优化、日志及排错
notepadd++
linux date 月 日 时 分 年 点 秒
shell脚本基本元素
文件名以.sh. 结尾的 /script/
第一行的“#!/bin/bash”。(注:脚本用什么来解释she-Bang魔数)
注释:说明耨写代码的功能 # :<<BLOCK
…注释内容
BLOCK
可执行语句:实现程序的功能
man cd 显示内置命令 NAME后面的为内置命令
内置命令比外置命令快
代码缩进 方便识别代码块信息
脚本以.sh为扩展名
例如:script-name.sh
从开头所有的空白信息删除
默认Tab4个字符
shell脚本编写规范
开头指定脚本解释器
\#!/bin/sh或#!/bin/bash
脚本运行
给权限
shell脚本执行
1.当前目录下./a.sh 文件需要执行权限
2.绝对路径 /test/a.sh 文件需要执行权限
3.用sh或bash来执行 bash a.sh 文件不需要执行权限–建议使用方法
4.用source a.sh 或.a.sh执行会开启子shell 文件不需要执行权限(一般不用vim /etc/init.d/network)
脚本检测
1.bash -n 脚本语法检测,不执行脚本文件
2.bash -x 跟踪脚本执行
3.shellcheck 脚本文件 检测脚本 8不能安装
echo Linux打印命令
选项:
-n 取消输出后行末的换行字符
-e 支持反斜杠控制字符转换
\r 字符替换 后面的替换前面的
\0 十进制 \x 十六进制
printf
history
1.让history命令显示出执行用户,执行时间,执行用户ip
截取后面的ip
bash
-c 清空历史命令
-w 把缓存中的历史命令写入历史命令保存文件
命令与文件的补全
tab
bash命令补全增强器软件包 bash-completion,这个包支持对systemctl命令服务名称的补全
命令别名
格式:alias别名=命令本身
\强制覆盖
bash常用快捷键
输入输出重定向 > 追加 >> < <<
命令执行顺序
;–对命令的进行顺序执行 date;ls -l /etc/passwd
&&与 两个条件都成功才执行
||或 如果前面命令成功,后面就不执行,如果前面不成功,那后面执行
!非
管道 >
通配符
cut |管道符 > 重定向 >>追加重定向
< << " " ’ ’ $ ()
sort 排序
-n 依照数值的大小排序。
-k 定义排序键值字段
-t <分隔字符> 指定排序时所用的栏位分隔字符。
-f 排序时忽略字符大小
uniq 文件名去掉重复的行,重复的行必须相邻
-d 只显示重复的行
-D 显示所有重复的行
-c 显示重复行重复的次数
tr命令
-s 缩减连续重复的字符成指定的单个字符
-t 字符集1替换为字符集2
-d 删除指令字符
-c 反选设定字符
grep
-e 文本过滤: