什么是shell:
基于Linux开发出来了bash shell
什么是shell:shell是命令解释器,linux内核外面,将人的语言来解释为内核可以识别的语言,
shell:壳
硬件-->内核-->shell-->操作系统 构成一个可以应用的操作系统
shell是一个应用程序 是在后期安装上去的
常用的shell是bash shell
用户里面的/bin/bash让开机用户的shell设置为bash shell
相关命令:
history -c ,echo ’ ‘ /.bash_history清空历史记录 history -w 手动刷新历史记录,将其保存在/.bash_history ctrl+c 强制终止 ctrl+d 结束交互式输入
通配符:
通配符和正则的使用场景:
-
用在文本上,使用的是正则
-
用在命令行,使用的是通配符
常见的通配符:
* 匹配0到多个字符 ls -l file* 匹配file后0到多个字符 ? 匹配任意一个字符 ls ? ls ??* [a-z]:匹配一个字符,只匹配一个字符,只能是单个字符,可以是数字也可以是字母 [abc]:括号内的字符一次进行匹配 [^abc] :匹配一个字符,除了abc
不常见的通配符:
[[:alpha:]] 匹配字母 [[:lower:]] 匹配小写字母 [[:upper:]] 匹配大写字母 [[:digit:]] 匹配一位数字 [[:space:]] 匹配空格 [[:alnum:]] 匹配任意字母或者数字 [[:punct:]] 匹配除空格、字母、数字以外的任何可以打印的字母
拓展符号:
#命令行扩展 $(command)调用命令执行的结果 例:echo time is $(data) 执行的结果就是 time is 时间 `command` 调用命令执行的结果 等同于$() 如果直接在命令行中调用`command`则会报错,因为会直接调用结果当作新的命令 #大括号扩展 重复匹配括号内的字符串,表示一个序列,是一个有序序列,范围内依次生成 {1,3,5,8} {1..5}
变量:
变量:分为两部分;变量名和变量值
变量名:bash shell不成文的规定就是全部大写,以字母和下划线开头
echo ${变量名}参数 调用变量的值的同时显示参数,查看规定变量的值是多少
可以直接使用echo ${变量名}
也可以使用echo $变量名来调用
定义本地变量:仅在当前shell中有效
当前shell:一个窗口可以理解为一个shell
变量名=变量
环境变量:仅在当前shell和子shell中有效的变量
让本地变量变成环境变量:export 变量名
命令:
export 变量名=值 直接定义环境变量 env 查看环境变量 unset 变量名 取消变量 set 查看所有的变量 pstree 查看进程树
系统常见变量:
可以配置的变量: PS1 #操作符的变量 HISTORY #历史记录的变量 PATH #PATH变量,用户课执行文件所在目录的位置 #PATH变量:定义在命令所在的目录 所有执行的命令都会在path下寻找,如果找不到就会报错 #path变量是环境变量,区分原理是为了区分root和普通用户的权限,一般安装第三方的文件,会修改path 用户常用的变量: HOME #用户的家目录 UID #当前用户的UID 脚本构成:本质就是在文件里面写命令,然后去执行文件或者是把文件用变量改
命令的本质:
就是执行了一个命令的文件,能够直接使用是因为注册了环境变量,当环境变量没有注册的时候 无法直接使用命令
命令的别名:
alias 查看系统定义好的命令的别名 alias cp=’cp -r‘ 自定义别名(临时生效) 别名永久生效:~/.bashrc 中的文件中写 unalias ls 取消命令的别名
单引号和双引号之间的区别:
’‘ 去掉引号内所有字符的特殊意义
“”去掉引号内所有字符的特殊意义,四种情况除外 1. 命令的扩展符号,不能去除 2. !不能去除
特殊符号:
\ 去除一个特殊字符的特殊含义
’ ‘ 去除单引号内所有特殊字符的特殊含义 仅限于bash shell
” “ 可以去除双引号内特殊字符的特殊含义,除了以下几种
$():调用命令执行的结果
``:调用命令执行的结果
$:调用变量
\:转义字符
!:调用历史记录
登录shell和非登录shell
su admin
su - admin 两种不一样的shell 读到的变量不一样
使用登录shell:
su -
登录系统使用的是登录shell
登录shell;可以识别到四个文件
在/etc/profile写变量不能立即生效
source /etc/profile 重新将文件读取到内存之后可以生效
/etc/profile :全局环境变量
~/.bash_profile :用户环境变量
/etc/bashrc:
~/.bashrc :
在/etc/profile文件中设置变量,在切换用户的时候会首先在/etc/profile中匹配变量
在/etc/profile中定义的变量 如果没有加上export 就没有变成环境变量 非登录shell使用的时候 就不会自己读取
登录shell匹配顺序:/etc/profile-->/etc/inputrc-->/etc/profile.d/*.sh-->~/.bash_profile-->~/.bashrc-->/etc/bashrc
非登录shell匹配顺序:~/.bashrc-->/etc/bashrc
使用非登录shell:
su
图形界面打开终端用的shell
执行脚本
其他基本上都是非登录shell
只能识别/etc/bashrc:
~/.bashrc :
使变量再当前shell生效:
source 文件名
. 文件名