shell是什么?linux
1)shell是一个命令解释器,用于用户和计算机linux系统之间的交互shell
2)shell是一种编程语言,由若干bash命令组成,并支持特定语法,好比逻辑判断、循环等结构,函数等编程
3)每一个用户均可以有本身的shell,如zsh,ksh等,centos7默认shell是bash centos
2. 命令历史缓存
命令历史命令:historybash
命令历史文件:~/.bash_history,历史命令保存在该文件中编程语言
永久保存历史命令:chattr +a ~/.bash_historyide
1)显示执行过的历史命令函数
# history 或centos7
# cat ~/.bash_history
2)命令历史的环境变量
HISTSIZE 默认值1000,内存中命令缓存的数量;通常在/etc/profile环境变量配置文件中配置才能永久生效
HISTFILE 指定记录历史命令的文件
HISTTIMEFORMAT 定义历史命令的格式
3)执行命令历史中的命令
# !n(中间没空格) 执行命令历史中的第n条命令
# !-n 执行倒数第n条命令
# !! 执行上一条命令
# !str 执行以str开头的命令
3. 命令补全和命令别名
1)命令补全:tab键敲一下 ,敲两下显示全部相关的命令
参数补全:必须安装bash-completion包
2)命令别名:alias命令,给命令从新起一个简洁容易记的名字
unalias命令,取消命令别名
3)命令别名存放的配置文件
alias命令是临时生效的,要是alias命令永久生效,必须存放到对应的环境变量配置文件中
某个用户的命令别名配置文件:~/.bashrc
全部用户的命令别名配置文件:/etc/profile.d目录下的文件
4. 通配符
* 任意长度的任意字符
? 任意单个字符
[ ] 指定范围内的任意单个字符
如:[abc] 表示abc中的任意一个字符
[0-9] 表示0到9中的任意一个字符
{ } 指定范围内的任意单个字符
如:{1,2,3} 表示1 2 3中的任意一个字符
注意:[a-z] 表示全部英文字符,不区分大小写
5. 输入输出重定向
> 输出重定向
>> 追加输出重定向
2> 错误输出重定向
2>> 错误追加输出重定向
< 标准输入重定向
举例:正确和错误都输出到a.txt 即&>>a.txt
正确输出到1.txt 错误输出到a.txt 即 >1.txt 2>a.txt
6. 管道符和做业控制
管道符| : 把前面命令的输出结果做为后面命令的标准输入
做业控制:
ctrl+z 把当前做业放在后台,并暂停
jobs 列出当先后台的做业及做业状态
fg 把后台做业调到前台,并运行
bg 把后台的做业调到后台,并运行
& 把当前做业放在后台,并运行
7. shell变量和环境变量
环境变量:系统的,如PATH,HOME,PWD,LOGNAME等
shell变量:用户自定义的 如:a=1
1)env 查看环境变量
set 查看环境变量和shell变量
2)变量名规则:
字母、数字和下划线,首位不能为数字
3)变量值
当变量值有特殊符号时,必须用单引号括起来
4)定义shell局部变量,只在当前shell中生效
a=1
5)定义shell全局变量,在当前shell和子shell中都生效
export a=1
6)取消定义的shell变量
unset a
8. 环境变量配置文件
/etc/profile 全部用户,用户登录时执行
/etc/bashrc 全部用户, 用户不用登录,执行shell时就生效
~/.bash_profile 当前用户的环境变量配置文件
~/.bashrc 当前用户的环境变量配置文件,~/.bash_profile会调用该配置文件
~/.bash_history 命令历史的配置文件
~/.bash_logout 当前用户退出时生效
环境变量PS1
\u 表示当前用户
\h 表示主机名
\W 表示当前目录的最后一层目录
\w 表示当前目录的全路径
$ 命令提示符
/etc/bashrc