shell 編程(一)

shell腳本編程:

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

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

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

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

 ?。螅瑁澹欤炷_本編程:

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

  完整的編程:

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

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

  程序=指令+數據

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

      順序執行

      選擇執行

      循環執行 代表:C, bash

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

      類(class)實例化對象,method:
      代表:java C++,python
shell腳本編程:過程編程,解釋運行,以來外部程序運行;
     如何寫shell腳本:
        腳本文件的第一行,頂格:給出shebang,解釋器路徑,用于指明解釋執行當前腳本的解釋器程序文件常見的解釋器:
  #?。猓椋睿猓幔螅?/pre>
  #?。酰螅颍猓椋睿穑簦瑁铮?/pre>
  #?。酰螅颍猓椋睿穑澹颍?/pre>
文本編程器:nano
 行編輯器:sed
 全屏幕編程器:nano.vi.vim
shell腳本是什么?
  命令的堆積;
  但很多命令布局有冪等性,需要程序邏輯來判斷運行條件是否滿足,以避免其運行中發生錯誤;
如何運行腳本:
(1)賦予執行權限,并直接運行此程序文件;
   chmod?。。校粒裕龋裕希樱茫遥桑校裕撸疲桑蹋?/pre>
  ?。校粒裕龋裕希樱茫遥桑校裕撸疲桑蹋?/pre>
 (2)直接運行解釋器,將腳本以命令行參數傳遞給解釋器程序;
  ?。猓幔螅琛。校粒裕龋裕希樱茫遥桑校裕撸疲桑蹋?/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
下一篇 2016-12-23

相關推薦

  • awk實際使用案例

    知識點: 1)數組 數組是用來存儲一系列值的變量,可通過索引來訪問數組的值。 Awk中數組稱為關聯數組,因為它的下標(索引)可以是數字也可以是字符串。 下標通常稱為鍵,數組元素的鍵和值存儲在Awk程序內部的一個表中,該表采用散列算法,因此數組元素是隨機排序。 數組格式:array[index]=value 1、Nginx日志分析     …

    Linux干貨 2017-04-09
  • SUID_SGID_Sticky簡單總結

    參考: http://blog.chinaunix.net/uid-25314474-id-3313109.html —————————————權限——&#82…

    Linux干貨 2015-09-14
  • 命令find應用

    作業:  查找/var目錄下屬主為root,且屬組為mail的所有文件 [root@localhost bin]# find /var/ -user root -group mail     2. 查找/var目錄下不屬于root、lp、gdm的所有文件    [root@localhost bin…

    Linux干貨 2016-08-22
  • linux用戶與用戶組詳解

    LINUX用戶與用戶組詳解     1,用戶和用戶組文件   在linux中,用戶帳號,用戶密碼,用戶組信息和用戶組密碼均是存放在不同的配置文件中的。分別是 passed gpassd shadow group 中。   在linux系統中,所創建的用戶帳號和其相關信息(密碼除外)均是存放在/etc…

    Linux干貨 2017-07-22
  • Javascript 裝載和執行

    一兩個月前在淘寶內網里看到一個優化Javascript代碼的競賽,發現有不少的人對Javascript的執行和裝載的基礎并不懂,所以,從那天起我就想寫一篇文章,但一直耽擱了。自上篇《瀏覽器渲染原理簡介》,正好也可以承前啟后。 首先,我想說一下Javascript的裝載和執行。通常來說,瀏覽器對于Javascript的運行有兩大特性:1)載入后馬上執行,2)執…

    Linux干貨 2016-08-15
  • 馬哥教育網絡班N22期+第4周課程練習

    馬哥教育網絡班N22期+第4周課程練習 1. 復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 cp -rf /etc/skel /home/tuser1  chmod -R go= tuser1/ 2. 編…

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