目录
一、Shell
1、shell的介绍
Shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。
Bash(/bin/bash)是目前大多数 Linux 版本采用的默认 Shell。
2.shell种类
常见的shell解释器有很多中,使用不同的shell,其内部指令、命令性提示符等方面会存在一些区别,通过/etc/shells 文件可以了解当前系统所支持的shell脚本种类。
shell的种类 shell的功能
/bin/sh 是shell命令的软链接(已被/bin/bash所替换)
/bin/bash 基准于FNU的框架下发展出的shell
/usr/bin/sh 已被/bin/bash替换
/usr/bin/bash centos 和redhat 系统默认使用的bash
/bin/tcsh csh的增强版,与csh完全兼容,整合了csh,提供更多的功能
/usr/sbin/nologin 让用户无法登陆主机
/sbin/nologin 软连接
3、shell脚本是什么?
shell脚本就是把原来的linux命令或语句放在一个文件中,然后通过这个程序文件去执行,我们就说这个程序为shell 或者脚本。
将需要执行的命令保存到一个文件中,按照顺序执行,它不需要编译,它是解释型的。
4、shell 的能做什么(初步理解)
自动化完成软件的安装部署
自动化完成系统的管理,如批量添加用户
自动化完成备份,如数据库定时备份
自动化的分析处理,如网站访问量
应用场景 ☆
重复性操作、交互性任务、批量事务处理、服务运行状态监控、定时任务执行、......
二、shell脚本
1、Shell脚本的构成
1.脚本申明(解释器):若第一行为“#!/bin/bash”,表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器。还有其它类型的解释器,比如#!/usr/bin/python、#!/usr/bin/expect。
2.注释信息:以“#”开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。
3.可执行语句:比如echo命令,用于输出" "之间的字符串
2、Shell脚本的执行
1、路径执行
指定路径的命令,要求文件必须有 x 权限。
chmod +x /opt/xg.sh
指定绝对路径:/opt/xg.sh
指定相对路径:./xg.sh(脚本环境)
退出脚本环境
2、sh或bash执行
指定Shell来解释脚本,不要求文件必须有 x 权限。
sh 脚本路径:sh -x xg.sh 或者 bash -x xg.sh
sh xg.sh bash xg.sh
3、source执行(不常用)
source 脚本路径(系统环境) 不要求文件有执行权限:. xg.sh 或者 source xg.sh
3、管道操作 |
将管道符号“|”左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。
ps aux | wc -l
echo "abc123" | passwd --stdin zhangsan
三、重定向与管道操作
交互式硬件设备
类型 | 设备文件 | 文件描述编号 | 默认设备 |
标准输入 | /dev/stdin | 0 | 键盘 |
标准输出 | /dev/stdout | 1 | 显示器 |
标准错误输出 | /dev/stderr | 2 | 显示器 |
重定向操作
类型 | 操作符 | 用途 |
重定向输入 | < | 从指定的文件读取数据 |
重定向输出 | > | 将标准输出结果 保存 到指定的文件,并且覆盖原有内容 |
>> | 将标准输出结果 追加 到指定的文件的尾部,不覆盖原有内容 | |
标准错误输出 | 2> | 将错误信息 保存 到指定的文件,并且覆盖原有内容 |
2>> | 将错误信息 追加 到指定的文件的尾部,不覆盖原有内容 | |