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

相关推荐

  • linux进程管理

    Linux内核:抢占式多任务 进程类型: 1、守护进程:在系统引导过程中启动的进程,与终端无关的进程; 2、前台进程:跟终端相关,通过终端启动的进程,注意:也可把前台启动的进程送往后台,以守护模式运行;   进程状态: 运行态:running 就绪态:ready 睡眠态:a、可中断:interruptable;b、不可中断:uninterrupta…

    Linux干货 2018-02-08
  • 马哥教育网络21期+第五周练习博客

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@localhost ~]#  grep '[^[:space:]]\+' /boot/grub2/grub.cfg 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符…

    Linux干货 2016-08-08
  • CentOS6启动流程

    CentOS 6 启动流程 | root密码重置 | 添加系统服务 一、CentOS 6 启动流程:     1)POST加电自检         Power-On-Self-Test,主板在接通电源后,系统首先由BIOS程序来对对CPU、…

    Linux干货 2016-09-08
  • 自建CA搭建SSL加密网站

    企业环境中,在安全级别要求较高的公司,经常需要搭建基于SSL加密传输的网站,使用https协议访问web站点,能大大提高网站的安全性。但构建https站点,需要用到证书。内部网站到互联网上申请费用不菲的证书显然不符合经济性。于是,自建内部CA成为我们的首选。 本文以两台服务器,分别扮演CA及Web网站的角色,详细论述自建CA搭建加密网站的过程。  …

    Linux干货 2016-07-29
  • 优质代码的十诫

    1.- DRY: Don’t repeat yourself. DRY 是一个最简单的法则,也是最容易被理解的。但它也可能是最难被应用的(因为要做到这样,我们需要在泛型设计上做相当的努力,这并不是一件容易的事)。它意味着,当我们在两个或多个地方的时候发现一些相似的代码的时候,我们需要把他们的共性抽象出来形一个唯一的新方法,并且改变现有的地方的代码让…

    Linux干货 2015-04-01
  • Linux下常用的日志收集命令(Redhat&SuSe)

       Linux下日志的采集和分析是一个非常重要的工作,一般厂商在你需要技术支持的时候,都需要你通过对应指令收集系统的信息,我这边列举下常用的两个Linux厂商的收集命令(Redhat Linux以及SuSe Linux),便于收集后,对系统进行全面分析。   sosreport是一个类型于supportconfig …

    系统运维 2016-07-07