Linux bash 特性、相关变量以及编程

Linux bash 特性、相关变量以及编程

bash 特性之:命令hash

缓存此前执行过的命令(都是外部命令,不记录内嵌命令),加速命令的执行

hash 
  -d 清空指定命令记录
  -r 直接清空hash表

bash 特性之一: 变量 程序=指令+数据 指令是有文件提供 数据是由:IO设备,文件,变量,管道

程序:算法+数据结构

变量类型:存储格式、表示数据范围、参与的运算

编程语言

 bash把所有变量统称为作为字符型
 bash中变量无需事先声明;相当于,把声明和赋值过程同时实现
 变量替换,变量名指定的内存数据空间赋值给另外一个变量
 变量引用:$(var_name),$var_name
 变量命名:字母,数字,下划线,但是不能以数字开头,见名之意,且不能用程序的关键

 bash变量类型
     本地变量(当前shell),环境变量(当前shell以及子进程),局部变量(当前shell的某个进程的变量),位置参数变量(执行脚本传递的参数,特殊变量(shell内置的有特殊功能的变量比如"?"
查看变量:set ,撤销变量:unset NAME
  环境变量
  1),export name=value
  2),name=value;export name
  3),name=value; declare -x name
  4),declare -x name=value
注意:bash内嵌了许多环境变量,用于定义bash工作环境(基本都是大写,PATH,HOME,HISTFILE...)
  查看环境变量:env,declare -x,printenv 
  撤销环境变量:unset name
  只读变量:declare -r name;或者 readonly name ;生命周期随shell结束而结束

bash特性之多命令执行

~]# COMMAND1;COMMAND2;COMMAND3;.......
逻辑运算
    与,或,非,异或(相同为0,不同则为1)
    与:短路法则:COMMAND1 && COMMAND2,第一个命令执行状态是否成功,决定后一个                                          反

shell编程

编程的语言的分类:根据运行分类

编译运行:源代码---> 编译器(编译) ---> 程序文件
    C语言,
解释运行:源代码--->运行时启动解释器,由解释器边解释边运行

根据编程过程中功能实现是调用库还是外部程序文件

shell脚本编程 利用系统上的命令及组件进行编程

完整编程 利用库或者编程组件进行编程

编程模型:过程式编程语言和面向对象编程语言
 过程式:以指令为中心来组织代码,数据服务于代码
     顺序执行,选择执行,循环执行
对象式:以数据为中心来组织代码,围绕数据来组织指令
   类(class):实例化对象,method

shell 编程:过程式编程,解释运行,依赖于外部程序文件运行

如何写shell脚本: 脚本第一个行:顶格:给出shebang,解释器路径,用于指明解释执行当前脚本的解释器程序文件 常见的解释器

        #!/bin/bash
        #!/usr/bin/python
        #!/usr/bin/perl

编辑器:nano,sed, vim,vi

命令的堆积:但是很多命令不具有幂等性,需要用程序逻辑来判断运行条件是否满足,以避免其运行过程发生错误而终止

  运行脚本:
    运行的过程:是先启动/bin/bash (#!/bin/bash),才开始执行这个脚本文件内的命令(堆积的命令)
    1),赋予执行权限,并直接运行此脚本程序文件
    2),直接用解释器运行,将脚本以命令行参数传递给解释器程序;~]# bash 脚本文件
    3)"." 或者 source 
注意:空白行直接被忽略,如果要直接加入echo,注释用"#",

bash 配置文件 profile类:为交互式登陆的shell进程提供配置 su – username ;终端输入账号和密码登陆的终端 bashrc类:为非交互式登陆shell进程提供配置 su username ;图形界面下打开终端:运行脚本也是(执行脚本是打开了一个子shell)

profile类:
    全局:对所有用户都生效
        /etc/profile
        /etc/profile.d/*.sh
   用户个人:仅对当前用户有效:~/.bash_profile
   功能:1,用于定义环境变量
            2,运行命令或脚本
bashrc类:
    全局:多有所有用户生效
        /etc/bashrc
    用户个人:仅对当前用户有效:~/.bashrc
    功能: 1,定义本地变量
          2,定义命令别名

配置文件读取次序:

交互式登陆shell:/etc/profile --> /etc/profile.d/*---> ~/.bash_profile--> ~/.bashrc --> /etc/bashrc
非交互式登陆shell:  ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*
 ~]# source 配置文件 或者 ~]# . 配置文件   #重启配置文件,让当前shell生效

原创文章,作者:不忘初衷,如若转载,请注明出处:http://www.178linux.com/65254

(0)
不忘初衷不忘初衷
上一篇 2016-12-29 17:39
下一篇 2016-12-29 21:46

相关推荐

  • 持续交付的Mesos与Docker导入篇

    变革这个词在当今的数字化时代司空见惯,IT技术每过一段时间就会有一起革新,从WEB2.0、虚拟化、云计算、大数据、微架构、DevOps再到今天的容器Docker与Mesos。 Docker的出现方便了应用的测试、部署、与升级,其将各种应用程序和它们所依赖的运行环境打包成标准的Container/Image,进而发布到不同的平台上运行。Docker的轻量级、快…

    Linux干货 2016-07-10
  • 运维自动化之系统安装

    自动化安装系统,cobbler的安装使用

    Linux干货 2018-01-15
  • keepalived实现lvs的高可用

    lvs可以做到内核级别的四层负载均衡,具有非常强悍的负载均衡能力。但是,当我们构建lvs的负载均衡集群的时候也会面临一些很严重的问题: lvs的单点故障:当lvs负载均衡器出现故障的时候,那么后端所有的服务器都将无法访问; lvs对后台服务器没有健康监测机制:当后台服务器宕机之后lvs还是会调度服务到后台的服务器; 所以我们就需要一款工具来解决以上问题。 k…

    2017-07-03
  • 设计模式原则详解

        我们在应用程序开发中,一般要求尽量两做到可维护性和可复用性。       应用程序的复用可以提高应用程序的开发效率和质量,节约开发成本,恰当的复用还可以改善系统的可维护性。而在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则,遵循这些设…

    Linux干货 2015-04-07
  • Linux小工具之cheat

    随着linux学习的深入,接触到的命令越来越多,此时,考验脑力的时候就到了,除非你是”脑王”,否则面对多如牛毛的linux命令,真的会崩溃!linux前辈们貌似也被同样的问题所困扰,所以,他们发明了cheat。cheat是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但…

    2017-08-10
  • DHCP使用帮助

    bootp 想要通过tcp/ip模型进行网络通信需要有一个ip地址,IP地址是属于操作系统的,所以没有操作系统就没有ip 为了解决这种问题,有一种网卡可以不需要操作系统就能获取到ip bootp:只有第一次是动态获得,以后ip地址就是和mac地址绑定的,不能分配给其他主机 DHCP:DHCP是bootp的改进版,主要引入了租约的定义 DHCP也可以根据mac…

    Linux干货 2016-11-11