认识与学习BASH

这篇博客详细介绍了BASH Shell的变量功能,包括变量的使用与设置、环境变量、变量范围、键盘读取、数组与声明。还探讨了命令别名设置和Bash shell的操作环境,如路径与命令查找顺序、通配符与特殊符号。此外,讲解了数据流重定向、管道命令以及相关命令如cut、grep、sort、uniq等的使用方法。
摘要由CSDN通过智能技术生成

管理整个计算机硬件的其实是操作系统的内核(kernel),这个内核是需要被保护的。所以一般用户就只能通过Shell来跟内核沟通,以让内核完成我们所想要实现的任务。

命令快速编辑按钮
在这里插入图片描述

一、Shell的变量功能

变量就是以一组文字或符号等,来替换一些设置或一串保留的数据。

1.1、变量的使用与设置:echo、变量设置规则、unset

变量的使用:echo

变量在被使用时,前面必须要加上美元符号【 $ 】,或是以 $ {variable}的方式来使用。

读取变量: echo $variable | ${variable}
[root@VM_0_8_centos ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/python3/bin:/usr/local/mysql/bin:/root/bin
[root@VM_0_8_centos ~]# echo ${HOME}
/root

在bash当中,当一个变量名称尚未被设置时,默认的内容是【空】。变量通过等号(=)进行赋值,且等号两边不能有空格。

[root@VM_0_8_centos ~]# echo ${myname}

[root@VM_0_8_centos ~]# myname=c123
[root@VM_0_8_centos ~]# echo ${myname}
c123

变量的设置规则

  • 变量与变量内容以一个等号【=】来连接
    myname=c123
  • 等号两边不能直接接空格,否则会报错
    错误示例:myname = c123 或 myname=c123 456
  • 变量名称只能是英文字母与数字,但是开头字符不能是数字
    错误示例:1myname=c123
  • 变量内容若有空格可使用双引号【"】或单引号【’】将变量内容结合起来

特殊使用情况

  • 双引号内的特殊字符如 $ 等,可以保持原本的特性
    var=“lang is $LANG” 则 echo $var 输出结果:lang is en_US.utf8

  • 单引号内的特殊字符则为一般字符(纯文本)
    var=‘lang is $LANG’ 则 echo $var 输出结果:lang is $LANG

  • 可用转义符【\】将特殊符号(如[Enter]、$、\、空格、’等)变成一般字符
    myname=c\ 123

  • 在一串命令的执行中,还需要借由其它额外的命令所提供的信息时,可以使用反单引号【` 命令 `】或 【$(命令)】,这些被特殊处理的命令会优先执行

    version=“内核的版号:$(uname -r)” 再echo $version 输出结果:内核版本号:3.10.0-1062.18.1.el7.x86_64

  • 若该变量为扩增变量内容时,则可用"$ 变量名称" 或 “$ {变量}” 或 $ PATH 累加内容
    PATH="$ PATH":/home/bin 或 PATH=$ {PATH}:/home/bin 或 PATH=$ PATH:/home/bin

  • 若该变量需要在其他子程序运行,则需要以export来使变量变成环境变量
    export 自定义变量名称

  • 通常大写字符为系统默认变量,自行设置变量可以使用小写字符

  • 取消变量的方法为使用unset:【unset 变量名称】 例如取消myname的设置
    unset myname

示例:子程序下使用变量

在目前这个shell的情况下,去启用另一个新的shell,新的那个shell就是子程序。

[root@VM_0_8_centos ~]# name=c123
[root@VM_0_8_centos ~]# echo $name
c123
[root@VM_0_8_centos ~]# bash   <== 进入子程序
[root@VM_0_8_centos ~]# echo $name  <== 子程序中输出name变量的值
                                    <== 子程序没有name这个变量,输出为空
[root@VM_0_8_centos ~]# exit        <== 离开子程序
exit
[root@VM_0_8_centos ~]# export name <== 设置name为环境变量
[root@VM_0_8_centos ~]# bash
[root@VM_0_8_centos ~]# echo $name
c123
[root@VM_0_8_centos ~]# exit
exit
[root@VM_0_8_centos ~]# unset name
[root@VM_0_8_centos ~]# echo $name

示例:进入内核模块目录

[root@VM_0_8_centos ~]# cd /lib/modules/$(uname -r)/kernel
[root@VM_0_8_centos kernel]# pwd
/lib/modules/3.10.0-1062.18.1.el7.x86_64/kernel

cd命令进行了两次操作:
1、先进行括号内的操作【uname -r】并得到内核版本 3.10.0-1062.18.1.el7.x86_64
2、将上述的结果带入原命令,故得命令为:cd /lib/modules/3.10.0-1062.18.1.el7.x86_64/kernel

1.2、环境变量的功能

环境变量可以帮我们实现很多功能,包括根目录(主文件夹)的变换、提示字符的显示、执行文件查找的路径等。

用env观察环境变量与常见环境变量说明

[root@VM_0_8_centos ~]# env
XDG_SESSION_ID=18535
HOSTNAME=VM_0_8_centos    <==  主机名称
TERM=xterm                <==  终端使用的环境类型
SHELL=/bin/bash           <==  使用Shell的类型
HISTSIZE=3000             <==  历史命令记录的条数
USER=root                 <==  使用者的名称
LS_COLORS=rs=0:di=01;34:ln=01;...  <== 一些颜色设置
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/python3/bin:/usr/local/mysql/bin:/root/bin
PWD=/root                  <== 目前使用者所在的工作目录(使用pwd获取)
LANG=en_US.utf8            <== 语系
SHLVL=1
HOME=/root                 <== 使用者的家目录
LOGNAME=root               <== 登录者用来登录的账号名称
_=/usr/bin/env             <== 上一次使用的命令的最后一个参数(或命令本身)

PATH:执行文件查找路径,目录与目录中间以冒号(:)分隔,由于文件的查找是依序由PATH的变量内的目录来查询的,所以,目录的顺序也是重要的。

用set观察所有变量(含环境变量与自定义变量)

BASH=/bin/bash                            <== bash的主程序路径
BASH_VERSINFO=([0]="4" [1]="2" [2]="46" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='4.2.46(2)-release'          <== 这两行是bash的版本
COLUMNS=94                                <== 在目前终端下,使用的栏位由几个字符长度
HISTFILE=/root/.bash_history              <== 历史命令记录的放置文件,隐藏文件
HISTFILESIZE=3000                         <== 存起来(与上个变量有关)的文件之命令的最大记录数
HISTSIZE=3000                             <== 目前环境下,内存中记录的历史命令最大条数
IFS=$' \t\n'                              <== 默认的分隔符号
LINES=31                                  <== 目前的终端下的最大行数
MACHTYPE=x86_64-redhat-linux-gnu          <== 安装的机器类型
OSTYPE=linux-gnu                          <== 操作系统的类型
PS1='[\u@\h \W]\$ '                       <== PS1,命令提示符
PS2='> '                                  <== 如果你使用转义符(\),这是第二行以后的提示字符
$                                         <== 目前这个shell所使用的PID
?             
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值