1 bash shell的概述
1.1 什么是bash
bash是Bourne Again Shell的简称,是从unix系统中的sh发展而来,是用户和Linux内核交互的工具,用户通过bash操作内核完成系统的使用和管理。
1.2 shell的种类
- /bin/sh(已经被/bin/bash替代)
- /bin/bash(默认的shell)
- /bin/ksh(源自贝尔实验室,兼容bash)
- /bin/zsh(源自ksh功能更为强大)
- /bin/csh(已经被tcsh取代)
- /bin/tcsh(整合C shell,功能更为强大)
每种shell的功能比较类似,但是语法会稍有不同。
查看Linux系统支付的shell
#cd /bin
#ls -la *sh
1.3 bash的历史和发展
2 bash的配置
2.1 bash shell的变量概述
变量是代表一些值的符号:
- 可以通过变量来设置shell或者其他程序
- 变量存在于内存中
- Linux有自定义变量(local)和环境变量(environment)
- 自定义变量和环境变量作用范围不同
可以使用以下指令查看所有变量:
- set可以查看所有变量
#set
#set |more
- env 只能查看环境变量
2.2 bash shell的配置方式
bash shell有以下几种设置方式:
- 通过自定义变量设置
- 通过别名(Aliases)设置
- 通过set指令设置
- 通过环境变量设置
- 自定义变量只能在当前的shell环境中有效
- 环境变量会在整个主机下的shell环境中生效
通过自定义变量设置
#KEY1=key
#KEY2='test now'
#KEY3="value is $KEY2"
#KEY4=$KEY3
查看
#echo $KEY1
使用场景
#mysql=/root/dirs/mysql/bin
#cd $mysql
删除变量
#unset mysql
常见变量
- HISTFILESIZE:记录历史指令保存的最大值
- COLUMNS:终端窗口显示的宽度
- LINES: 终端窗口显示的高度
- PS1:设置提示符号前面的内容样式(\d,\h,\t,\u,\w,!,$,\l)
通过别名(Aliases)设置
# alias lss='ls -la'
# alias cls='clear'
查看别名描述
# type cls
查看所有别名
# alias
查看alias值
# alias cls
删除别名
# unalias cls
通过set指令设置
设置禁止重定向覆盖已存文件
# set -o noclobber
设置整个命令状态就是是VI编辑器
# set -o vi
通过环境变量设置
若自定义变量存在
# export 变量名
删除环境变量,只要删掉set变量
# unset 变量名
常用变量介绍
- HOME:指向当前用户的家目录
- LANG:应用程序使用何种语言来显示界面
- PWD:指向用户当前的工作目录路径
添加路径到PATH中
# PATH=$PATH:/root/dirs/mysql/bin
3 shell startup scripts的原理和功能
3.1 shell startup scripts概述
用户登录或其他非登录动作时会自动执行的一些shell脚本:
- 建立自定义变量或者执行set指令设置shell
- 建立环境变量,设置其他程序
- 使用alias,简化后续的操作
- 登录的时候执行哪些程序
- 分为login和non-login脚本
3.2 login和non-login shell的学习
login shell:
- 通过完整的登录流程时运行的shell
- 首先会读取/etc/profile(PATH/USER/HOSTNAME/HISTSIZE等)
- 读取/etc/profile.d/*.sh(颜色、语言、指令别名等)
- ~/.bash_profile、~/.bash_login、~/.profile(只依次读取其中一个)
- ~/.bash_rc、/etc/bashrc
- source指令加载脚本的变更
non-login shell:
- 不需要登录即可运行的shell,如su和原bash下的新bash动作
- ~/.bash_rc、/etc/bashrc
- 读取/etc/profile.d/*.sh(颜色、语言、指令别名等)
- ~/.bash_logout(a.注销用户时会运行该脚本 b.可以执行双备份、缓存和临时文件清理等任务)
4 数据流重定向和管道命令
4.1标准输入输出和错误输出概述
相关概念
- 标准输入(stdin)是指令数据的输入,代为为0,使用<或者<<,默认是键盘
- 标准输出(stdout)是指令执行成功返回的结果,代码为1,使用>或者>>,默认屏幕显示
- 标准错误输出(stderr)是指指令执行失败返回的错误信息,代码为2,使用2>或者2>>,默认是屏幕