第八章 认识与学习bash(上)

目录

认识bash

shell的变量功能

变量的分类

变量的格式

变量键盘读取、数组与申明

单引号、双引号、反引号

文件系统与程序的限制关系:ulimit

变量内容的删除

变量的替代与替换

命令别名与历史命令


认识bash

Shell计算机的硬件只能识别0或1的电信号,所以shell就相当于是一个翻译器;它将我们所输入的命令翻译成cpu能读懂的语言,cpu执行完命令之后再发送给shell,shell再解析成我们能看懂的语言;shell是个虚无缥缈的东西,看不见摸不着,当在Linux中打开一个终端的时候,并不是shell;而终端只是连接用户和shell的桥梁(如:putty、SecCRT);

查看系统支持的shell:cat /etc/shells

注:不同的系统使用的shell是不同的,在Linux中默认使用的是bash

 

切换到其它的shell:ksh、csh          直接输入shell的名称即可

 

shell的优点:

1、远程管理计算机的时候,用命令比图形化界面的效率高

2、大量的快捷键

3、安全性更高

 

查看内、外部命令:type cd

 

当在一行需要敲多条命令的时候,要用分号隔开;

如:cal ; date

 

如果命令太长,可以写一个反斜杠加回车;系统会认为下面一条的命令是上一条命令的延续;


shell的变量功能

变量的分类

本地变量:只会影响当前的shell,而不会影响子shell

环境变量:会影响到所有的子shell

位置变量:位置参数一般多用于shell编程当中


变量的格式

变量名=值

定义变量名:由字母、数字、下划线组成;但是不能以数字开头;等号两边不能有空格

 

定义本地变量:xx=19

查看变量:echo $xx

取消变量:unset xx

 

定义环境变量:export yy=10       

                            declare –x cc=3            

                            aa=1 ; export aa

取消环境变量:  declare +x cc=3

 

查看系统中的所有变量:set

查看所有的环境变量:env;export;或者export –p

 

常见环境变量:

         echo $PATH     系统默认的命令路径

         echo $HOME   用户的家目录

         echo $USER    当前登录的用户

         echo $HISTORYFILESIZE    设置系统默认记录1000条历史命令

         echo $PS1         系统中默认打开终端的提示符

         echo $PS2          系统中默认设置长明令换行的字符

 

 

注:开头#!/bin/bash为固定shell编程写法

         $0表示这个文件的名字

         当参数的个数是两位数的时候,需要用大括号括起来;${12}

         $#表示参数的个数,$*表示所有的参数

         执行程序:./xx.shells a b c d

 

语系变量:

         查看系统所有的编码:locale –a

         查看系统当前使用的编码:echo $LANG


变量键盘读取、数组与申明

变量键盘读取:read

例:read xx

当按回车之后系统会等待用户输入值,并将用户输入的值赋给xx变量;如果read后面不跟变量,则用户输入的值会被赋给系统的一个默认变量$REPLY

 

实际中read在脚本程序中使用居多,例如下面的脚本程序:

#!/bin/bash

echo “请输入您的名字:”

read name

echo “欢迎您,$name”

运行效果:

 

数组:array

定义数组:xx=(aa bb cc dd)

读取数组:echo ${xx[0]}

读取数组全部的值:echo ${xx[*]} 或者echo ${xx[@]}

 

查看数组的下标:echo ${!xx[*]}

查看数组中元素的个数:echo ${#xx[*]}

 

declare

用来定义变量: declare aa=1

定义环境变量: declare -x aa=1

取消环境变量: declare +x aa=1

定义只读的变量:declare –r aa 或者 readonly aa

 

注:echo $xxxx= echo $xx是不一样的,前者表示xx这个变量不存在而后者表示存在xx这个变量,只不过这个变量的值是空值


单引号、双引号、反引号

双引号:可以正常解析变量的值,并且输入

单引号:不解析变量的值,直接原样输出引号中的内容

反引号:在一条命令中嵌套引用变量

但在有些特定的情况下多使用{},而不是使用引号

例如:当想要在book这个参数加上s的时候,系统则会把xxs作为整体误以为是参数,但是实际上系统中并没有xxs这个参数,按回车之后就不会显示;所以这时候这时候就需要使用{}

 

反引号:在一条命令中嵌套引用变量,需要使用反引号(` `),或者使用$()

例:echo “xxxxxxxxxxx `hostname` xxxxxxxxxxx ”

         echo “xxxxxxxxxxx $(hostname) xxxxxxxxxxx ”


文件系统与程序的限制关系:ulimit

系统性能一直是一个受关注的话题,如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件下保证程序的运作,ulimit 是我们在处理这些问题时,经常使用的一种简单手段。ulimit 是一种 linux 系统的内键功能,它具有一套参数集,用于为由它生成的 shell 进程及其子进程的资源使用设置限制。

查看限制:ulimit -a

 

限制创建文件大小:ulimit -f 20480

 

更多使用请查看帮助信息:ulimit --help


变量内容的删除

从前往后删:#

r=${path#*Kerberos/bin}

一个井号表示从开头位置起,一直删到第一个匹配的位置(含匹配到的也删除)

 

r=${path##*Kerberos/bin}

两个井号表示从开头位置起,一直删到最远匹配的位置(含匹配到的也删除)

 

从后往前删:%

r=${path%bin*}

一个%表示从结尾位置起,一直删到第一个匹配的位置(含匹配到的也删除)

 

r=${path%%bin*}

两个%表示从结尾位置起,一直删到最远匹配的位置(含匹配到的也删除)


变量的替代与替换

r=${xx-“aaaaaaa”}

表示如果xx未定义,则会把aaaaa赋给r;如果xx定义了则把xx的值赋给r; -只能用来判断变量是否存在

 

r=${xx:-“aaaaaa”}

功能与xx-相同,唯一多出来的是:-不仅判断变量是否存在,还判断变量是否为空值;如果变量为空值,则会把aaaaaa赋给r

 

r=${xx:=“aaaaaa”}

表示如果说xx未定义,aaaaaa同时赋值给xx、r;如果说xx定义了但为空值,aaaaaa还是会同时赋值给xx、r

 

r=${xx:?“aaaaaa”}

表示如果说xx有非空值,则会将aaaaaa赋值给r;相反就会将冒号中间的信息打印到屏幕上作为警告

 

r=${xx:+“aaaaaa”}如果说xx定义了并且是非空值,则会将aaaaaa赋值给r;

总结: -表示判断变量是否存在,: 表示判断变量是否为空值,= 表示同时给两个变量赋值,? 表示打印警告信息,+ 表示定义的变量是否为空值


命令别名与历史命令

命令别名

在管理和维护Linux系统的过程中,将会使用到大量命令,有一些很长的命令或用法经常被用到,重复而频繁地输入某个很长命令或用法是不可取的。这时可以使用命令别名功能将这个过程简单化,通过将一个复杂的命令建立别名后,就可以通过别名来重复调用该命令;在Linux系统中默认会定义很多的别名;

查看系统别名:alias

 

新建别名:alias aa=”ifconfig eth0”

取消别名:unalias aa

 

历史命令

在系统中会默认记录1000条使用过的历史命令

查看历史命令:history

快速调用历史命令:!378

清空所有历史命令:history –c


原创文章,转载请注明出处

 

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旷野亮光

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值