shell
概述
shell是命令解析器,与内核交互的界面。还是一个编程语言,在shell中可以直接调用linux系统命令。
分类
linux支持的shell
/etc/sh
切换
输入shell名称
exit退出
shell脚本的执行方式
1.绝对路径执行
2.相对路径执行
3.通过bash执行
bash 脚本名称
转换windows编辑的格式
dos2unix 文件名
Bash基本功能
history查看历史命令
-w : 历史命令写入~/.bash_history
默认保存1000条,可以在/etc/profile文件中更改
!! 重复执行上一条命令
!字符串 重复执行以字符串开头的命令
基础命令
echo 输出命令
echo [选项] [输入内容]
-e :支持转移字符\
alias别名
alias 别名=‘命令名’
例如 alias vi=‘vim’
查看所有别名 alias
命令执行顺序
1.第一顺序执行用绝对路径或相对路径执行的命令
2.第二顺位执行别名
3.第三顺序执行bash的内部命令
4.第四顺位PATH环境变量定义的目录找到顺序找到的第一个命令
让别名永久生效
vi ~/.bashrc
删除别名
unalias 别名
快捷键
ctrl + L 清屏
ctrl + u 删除命令
ctrl + D 退出当前终端
重定向
标准输入输出
键盘 /dev/stdin 0 标准输入
显示器 /dev/sdtout 1 标准输出
显示器 /dev/stderr 2 标准错误输出
输出重定向(标准输出到文件)
命令 > 文件 以覆盖的方式
命令 >>文件 以追加的方式
命令 2> 文件
命令 2>> 文件
命令 &> 文件
命令 &>> 文件
垃圾箱 /dev/null
例如:
命令 >> /dev/null 2>>文件
输入重定向
命令<文件
例如:统计
wc [选项] [文件名]
选项:
-c 统计字节数
多命令执行
多命令执行符 格式 作用
; 命令1;命令2 命令1和命令2都会执行
&& 命令1&&命令2 命令1正确执行,命令2才会执行
|| 命令1||命令2 命令1不正确执行,命令2才执行
管道符
命令格式:
命令1 | 命令2
命令1的正确输出作为命令2的操作对象
例如:
ll -a /etc | more
netstat -an|grep ‘’
通配符
通配符
? 匹配一个
- 任意多个字符
[] 任意括号内的一个字符
[-] 范围
[^] 逻辑非
应用场景:
批量操作
例如:
rm -rf * 删除所有文件
特殊符号
‘’ 单引号中所有的特殊符号,都没特殊含义
“” 双引号中特殊符号有特殊含义
‘’ 反引号里的内容是系统命令,会先执行。
$() 与反引号一样
Bash变量
用户自定义变量
规则:
1.默认是字符串型,如果要进行数值运算,则必须指定变量类型为数值型。
2.环境变量建议大写
变量的分类:
1.用户自定义变量
2.环境变量
3.位置参数变量:主要向脚本当中传递参数或数据,变量名不能自定义,变量的作用是固定的
4.预定义变量:是Bash已定好的变量,变量名不能自定义,变量作用也是固定的
变量定义
变量名=变量值
变量叠加
aa=123
bb=${aa}456
变量调用
$变量名
所有变量查看
set
变量删除
unset 变量名
环境变量
用户自定义变量只在当前shell中生效,而环境变量会在当前shell和这个shell的所有子shell
当中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的shell
中生效。
注意:父子shell
环境设置
export 变量名=变量值
查询变量
env
删除环境变量
unset 环境变量名
PAH变量
系统查找命令的路径
PS1变量
定义系统提示符的变量
位置参数变量
$n n为数字,$0代表命令本身,$1~
9
,
表
示
第
一
到
第
9
个
参
数
,
十
以
上
使
用
9,表示第一到第9个参数,十以上使用
9,表示第一到第9个参数,十以上使用{}
$* 代表所有参数,是一个整体
$# 表示参数的个数
$@ 表示命令行中所有参数,不过把每个参数区分
运算符
数值运算
declare 声明变量类型
declare [+/-] [选项] 变量名
- :设置
-x: 声明环境变量
数值运算-方法1
declare -i cc=
a
a
+
aa+
aa+bb
方法2
dd=$(expr $aa + $bb)
方法3
(
(
运
算
式
)
)
或
((运算式))或
((运算式))或[运算式]
gg=
(
(
((
((aa + $bb))
变量测试与内容替换
看表格
环境变量配置文件
source 配置文件
重新加载配置文件
环境变量文件
/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.bashrc
/etc/bashrc
有登陆的先/etc/profile-> etc/profile.d/*.sh /bahs_profile-> ~/bashrc -> /etc/bashrc
其他配置文件
.bash_history 历史命令
/etc/issue 欢迎信息
/etc/issue.net 远程登陆欢迎信息
/etc/mod 登陆后欢迎信息