用途
shell是一个命令行解释器,用户传递命令并翻译为二进制到内核。
分类
shell有两种语法类型: bourne和c,彼此不兼容。
- Bourne包括sh,ksh,Bash,psh,zsh。默认为Bash
- c家族包括csh,tcsh
常用命令
- echo [选项] [输出内容] #输出命令
- -e 支持反斜杠控制的字符转换
- \b 退格键
- \t 制表符
- \x68 十六进制表示
- echo "\e[1;31m我是帅哥 \e[0m" #有颜色的输出
- \e[1;31m #开启颜色显示
- \e[0m #关闭颜色显示
开始写脚本
- 号后面的都表示注释
- 但是,第一行的#!/bin/bash不是注释,它表示下面写的是Linux的标准脚本。不能省略,如果省略了,一旦调用shell之外的语言就会报错。
- /hello.sh 这样调用需要脚本有执行权限
- bash /hello.sh 这样调用,没有执行权限也可以运行
bash基本用法
- 别名
- alias vi='vim' #设定别名,临时生效,重启失效
- unalias 别名 #删除别名
- vi ~/.bashrc #写入环境变量配置文件,对当前用户永久生效
- 但要重新登录后生效
- source ~/.bashrc #强制生效
- 命令生效顺序
- 用绝对路径或相对路径执行的命令
- 别名
- Bash内部命令
- $PATH环境变量定义的目录查找到的第一个命令
- 快捷键
- ctrl+c 强制终止
- ctrl+l 清屏 #clear
- ctrl+u 光标所在位置一直删到行首
- ctrl+a 光标移动到命令行首
- ctrl+e 光标移动到命令行尾
- ctrl+z 把命令放入后台
- ctrl+r 在历史命令中搜索
- 历史命令
- history [选项] [历史命令保存文件]
- -c 清空历史命令
- -w 把缓存中的历史命令写入历史命令保存文件~/.bash_history
- 默认保存1000条,可以在/etc/profile中修改
-
输出重定向
- 标准输入输出
设备 设备文件名 文件描述符 类型 键盘 /dev/stdin 0 标准输入 显示器 /dev/stdout 1 标准输出 显示器 /dev/stderr 2 标准错误输出 - 重定向
- 命令 > 文件 #覆盖式写入
- 命令 >> 文件 #追加式写入
- 命令 2>文件 #覆盖式写入报错信息
- 命令 2>>文件 #追加式写入报错信息,文件前面不能有空格
- 命令 > 文件 2>&1 #把正确和错误文件都保存到同一个文件中,覆盖式写入
- 命令 >> 文件 2>&1 #把正确和错误文件都保存到同一个文件中,追加式写入
- 命令 &> 文件 #把正确和错误文件都保存到同一个文件中
- 命令 &>> 文件 #把正确和错误文件都保存到同一个文件中
- 命令>>文件1 2>>文件2
- 命令 &>/dev/null #丢弃输出
-
输入重定向
- wc [选项] [文件名] #统计文件内容
- 命令 < 文件
- 命令 << 输入
-
多命令顺序执行,都是从左往右执行
多命令执行符 格式 作用 ; 命令1;命令2 多个命令顺序执行,命令之间没用任何联系;之前命令出错了也会继续执行 && 命令1&&命令2 逻辑与,当命令1正确执行,命令2才会执行 II 命令1II命令2 逻辑或,当命令1不正确执行,命令2才会执行;命令1正确执行则命令2不执行 - 管道符
- 命令1 | 命令2 #命令1的正确输出作为命令2的操作对象
-
通配符
通配符 作用 ? 匹配一个任意字符 * 匹配0个或任意多个字符 [] 匹配[]内的任意一个字符 - Bash 中其他特殊符号
- ''和""的用法和php里一样
- ``里的系统命令,在bash里会先执行它。aa=`ls`
- \$()的作用和``一样
- \$用于调用变量的值。$aa
- \转义符
- z