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

相关推荐

  • 系统管理之磁盘管理(一)

    磁盘结构 一.概论 1.操作系统的组成部分: 硬件: 根据冯诺依曼体系,计算机的组成:    运算,控制器:cpu    存储器:主存(ram);       io设备:      &nbs…

    Linux干货 2016-08-30
  • shell脚本一键分区

    #!/bin/bash #实现硬盘自动分区助手 echo "当前所有分区:" echo `fdisk -l|grep "Disk /dev/[sh]d"|cut -d: -f1|awk '{print $2 &q…

    Linux干货 2016-07-26
  • 马哥教育网络班21期+第5周课程练习

    1.显示/boot/grub/grub.conf中至少以一个空白字符开头的行 [root@itop ~]# grep "^[[:space:]]\+" /boot/grub/grub.conf 2.显示/etc/rc.d/rc.sysinit文件中以#开头,后面至少一个空白字符,而后又有至少一个非空…

    Linux干货 2016-08-08
  • 马哥教育网络班第21期+第二周课程作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 命令 选项 解释 cp -r 递归复制 copy -f 强行复制,若已存在则覆盖 -i 交互式 -p 保留属主属组权限时间戳 -L(不加也可以,默认) (源文件为链接)复制指向连接的文件 -P (源文件为链接) 以链接的方式复制过来 -a 归档复制,常用备份 命令 选项 …

    Linux干货 2016-07-17
  • 马哥教育网络21期+第二周练习博客

    马哥教育网络21期+第二周练习博客 复习第一节课内容: 1,计算机的组成及其功能:     运算器,控制器,存储器,输入设备,输出设备 2,Linux的发行版:     shackware,debian,redhat 3,Linux的哲学思想 一切介文件把几乎所有资源,包括硬件设…

    Linux干货 2016-07-12
  • Linux ansible 服务

                      Linux ansible 服务 Ansible:    运维工具的分类: agent:基于专用的agent程序完成管理功能,puppet, func, zabbix, … agentless:基于ss…

    系统运维 2016-11-19