天天看點

shell體驗一

shell是什麼,能幹什麼?

1.程式

    狹義:作業系統程式和應用程式。

    作業系統程式是用來調用監控核心的,在這個作業系統上面運作着所有我們可以應用的程式。

    計算機的運作是這樣一個聯系(或是支援)

    硬體==》核心 ==》作業系統 ==》 shell ==》程式  

    ***核心 ==》作業系統 ==》 shell(我覺得他們都被包含在作業系統中)****

    (這裡我們隻是從程式和作用的的角度看作業系統。大家說的linux作業系統是個大集合是一個全面的概念。就好比

        china  是瓷器。也是中國)。

    簡化下:  硬體 ==》作業系統 ==》 程式

shell是一個指令解釋器。處于linux的作業系統(核心)與應用程式之間。通過作業系統提供的方法解釋并運作應用程式。

    bash shell是centos預設的shell。包含簡單的文法和環境。檢視本機的shell類型 (echo $SHELL),檢視shell的版本(

    bash --version ).

    shell腳本的開服環境

        任何編輯器都可以。(類windows的記事本)centos下的vi或vim ,簡單的操作也可以 echo  "" >filename 

shell的檔案名:

        其實,linux一切都是檔案。不像window,以字尾名為差別。這裡我們給的.sh 字尾是一種約定俗成的方式。友善

        大家的識别和管理。是以,不加.sh也是沒有問題的。

        舉個例子:

        $ cat -n test_hello.sh 

         1  #!/bin/bash

         2  #author:swallow

         3  echo 'hello world'

shell的文法格式: 

        1 #! 這2個字元是shell解釋器開始讀取shell的開始符号。 /bin/bash 是在建立使用者的時候。定義的shell的類型。關系到shell的運作環境。

        2 # 是shell頭部的注釋内容一般是日期。作者。 如果是在shell腳本裡面大段的#就是為了友善了解文法而寫的注釋。

        3 echo 'hello world' 這些就是腳本的主體。就是一些基礎指令或是if while for 等邏輯結構。

            可以簡單的了解:shell 主體就是一堆可以實作我們需要的功能的指令的集合。

shell的執行:

       linux的檔案權限體系由 r  w  x 組成。

       如果有x權限的可以直接:用檔案名來執行

       一般使用者建立的檔案如果沒有 x 權限沒有辦法執行的。

       在練習的時候可以賦予權限: chmod +x  test_hello.sh

       或者通過 bash 或者 sh  test_hello.sh   (bash/sh 可以寫全路徑名 /bin/bash  /bin/sh)

       這裡 sh  是bash 的軟連結(類似于win的快捷方式)

       $ ll /bin/sh

       lrwxrwxrwx. 1 root root 4 Jan 18 15:01 /bin/sh -> bash

       (了解linux的人,應該一目了然)

       $ bash <test_hello.sh  (這樣子也可以)

       如果在腳本裡面 可以通過管道 | bash  執行

       另一種方法就是: .   或者 source  本質是一樣的(讀入腳本并且執行)

       舉個例子比較下:source和 sh 的差別;

       $ cat -n /home/swallow/test_source.sh 

         2  # 

         3  cd /tmp

         4  echo "the script is ok"

         5  pwd

       [swallow@swallow ~]$ sh test_source.sh 

        the script is ok

        /tmp

        [swallow@swallow ~]$ source test_source.sh 

        [swallow@swallow tmp]$ ************用source執行完程式切換到/tmp目錄下)

        sh執行沒由進入到/tmp ,而source 進入到/tmp目錄下。

        因為:sh指令在執行的時候shell會開啟一個子程序。shell的執行在子程序裡面執行。在我們

        執行shell的時候實際還在父程序裡面。而沒有切到子程序下面。

        而source  指令執行時直接在父程序裡面執行沒有開啟新的子程序。一般如果腳本裡面還包含其它的

        shell腳本。建議,用source 執行。

檢視shell的執行結果:

         echo $?

        一般為0 是正常執行。因為linux源于Unix。Unix裡面的檔案執行後釋放程序的标記符裡面0就代表成功.

    檢視當下的shell的具體環境可以通過: env 指令檢視全局變量(系統級) set 指令輸出所有變量。包括

    全局變量和局部變量。declare 指令輸出所有的變量,函數,整數,和已經導出的變量。

        一般修改變量的方法:

        在 /etc/profile 檔案的結尾添加一句;

        export PATH=/softwaredirectory/bin:$PATH

        一般就是講新安裝軟體的路徑的bin目錄放入/etc/profile 檔案的末尾。并且重新定義PATH.為了不影響原

        PATH 。一般的指派寫法:  PATH=directory:$PATH  (新目錄和引用原來的目錄)

幾種引用的對比:"" ' '  $   ``

        # var=123

        # echo "$var"

        123

        # echo '$var'

        $var

        # echo $var

        123# echo `date`

        Sat Jan 21 16:29:15 CST 2017

        # echo $(date)

        Sat Jan 21 16:32:15 CST 2017

    一般 單引号:比較直接裡面是什麼,就直接輸出。  雙引号遇到例如\ $ 會轉義  

     ·· 雙反引号的作用和 $() 類似:一般用于指令的引用。

    技巧: 生成有序列 {a..z}  {1..100}  seq 30

一個例子明白:$0:目前腳本名稱 $$;腳本執行的PID $# :傳入的參數的個數

        $ vim test.sh     

        #!/bin/bash

        #

        echo -e "script name is : $0\n"

        echo -e "pid  is :$$ \n"

        echo -e "sum_file is :$# \n"

        $ sh test.sh test1 test2  test3

        script name is : test.sh

        pid  is :26918 

        sum_file is :3 

本文轉自 swallow_zys  51CTO部落格,原文連結:http://blog.51cto.com/12042068/1893578,如需轉載請自行聯系原作者

上一篇: shell體驗二
下一篇: 簡析yum使用

繼續閱讀