Bash基础

一. Bash基础

# history

1. 查看缓冲区历史命令
history

2. 清空缓冲区历史命令
history -c

3. 将缓冲区历史命令写入历史命令记录文件
history -w # 默认历史命令记录文件为.bash_history
history -w history.log

4. 配置历史命令记录文件条数
vim /etc/profile
HISTSIZE=1000 # 默认1000条

5. 重复上条命令
!!

6. 执行缓冲区第n条历史命令
!n

7. 执行缓冲区最后一条以字符串开头的历史命令
!字符串

# alias

1. 查询所有命令的别名
alias

2. 临时将vim的别名设置为vi
alias vi='vim' # alias 别名='命令'

3. 删除vim的别名vi
unalias vi

4. 永久将vim的别名设置为vi
vi /root/.bashrc
alias vi='vim'
source /root/.bashrc # 重新加载配置

5. 命令执行优先级
绝对路径 > 别名 > Bash内部命令(举例: cd) > $PATH环境变量

# 快捷键

ctrl + s 屏幕暂停
ctrl + q 屏幕恢复
ctrl + c 终止当前命令
ctrl + z 暂停, 放入后台
ctrl + u 剪辑
ctrl + y 黏贴
ctrl + l 清屏

# 输入输出重定向

1. > 表示覆盖, >> 表示追加, 2 表示错误, & 表示无论对错
命令 > 文件
命令 >> 文件
命令 2> 文件
命令 2>> 文件
命令 &> 文件
命令 &>> 文件

2. 将ls命令输出的结果丢入回收站
ls &> /dev/null

3. ls命令执行成功, 输出结果追加到success.log, 否则追加到fail.log
ls >> success.log 2>> fail.log

4. 无论ls命令成功或失败, 将结果追加到cmd.log
ls &>> cmd.log

# 多命令执行

1. 命令1和命令2之间无关系
命令1 ; 命令2

2. 命令1执行成功时, 命令2执行
命令1 && 命令2

3. 命令1无论执行成功或失败, 命令2都会执行
命令1 || 命令2

4. 模拟三目运算符
命令 && echo yes || echo no

# dd 磁盘拷贝

TODO

# grep

1. grep用于截取字符行

2. 选项
-i 忽略大小写
-v 反向查找
-n 输出行号

# 管道符

netstat -an | grep LISTENING

# 通配符

1. 通配符在Linux中一般用于文件查询

2. 通配规则
? 匹配一个任意字符
* 匹配0个或多个任意字符
[abc] 匹配 a 或 b 或 c
[a-z] 匹配一个 a 至 z 范围内的字符
[^1-9] 匹配一个非数字字符

二. Bash变量

# 四种变量类型

自定义变量 环境变量 位置参数变量 预定义变量

# 自定义变量

1. 变量命名规范
1) Bash默认变量类型为字符串类型
2) = 两侧不允许出现空格
3) today=$(date) # 将命令执行结果作为变量的值
4) name='shao hsiung' # 字符串包含空格时, 使用引号包围
5) 环境变量名一般为大写字符串

2. 操作自定义变量
1) 定义name变量
name='shao'
2) 叠加name变量
name='$name'hsiung 或 name=$(name)hsiung
3) 调用name变量
echo name
4) 查看所有变量
set
5) 删除name变量
unset name

# 环境变量

1. 环境变量和自定义变量的区别
自定义变量只在当前shell生效
环境变量对当前shell和子shell生效

2. 操作环境变量
1) 定义NAME环境变量
export NAME='env value'
2) 查看所有环境变量
env
3) 删除环境变量
unset NAME

3. 两个重要的环境变量
PS1 定义系统操作环境

 

$PATH
注意: 建议使用变量叠加的方式修改$PATH, 举例:
PATH="$PATH":/root/sh

# 位置参数变量

$0 命令本身
$1-$9 第1个至第9个参数
${10} 第10个以上的参数
$* 返回所有参数 整体 循环一次 "$*"
$@ 返回所有参数 个体 循环多次
$# 返回参数个数

# 预定义变量

1. 验证上条命令执行结果, 执行成功返回0, 执行失败返回1
echo $?

2. 返回后台运行最后一个进程PID
echo $!

3. 返回当前进程PID
echo $$

# read

1. 选项
-p 提示信息 -t 指定秒数 -s 安全模式

2. 通过name变量接收一个输入的参数
read -t 30 -p "please input a number: " name
echo $name

# 变量的数值运算

sum=$(( $a + $b )) 或 sum=$[ $a + $b ]

# 运算符

运算符优先级越大, 则优先级越高

## 变量测试与内容替换

TODO

# 环境配置文件

1. 直接生效配置文件
source 配置文件 或 . 配置文件

2. 配置文件
/etc下配置文件 // 对所有用户生效
用户家目录下配置文件 // 只对当前用户生效
~/.bash_profile // 设置PATH
~/.bashrc // 定义系统别名, 调用/etc/bashrc
/etc/bashrc // 定义登录提示符 (PATH umask PS1 ------- > no login shell)

越后读取到的配置文件, 优先级越高, 除非使用变量叠加

3. 其它配置文件
~/.bash_logout // 注销时执行
~/.bash_history // 手动从内存写入硬盘或注销时, 将内存的历史命令写入这个文件
/ect/issue // 本地终端欢迎信息
/ect/issue.net // 远程终端欢迎信息, 默认关闭, 可在/ect/ssh/sshd_config中开启
/ect/motd // 不管是远程还是本地都会显示, 推荐: 英文警告信息

 

4. 环境变量配置优先级

 

posted on 2018-11-07 12:36  ert999  阅读(165)  评论(0编辑  收藏  举报

导航