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.www58058.com/65254

(0)
不忘初衷不忘初衷
上一篇 2016-12-29
下一篇 2016-12-29

相關推薦

  • Linux的文件系統架構基礎

    前言     當今計算機操作系統來說常見功能主要有:進程調度、內存管理、文件系統管理、網絡協議棧支持、驅動程序管理、安全功能等。所有對于我們來講學習Linux文件系統也是一個十分重要的知識,也是學習Linux的必備基礎知識,學習好Linux的文件系統知識也是為接下來學習Linux的其他知識奠定良好的基礎 關鍵詞  &n…

    Linux干貨 2015-04-16
  • vim編輯器的用法

    vim編輯器的用法 1、vi的基本概念     vi可以分為三種模式,分別是命令模式(command mode)、輸入模式(Insert mode)和末行模式(last line mode),各模式的功能如下:     1) 命令行模式command mode)         …

    Linux干貨 2015-09-14
  • N25-第六周作業

    第六周 請詳細總結vim編輯器的使用并完成以下練習題 文本編輯器: vim:     模式化的編輯器         基本模式:          &…

    Linux干貨 2016-12-28
  • 第六次上課作業

    1、三種權限rwx對文件和目錄的不同意義 對文件 r:read  可讀取此文件的實際內容,如讀取文本文件的文字內容等 w: write  可以編輯,新增或修改該文件的內容 x:execute  該文件具有可以被系統執行的權限==>>針對二進制文件或腳本 X:針對目錄會加上x權限…

    Linux干貨 2016-08-04
  • 自制Linux系統實驗

    1、添加一塊新硬盤、并使系統識別 [root@centos6 ~]# echo "- – -" > /sys/class/scsi_host/host0/scan  [root@centos6 ~]# echo "…

    Linux干貨 2016-09-19
  • 第一天作業

    一、計算機的組成部分         現代計算機的組成是根據馮.諾依曼體系,包括5大部件存儲器、控制器、運算器、輸入設備和輸出設備。             1.存儲器包括內部存儲器和外部存儲器;內部存儲器包括內部硬盤、內存、緩存等,外部存儲器包括移動硬盤、光…

    Linux干貨 2016-08-15
欧美性久久久久