博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bash特性小结&bash变量
阅读量:6120 次
发布时间:2019-06-21

本文共 2772 字,大约阅读时间需要 9 分钟。

时间就是金钱

效率就是生命

一、bash编程

 |---------------|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
|应用           |
|-----------|   |
|壳|库函数 |    | 
//可以直接针对系统调用编程
|---------------|
|系统调用       |
|---------------|
|内核           |
|---------------|
|硬件           |
|---------------|
    
现在程序开发更重视程序开发的速度-因此Python是未来的趋势
    
终端:附着在终端的接口程序
    
GUI:KDE,GNome,Xfce
    
CLI: /etc/shells 安全shell

二、bash特性总结

    bash特性:

命令行展开:~,{}

命令别名:alias,unalias

命令历史:history

文件名通配:glob

快捷键:ctrl+{a,e,u,k,l}

路径补全:

    bash特性之:命令hash//命令补全

hash //保存命令的执行结果

每一次查找PATH变量,会很慢,所以保存上一次命令的查找结果

//再次运行一个命令的时候先查找hash然后查找PATH

hash自己是shell内建的命令,不用做hash,只会对外部命令做hash

目的是加快命令查找速度

缓存此前命令的查找结果:key-value

key:搜索键

value:值

-d 删除某个记录

hash -d dir //删除dir记录 

-r 清空所有记录

                hash查看命令补全记录

三、bash特性之变量

bash的特性之一:变量 //bash为弱类型

    程序:指令+数据

指令:由程序文件提供

数据:IO设备、文件、管道

    程序:算法+数据结构

    变量名:指向内存中一段空间的起始地址

    变量赋值:name=value

     bash只有两种类型:int和char

默认为char

    变量类型:其实是变量中存储值得数据类型

    编程语言:

        强类型变量:变量类型定以后,是不允许随便转换的

    c,除非进行类型转换

弱类型:bash,

    假若数字和字符进行转换,自动进行转换

    bash默认为字符型

    bash中的变量无需事先声明,强类型需要实现声明变量类型

    相当于,把声明和赋值过程同时实现

    变量替换:把变量名的位置替换为其所指向的内存空间中数据

    变量引用:${var_name},$var_name

    变量声明:类型、变量名

        变量名的命名方式:字母、数字、下划线任意组合,但是不能以数字开头

    见名知义:命名机制遵循某种法则

    不能使用保留字段:if,else,then,while等

变量类型:bash默认为字符类型,//按存储类型划分

    字符型:

    数值型:

变量类型:根据作用范围划分

    本地变量:作用域仅仅是当前shell

    环境变量:当前shell及其子shell

    局部变量:当前shell的某一个代码片段(函数上下文)

    位置参数变量:当执行脚本的shell进程传递的参数

    特殊变量:shell内置的有特殊功用的变量

        $?:

0:成功

1-255:失败

pstree //显示进程数

    1.本地变量

        变量赋值:name=value

变量引用:${name},$name //有些是需要用引号的

"":弱引用:变量名会替换其值

'':强引用:变量名不会替换其值

查看变量:set

变量引用:unset name

注意:此处非变量引用,不使用$

    2.环境变量

变量赋值:export和declare

(1)export name=value

(2)name=value

export name

(3)declare -x name=value

    -x 设置为环境变量

    -i 整形变量

    -r 只读变量,无法撤销

        readonly name //即可设置变量为只读,无法撤销

无法重新赋值

当前shell进程终止后才会撤销

(4)name=value

declare -x name

变量引用:${name},$name

注意:bash内嵌了很多环境变量,用于定义bash的工作环境

                例如:PATH,HISTFILE,HISTFILESIZE,HISTCONTROL,SHELL,UID,                                PWD,HOME全是大写

查看:export,declare -x ;printenv,env

撤销:unset name

    3.局部变量://多为函数内部变量

#!/bin/bash

function test(){

locale a   //声明局部变量

}

四、bash特性之多命令执行与逻辑运算

bash特性之多命令执行:

COMMAND1;COMMAND2;COMMAND3;...

逻辑运算:只有真/假

真:true,yes,on,1

假:false,no,off,0 

与:同时满足

    &&

    id user1 && echo ”yes" 

    //第一个失败,第二个就不会执行

    //第一个成功,第二个才会执行

或:只要有一个为真即可

    ||

    id user1 || useradd user1

    //第一个执行成功,就不会执行第二个

    //第一个执行失败,会执行第二个,并显示第一个的执行结果

非:取反

    !

异或:判断是否不同

五、小结

bash的特性:hash,变量

命令hash,命令的缓存记录,提高集中率

变量://根据作用范围划分

本地变量

环境变量:

局部变量

位置参数变量 

特殊变量:

变量赋值

name=value 本地变量 

export name=value,declare -x name=value 环境变量

变量引用:

$name,${name}

变量撤销

unset name

bash脚本编程:运行脚本

#!/bin/bash  shebang指定解释器

# 注释

bash配置文件: 

    profile类:登录shell //su - USERNAME,su -l USERNAME

    bashrc类:非登录shell提供 //su USERNAME,shell进程,图形终端的终端

    读取配置文件顺序:

登录式shell:/etc/profile-->/etc/profile.d/*.sh--->~/.bash_profile-->~/.bashrc--->/etc/bashrc  //profile到bashrc

非登录shell:~/.bashrc--->/etc/bashrc-->/etc

          //第一个执行成功,就不会执行第二个

          //第一个执行失败,会执行第二个,并显示第一个的执行结果

非:取反

    !

异或:判断是否不同

本文转自MT_IT51CTO博客,原文链接:http://blog.51cto.com/hmtk520/1942831,如需转载请自行联系原作者
你可能感兴趣的文章
eclipse中将一个项目作为library导入另一个项目中
查看>>
Go语言学习(五)----- 数组
查看>>
Android源码学习之观察者模式应用
查看>>
Content Provider的权限
查看>>
416. Partition Equal Subset Sum
查看>>
centos7.0 64位系统安装 nginx
查看>>
数据库运维平台~自动化上线审核需求
查看>>
注解开发
查看>>
如何用 Robotframework 来编写优秀的测试用例
查看>>
Django之FBV与CBV
查看>>
Vue之项目搭建
查看>>
app内部H5测试点总结
查看>>
Docker - 创建支持SSH服务的容器镜像
查看>>
[TC13761]Mutalisk
查看>>
三级菜单
查看>>
Data Wrangling文摘:Non-tidy-data
查看>>
加解密算法、消息摘要、消息认证技术、数字签名与公钥证书
查看>>
while()
查看>>
常用限制input的方法
查看>>
Ext Js简单事件处理和对象作用域
查看>>