shell是系统跟计算机硬件交互时使用的中间介质
shell的两种主要语法类型是Bourne和C,这两种语言彼此不兼容。
Bourne家族主要有sh、ksh、Bash、psh、zsh;C家族主要包括csh、tcsh
echo $SHELL : 查看当前系统默认shell的种类
echo [选项] [输出内容]
选项:-e : 支持反斜线控制的字符转换
\a 输出警告
\b 退格键,也就是向左删除键
\n 换行符
\r 回车键
\t 制表符,也就是Tab键
\v 垂直制表符
\0nnn 按照八进制ASCII码表输出字符。其中0为数字零,nnn是三位八进制数
\xhh 按照十六进制ASCII码表输出字符。其中hh是两位十六进制数
echo -e "\e[1;34m 测试数据!\e[0m"
#输出颜色
#30m=黑色,31m=红色,32m=绿色,33m=黄色
#34m=蓝牙,35m=洋红,36m=青色,37=白色
第一个脚本
#!/bin/bash 表示 linux下标准脚本
alias : 别名
alias ls='ls --color=auto ' : 开启常亮
alias ls='ls --color=never' : 开启常暗
非永久启动别名: 比如: alias vi='vim'
永久启动别名(写入环境变量配置文件):vim ~/.bashrc
接着运行:source .bashrc
(注意 vim /root/.bashrc 配置root用和的环境变量)
unalias 别名#删除别名(临时)
命令生效顺序
第一顺位执行用绝对路径或者相对路径执行命令
第二顺位执行别名
第三顺位执行Bash的内部命令。
第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
常用快捷键
ctrl+c 强制终止当前命令
ctrl+l 清屏
ctrl+a 光标移动到命令行首
ctrl+e 光标移动到命令的行尾
ctrl+u 从光标所在的位置删除到行首
ctrl+z 把命令放入后台
ctrl+r 在历史命令中搜索
历史命令
history [选项] [历史命令保存文件]
选项:
-c:清空历史命令
-w:把缓存中的历史命令写入历史命令保存文件 ~/.bash_history (root 用户下操作)
vi /etc/profile 可在里面修改默认保存的历史命令行数 (HISTSIZE=1000)
历史命令使用:
1、使用上下箭头调用历史命令
2、使用“!n”重复执行第n条历史命令
3、使用"!!" 重复执行上一条命令
4、使用“!字符串” 重复执行最后一条以该字符串开头的命令
输出重定向
键盘 /dev/stdin 0 标志输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/stderr 2 标准错误输出
标准输出重定向 命令 > 文件 覆盖模式
命令 >> 文件 追加模式
标准错误输出重定向 错误命令 2>文件 覆盖模式
错误命令 2>>文件 追加模式
正确输出和错误输出同时保存
1、 命令 > 文件 2>&1 覆盖模式,保存同一个文件里
2、 命令 >> 文件 2>&1 追加模式,保存同一个文件里
3、 命令 &>文件 覆盖模式,保存同一个文件里
4、 命令 &>>文件 追加模式,保存同一个文件里
5、 命令>>文件1 2>>文件2 追加模式,分别保存到一个文件里
ls &>/dev/null 空洞
输入重定向
wc [选项] [文件名]
选项名:-c 统计字符数
-w 统计单词数
-l 统计行数
wc < hello.sh 输出 行数、单词书(空格、回车隔开就算)、字节数
wc << 字符串 当遇到该字串时就开始统计
多命令顺序执行
; 命令1 ; 命令2 多个命令顺序执行,之间没有逻辑关系,就算一个报错其他的还会继续
%% 命令1&&命令2 逻辑与
|| 命令1||命令2 逻辑或
netstat -tlun 查看linux中的路由表、实际的网络连接以及每一个网络接口设备的状态信息
管道符 | 第一条命令执行,第二条命令才会执行
通配符
? 匹配一个任意字符
* 匹配0个或者多个任意字符,也就是可以匹配任何内容
[] 匹配中括号任意一个字符
[-] 匹配中括号任意一个字符,-代表一个范围。比如 [a-z]
[^] 逻辑非,表示匹配不是中括号内的一个字符。比如[^0-9]代表匹配一个不是数字的字符
第一个脚本
#!/bin/bash 表示 linux下标准脚本