shell入门
Linux
shell
用途
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