shell

什么是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 文件名

. 文件名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值