• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • linux shell 編程學習筆記

    發表于:2007-05-26來源:作者:點擊數: 標簽:
    版權聲明: 本文內容為大連理工大學 LINUX 選修課講義,歡迎大家轉載,但禁止使用本材料進行 任何商業性或贏利性活動。轉載時請保留本版權聲明。 作者:何斌武,hbwork@dlut.edu.cn,大連理工大學 網絡 中心,April 1999. URL: ftp://ftp.dlut.edu.cn/pub/PEO

    版權聲明:
    本文內容為大連理工大學LINUX選修課講義,歡迎大家轉載,但禁止使用本材料進行
    任何商業性或贏利性活動。轉載時請保留本版權聲明。

    作者:何斌武,hbwork@dlut.edu.cn,大連理工大學網絡中心,April 1999.

    URL: ftp://ftp.dlut.edu.cn/pub/PEOPLE/albin/
    ------------------------------------------------------------------------------
    這個網上很流行的一個講義,我在上面做了些許的說明,算是我學習過程中的一點心得吧。
    里面所有的紅字是我加進去的。

    蘇小勇 http://www.bestunix.net


    Bourne Shell

    介紹:Bourne Shell 基礎及其他很多有用的特性,shell編程及組織。

    主要內容:
    .shell基礎 基本介紹,環境,選項,特殊字符
    .shell變量 用戶定義變量,環境變量,位置變量(shell 參數)
    .shell script編程
    條件測試,循環及重復控制
    .shell定制

    1.shell基礎知識
    作者:Stephen Bourne 在Bell實驗室開發
    建議:man sh 查看相關UNIX上的改進或特性

    (1)shell提示符及其環境
    在passwd文件中可以看到每個用戶登陸后使用的shell,下面兩個文件也是這個意思。
    /etc/passwd文件  
    提示符:$
    /etc/profile $HOME/.profile
    (2)shell執行選項
    在建立一個shell腳本后我們要用sh命令來運行和測試,下面是一些sh常用的參數

    -n 測試shell script語法結構,只讀取shell script但不執行
    -x 進入跟蹤方式,顯示所執行的每一條命令,用于調度
    -a Tag all variables for export
    -c "string" 從strings中讀取命令
    -e 非交互方式
    -f 關閉shell文件名產生功能
    -h locate and remember functions as defind
    -i 交互方式
    -k 從環境變量中讀取命令的參數
    -r 限制方式
    -s 從標準輸入讀取命令
    -t 執行命令后退出(shell exits)
    -u 在替換中如使用未定義變量為錯誤
    -v verbose,顯示shell輸入行

    這些選項可以聯合使用,但有些顯然相互沖突,如-e和-i.

    (3)受限制shell(Restircted Shell)
    說了半天好象這個東西沒什么用,那就不管了。
    sh -r 或 /bin/rsh

    不能執行如下操作:cd, 更改PATH,指定全路徑名,輸出重定向,因此可以提供一個較
    好的控制和安全機制。通常rsh用于應用型用戶及撥號用戶,這些用戶通常是看不到提
    示符的。通常受限制用戶的主目錄是不可寫的。

    不足:如果用戶可以調用sh,則rsh的限制將不在起作用,事實上如果用戶在vi及more
    程序中調用shell,而這時rsh的限制將不再起作用。

    (4)用set改變 shell選項

    實際上就是設置sh的默認參數,我們在運行shell腳本時,并不總是使用sh scriptsfile,而是用./scriptsfile來運行,這個時候就使用sh的默認參數。
    用戶可以在$提示符下用set命令來設置或取消shell的選項。使用-設置選項,+取消相應
    選項,大多數UNIX系統允許a,e,f,h,k,n,u,v和x的開關設置/取消。

    set -xv
    啟動跟蹤方式;顯示所有的命令及替換,同樣顯示輸入。
    set -tu
    關閉在替換時對未定義變量的檢查。

    使用echo $-顯示所有已設置的shell選項。


    (5)用戶啟動文件 .profile
    PATH=$PATH:/usr/loacl/bin; export PATH

    (6)shell環境變量
    這里是舉例說明什么是環境變量,但還是沒說什么是環境變量,按我的理解,環境變量類似于宏定義,或者說環境變量是一個作用于系統的全局變量或局部變量。

    CDPATH 用于cd命令的查找路徑
    HOME /etc/passwd文件中列出的用戶主目錄
    IFS Internal Field Separator,默認為空格,tab及換行符
    MAIL /var/mail/$USERNAME mail等程序使用
    PATH
    PS1,PS2 默認提示符($)及換行提示符(>)
    TERM 終端類型,常用的有vt100,ansi,vt200,xterm等

    示例:$PS1="test:";export PS1
    test: PS1="$";export PS1
    $echo $MAIL
    /var/mail/username

    (7)保留字符及其含義
    $ shell變量名的開始,如$var
    | 管道,將標準輸出轉到下一個命令的標準輸入
    # 注釋開始
    & 在后臺執行一個進程
    ? 匹配一個字符
    * 匹配0到多個字符(與DOS不同,可在文件名中間使用,并且含.)
    $- 使用set及執行時傳遞給shell的標志位
    $! 最后一個子進程的進程號
    $# 傳遞給shell script的參數個數
    $* 傳遞給shell script的參數
    $@ 所有參數,個別的用雙引號括起來
    $? 上一個命令的返回代碼
    當前shell的名字
    $n (n:1-) 位置參數
    $$ 進程標識號(Process Identifier Number, PID)
    覆蓋現有文件的數據
    >file 輸出重定向
    這個沒看明白
    `command` 命令替換,如 filename=`basename /usr/local/bin/tcsh`
    會在現有文件末尾追加數據
    >>fiile 輸出重定向,append

    轉義符及單引號:
    注意單引號,雙引號,沒引號的異同。
    $echo "$HOME $PATH"
    /home/hbwork /opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:
    $echo '$HOME $PATH'
    $HOME $PATH
    $echo $HOME $PATH
    $HOME /opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/hbwork/bin

    其他:
    $dir=ls
    $$dir
    $alias dir ls
    $dir
    將ls結果輸出到文件filelist
    ls > filelist
    將ls結果追加到文件filelist最后
    ls >> filelist
    統計文件filelist內容的行數
    wc -l < filelist
    統計字符串filelist的總行數
    wc -l filelist
    等待5秒鐘,顯示5 seconds reaches,執行ls -l命令
    sleep 5; echo 5 seconds reaches; ls -l
    [在當前進程中找出所有的inetd進程]
    ps ax |grep inetd
    這個沒看明白,find不會用,呵呵
    find / -name core -exec rm { } ; &
    設置filename為日期+年月日.log
    filename=`date "+%Y%m%d"`.log

    原文轉自:http://www.kjueaiud.com

    評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>