shell 編程(一)

shell腳本編程:

 編程語言的分類:根據運行方式

   編程運行:源代碼->編譯器(編譯)--程序文件

   解釋運行:源代碼-->運行啟動時解釋,由解釋器邊解釋運行;

根據其編程過程中功能的實現是調用庫還是調用外部的程序文件:

  shell腳本編程:

     利用系統上的命令編程組件進行編程:

  完整的編程:

    利用庫或編程組件進行編程;

編程模型:過程是編程語言,面向對象編程語言

  程序=指令+數據

    過程是:以指令為中心來組織代碼,數據是服務于代碼;

      順序執行

      選擇執行

      循環執行 代表:C, bash

    對象式:以數據為中心來組織代碼,圍繞數據來組織指令;

      類(class)實例化對象,method:
      代表:java?。茫穑簦瑁铮?/pre>
shell腳本編程:過程編程,解釋運行,以來外部程序運行;
     如何寫shell腳本:
        腳本文件的第一行,頂格:給出shebang,解釋器路徑,用于指明解釋執行當前腳本的解釋器程序文件常見的解釋器:
 ?。#。猓椋睿猓幔螅?/pre>
 ?。#。酰螅颍猓椋睿穑簦瑁铮?/pre>
  #?。酰螅颍猓椋睿穑澹颍?/pre>
文本編程器:nano
 行編輯器:sed
 全屏幕編程器:nano.vi.vim
shell腳本是什么?
  命令的堆積;
  但很多命令布局有冪等性,需要程序邏輯來判斷運行條件是否滿足,以避免其運行中發生錯誤;
如何運行腳本:
(1)賦予執行權限,并直接運行此程序文件;
   chmod?。。校粒裕龋裕希樱茫遥桑校裕撸疲桑蹋?/pre>
  ?。校粒裕龋裕希樱茫遥桑校裕撸疲桑蹋?/pre>
?。ǎ玻┲苯舆\行解釋器,將腳本以命令行參數傳遞給解釋器程序;
   bash?。校粒裕龋裕希樱茫遥桑校裕撸疲桑蹋?/pre>
注意:腳本中的空白行會被解釋器忽略:
腳本中,除了shebang,余下所有以#開頭的行,都會被是做注釋行而被忽略;此即為注釋行;
  shell腳本的運行時通過運行一個子shell進程實現的;
練習:寫一個腳本,實現如下功能
(1)顯示/etc目錄下所有以大小寫開頭的文件或目錄本身;
(2)顯示/var目錄下的所有文件或目錄本身,并肩顯示結果中的小寫字母轉換為大寫顯示;
(3)創建臨時文件/tmp/myfileXXXX;
     bash的配置文件:
    兩類:
        profile類:為交互式登錄的shell進程提供配置
        bashrc類:為非交互式登錄的shell進程提供配置
登錄類型:
   交互式登錄shell進程:
        直接通過某終端輸入賬號和密碼后登錄打開的shell進程:
        使用su命令:su-USERNAME,或者使用su-USERNAME執行的登錄切換;
   非交互式登錄shell進程:
       su USERNAME執行的登錄切換;
        圖形界面下打開的終端;
         運行腳本
  profile類:
      全局:對所有用戶都生效
       /etc/profile
      /etc/profild.d/*.sh
   用戶個人:僅對當前用戶有效:
     -/.bash_profile
功用:1、用于定義環境變量;2、運行命令或腳本:
  bashrc類:
      全局:
      /etc/bashre
用戶個人:
    -/.bashrc
  功用:1,,定義本地變量;2.定義命令別名;
注意:僅管理員可修改全局配置文件;
交互式登錄shell進程:
    /etc/profile.d/*-/.bash_profile->/.bashrc->/etc/bashrc
非交互式登錄shell進程:
-/.bashrc-->/etc/bashrc-->etc/profile.d/*
]命令行中第那樣的特性,例如變量和別名作用域為當前shell進程的生命周期;
配置文件定義的特性,至對隨后新啟動的shell進程有效;

讓通過配置文件定義的特性立即生效:
(1)通過命令重復定義一次;
(2)讓shell進程重讀配置文件;
     ~]# suource /PATH/FROM/CONF_FILE
      ~]#./PATH/FROM/CONF_ FILE
問題1:定義對所有用戶都生效的命令別名,例如‘Iftps='Iftp 172.16.0.1/pub'?
問題2,:讓centos 用戶登錄時,提供其已經登錄,并顯示當前系統時間?

原創文章,作者:shadow,如若轉載,請注明出處:http://www.www58058.com/64531

(0)
shadowshadow
上一篇 2016-12-23 00:53
下一篇 2016-12-23 01:09

相關推薦

  • Linux磁盤與文件系統管理的一些命令

    fdisk fdisk命令用于觀察硬盤實體使用情況,也可對硬盤分區。它采用傳統的問答式界面,而非類似DOS fdisk的cfdisk互動式操作界面,因此在使用上較為不便,但功能卻絲毫不打折扣。 輸入m列出可以執行的命令 p:顯示磁盤分區表 n:new,新建分區 d:delete,刪除分區 t:更改系統類型 l:列出已知分區類型 w:保存并退出 q:不保存退出…

    Linux干貨 2017-04-23
  • 馬哥教育網絡班22期+第11周課程練習

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 Bob先利用單向加密算法提取當前數據的指紋(特征碼),再用自己的私鑰加密數據指紋并附加于數據尾部, 然后利用對稱加密將整個文件加密,之后用Alice的公鑰加密對稱加密密鑰附加于尾部。 Alice收到數據后,先用自己的私鑰解密,得到對稱加密密鑰,之后用對稱加密密鑰解密,然后用Bob的公鑰 解密得到數據指紋,并且驗…

    Linux干貨 2016-11-14
  • 第五周練習

    1.顯示當前系統上root,fedora或user1用戶的默認shell         # cat /etc/passwd | cut -d: -f1,7 | grep -E "(fedora|root|user1)" 2.找出/etc/rc.d/init.…

    Linux干貨 2016-11-26
  • sed與vim淺析

    sed與vim sed Stream EDitor, 行編輯器,sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”( pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出?!?/p>

    Linux干貨 2016-08-10
  • 基于lamp實現wordpress(php-rpm)與phpMyAdmin(pph-rpm+https支持)

    前言    踩了好多坑終于把想象中的樣子搭建出來了。真的是,只有遇到問題了,然后扎耳撓腮把問題解決了,才是真的學到了。此次環境我們采用lamp架構,并且通過fastcgi讓httpd和php進行通信。當然所有的一切都是在同一臺主機上實現。本次安裝的應用是phpMyAdmin-4.4.14.1和wordpress-4.3.1

    Linux干貨 2016-12-26
  • 磁盤配額

    配置配額系統     綜述        ?在內核中執行        ?以文件系統為單位啟用        ?對不同組或者用戶的策略不同 …

    Linux干貨 2016-09-02
欧美性久久久久