成長空間

          MiLife

          常用鏈接

          統計

          積分與排名

          Automation Testing Development

          最新評論

          Unix Basic

          1 UNIX起源、流派及標準
          1.1 UNIX的發展簡史
          60年代由麻省理工學院、通用電器公司、AT&T貝爾試驗室組成一個專家小組,研制一個MULICS,是一個靈活的交互式操作系統。
          60年后期,BELL脫離該組織,失去了靈活的交互式操作系統。
          1990年,有一個叫Ken.Tompson寫了一個SPACE TRAVEL的游戲,是在PDP-7上寫的,為了更有效地發揮PDP-7的強大功能,托普森和另一位科學家Dennis Ritchie開發了一個新的操作系統UNIX。此前Dennis創建了C語言。
          1973年Ken和Dennis用C語言重寫了UNIX。UNIX成為世界上第一個用高級語言寫的操作系統。
          C語言使UNIX更容易移植,移植是UNIX最重要的優越性
          70年代UNIX版本不斷更新,74年后,世界上所有的大學都可以以極小的代價獲得UNIX的源代碼,由此產生了很多重要的分支,包括一個BSD版,加州伯克利大學Berkeley Software Distribution。80年代AT&T重新命令UNIX版。
          l 1973年,美國高等院校開始使用UNIX
          l 1974年,Version 4
          l 1976年,Version5,6
          l 1978年,Bell開發出系統 III
          l 1979年,Berkekey分校發布BSD 3
          l 1982年,Berkekey分校發布BSD 4.2
          l 1983年,Bell開發出系統V
          l 1983年,Berkekey分校推出第一個內含TCPIP的BSD UNIX
          l 1985年,AT&T 推出SVR2,即系統V,RELEASE 2
          l 1987年,AT&T 推出SVR3
          l 1989年,AT&T 推出SVR4
          82年后,AT&T發布商業版,SYSTEM3以前均為內部使用。
          BSD起源于1974年,伯克利研究小組畢業的學生Bill Joy開發出更好性能的UNIX。如CSH、VI、虛擬存儲環境,這些性能后來被柔進了SYSTEM 5。
          1974  BSD     1979  2BSD     1982  3BSD
          1984  4BSD     1987  4.3BSD  4.5BSD 
          在微機領域,71年分支出XENIX
          81年   XENIX2.3  XENIX3.0  XENIX5.0遵守SVID
          85年 AT&T宣布一個標準SVID
          (Standard Called System U Imterface Defination)
          85年出現SYSTEM U/386與SVID完全兼容。
          當時主要的UNIX(XENIX、SYSTEMU、BSD)占80%。
          BSD 一般出現在大學
          SYSTEM為用于商業領域
          XINIX 只用于PC
          1.2 UNIX標準化
          1984年歐州5家成立X/OPEN協會。
          XPG3――XPG4
          SPE C 1170
          1985年IEEE公布POSIX 1003
          1988年5月 DEC、IBM、HP 公布OSF(BSD)AES
          1988年12月AT&T SUN公布UI?。⊿YSTEM V)
          1992年12月NOVELL購買USL轉讓給X/OPEN
          1993年9月WINDOWS NT出現使OSF和UI和解,產生COSE。包括XPG4、POSIX、SUID3、SVR4.3、AES、MOTIF、TCPIP。
          1.3 常見商業版本
          SUN SOLORIS純SYSTEM V
          IBM AIX4.3
          HP-UX
          IRIX遵守POSIX
          Tru64 UNIX 成熟、統一對COSE遵守最好。SPEC1170 MACH微內核完整、大而全。
          LINUX 自由軟件、微內核、多平臺支持各種協議。
          2 DIGITAL UNIX優點
          l 全64位軟硬件體系結構
          l 最快的64位平臺
          l SMP多線程共享程序、軟件升級不必重新連接、內存映射文件、 單一系統映像Cluster、VLM
          l 具存防崩潰性能
          l 超大規模收據庫訪問能力,支持大于17MB的文件
          l 規??缮炜s
          l 低成本管理
          l 最OPEN、最標準
          l 支持ADVFS、LSM、CLUSTER
          l 支持各種網絡
          l 國際化不另收費用
          l 支持IEEE標準,POSIX命令及實時線程
          l 支持FIPS 151 -2
          l 支持ISO/IEC  9945-1  1990
          l 支持X/OPEN 可移植性指南VOLUME4(XPG4)
          l 支持BSD4.3 4.4
          l 支持MIT XIIR5 ADK FOR XIIR6
          l 支持FIPS 160(ANSI)
          l 支持OSF MOTIF 1.2.3
          l 支持UNIX 93
          l 支持RFC
          l 支持ISO 9660(CDFS)
          l 支持NFS V.3
          l 支持SVR4 SVR3  SVID2 SVID3
          3 初次上機
          3.1 進入系統
          UNIX系統為多用戶,多任務操作系統,有很完善的用戶管理和安全機制,使用系統的每一個人都可以有一個用戶名,并有一個用戶識別碼UID,每個用戶至少屬于一個用戶組,可以同時屬于多個用戶組,組是UNIX系統為了方便用戶管理而建立的一個用戶集合,進入系統只需輸入自己的用戶名和口令,不需要輸入組名。
          l 主機終端
            按回車鍵開始登錄過程
          l 終端服務器
            按回車鍵登錄到終端服務器
            用c命令 connect 開始登錄過程
          l PC機  
           用telnet 命令
            login:用戶名
            password?。嚎诹睢  。ú伙@示出來)
            PC 用Telnet 開始登錄過程
          l Xwindows 
            輸入用戶名按回車
            輸入口令按回車
              可以選擇語言環境
          3.2 改變口令
          $ passwd 回車
          old password:輸入舊口令
          new password :輸入新口令
          reenter new password?。褐匦螺斎耄炞C
          3.3 chsh 改變login shell
          chsh
          /bin /sh 
          /bin /csh
          3.4 chfn 改變用戶電話號碼,力公室位置等信息
          chfn
          3.5 獲得幫助
          help   命令獲極少的幫助
          man  查有聯機手冊
          man cmd   查看cmd詳細手冊
          man –k keyword  查看與keyword相關的所有命令。
          man n cmd 
          一般情況下手冊被分組為1到8其8個組,某些命令在多個組中均有幫助信息,用man n 指定讀取n組中的信息。
          where is cmd
          查看cmd的絕對路徑。
          echo $PATH 
          which cmd
          查看cmd 是哪個目錄的cmd
          who am I     whoamI 
          查看自己的用戶名
          who,   w 
          查看當前誰在系統上
          users,  u 
          查看當前系統的用戶
          finger user 
          查看user 的信息
          ps  顯示當前進程狀況
          ps –u user 顯示用戶名為user 的進程狀況
          3.6 作業調度
          命令行可加&表示后臺執行
          例  f 77  test.f &  在后臺執行編譯命令。
          命令的輸入和輸出可重定向。
          例   ls  -l >dir.lis
               lmf rdg -<l1
          -表示標準輸入或標準輸出
          例  zcat file.z| [cd/tmp ;tar xvf -]
          前命令的結果可以作為后一個命令的輸入,稱為管道技術
          例ps –ef | more
            strings .*| grep user 
          作業調入前臺執行
          fg %job
          ^z 使當前作業掛起
          bg %job 使作業在后臺恢復執行
          at 批作業
          at time cmd 
          例 at 5pm Friday rm /tmp/*
          4 UNIX文件和目錄結構
          4.1 文件名和目錄名
          必須遵守以下規則:
          可采用除“1”外的任何ASCII字符
          以“.”開頭的文件名在普通用戶看來是隱蔽的。
          “.”代表當前目錄,“..”代表上級目錄。
          特殊字符用反斜桿引導“\”
          4.2 文件類型
          l 普通文件
          l 鏈
          l 特殊文件,如終端、通信設備、驅動器、FIFO、SOCKET
          4.3  文件系統結構
          倒樹結構
          /為根
          4.4 目錄樹
          /.文件系統的根目錄,超級用戶的HOME目錄
          /stand UNIX引導時使用的標準程序和數據文件
          /sbin  UNIX引導時使用的程序
          /dev  特殊設備文件
          /dev/console 控制臺
          /dev/lp 并口打印機
          /dev/rz** 硬盤塊設備文件
          /dev/rmton 磁帶文件
          /etc   系統管理及配置數據庫
          /opt   附加應用軟件包的根
          /home  用戶主目錄和文件
          /var   系統用文件、目錄、日志、記帳、郵件、假脫機
          /var/adm 系統日志,記帳
          /var/mail 用戶郵件文件
          /var/news 新聞目錄
          /var/opt  附加應用程序子目錄
          /var/tmp  臨時文件
          /var/spool 假脫機目錄
          /var/uucp  Uucp日志和狀態
          /usr    其它用戶可訪問的根
          /usr/bin  新的可執行程序命令
          /usr/sbin  新的系統命令,可執行程序
          /usr/lib   率
          /usr/include 頭文件
          /usr/examples  例子文件
          /usr/share/man  聯機手冊
          /usr/ucb  包含Bsd Unix兼容的軟件包
          /usr/ibn  多國字符程序數據
          4.5  目錄和文件的使用
             絕對路徑名  以/開頭,從根開始
             相對路徑名  其它以..,目錄名,文件名開始
          UNIX命令 相應DOS命令
          pwd  列出當前工作目錄  cd
          ls   列目錄內容 dir/w
          ls -l           dir 
          ls -a           dir/a
          ls -r           dir/s
          ls -x           dir/w
          ls –l |more          dir/p
          ls –F   用符號表示簡單屬性
          ls -q  用?表示非打印字符
          cat 顯示文件內容
          cat file         type file
          cat file1 file2 file3     type file1+file2+file3
          cat -n file  顯示行號
          cat -u file  顯示非打印字符  -u 輸出無緩沖
          cat -r file  多個空行合為1行
          cd  改變工作目錄
          cd usr          cd dos 
          cd /usr                    cd  c:\dos
          cd ..                         cd ..
          cd ../..                        cd ..\ ..
          cd 
          mv  移動文件或目錄
          mv file1 file2          ren file1 file2
          mv file1 dir2           move file1 dir2
          mv dir1 dir2       xcopy dir1 dir2  deltree dir1
          mv –i  如果目標文件存在則提示
          mv -f 強制拷貝
          cp   拷貝文件
          cp file1 file2     copy file1 file2
          cp  -i file1 file2  提示覆蓋
          cp  -r dir1 dir2   xcopy /s dir1 dir2
          cp  -p  屬性不變
          cp file1 file2 file3 file4…target 合并文件
          ln 建立軟鏈        dos 下只有用
          ln source des        norton tools 等工具才能實現,但chkdsk將檢查出錯誤。
          ln  -s source 符號連接忽略des屬性
          ln  -f source des
          rm 刪除文件或目錄
          rm file1          del file1
          rm *           del *.*
          rm -r dir          deltree  dir
          rm -i
          rmdir  刪除目錄
           條件:目錄必須是空目錄
          rmdir dir          rd dir
          mkdir 創建子目錄
          mkdir dir        md  dir
          mkdir  -m 指定使用mode
          mkdir  -p ../dir1/dir2/dir3
          file 查看文件類型
          file *
          find 查找指定文件
          find path expression
           -print 打印文件所在路徑
           -exec cmd 對找到的文件執行cmd命令
           -atime n 只查幾天以前的文件
          pg 分頁顯示文件
          more 分頁顯示文件
          lp  打印文件
          lpstat  查看打印隊列
          lprm 刪除打印作業
          cancel 
          4.6 文件屬性
          4.6.1 定義
          $ ls –l 
          total 24094
          -rw-r--r--   1 root     system    176584 Jul  5 17:09 3500install.pdf
          -rw-r--r--   1 root     system      2593 Jun 13 12:48 DXsession
          -rw-r--r--   1 bin      bin         2476 Apr 13  1999 GENERIC
          lrwxr-xr-x   1 root     system         7 May 31 16:41 bin -> usr/bin


          -rw-------   1 root     system       501 Jun 23 22:31 tcr2
          drwxrwxrwt   3 root     system      8192 Sep  3 12:59 tmp
          drwxr-xr-x  29 root     system      8192 Aug 31 14:22 usr
          lrwxr-xr-x   1 root     system         7 May 31 16:38 var -> usr/var
          -rwxr-xr-x   1 root     system   9549088 Jun  1 12:29 vmunix
          $
          使用ls –l命令顯示文件的全部屬性,其中第一個域反應文件的類型和訪問屬性,第1列為
          - 表示為普通文件
          d  表示為目錄文件
          l 該文件為連接
          第2,3,4列為文件屬主讀,寫,執行的訪問標識,如第2列為-則不可讀,為r 則表示可讀。
          第5,6,7列為文件所屬組用戶的讀,寫,執行的訪問標識。
          第8,9,10列為其它組用戶的讀,寫,執行的訪問標識。
          第2個域為該文件的連接數,如果某目錄文件的連接數越大,其子目錄數就越多。
          第3個域為該文件的屬主。
          第4個域為該文件的屬組。
          第5個域為該文件的大小。
          第6個域為該文件的創建時間。
          第7個域為該文件的文件名。
          第8個域如果不空的活,則為該文件所連接文件路徑。
          4.6.2 改變文件訪問屬性
          $ chmod nnn file
          $ chmod [ugo][+-][rwx] file
          4.6.3 改變文件屬主
          $ chown user file
          $ chown user:group file
          4.6.4 改變文件屬組
          $ chgrp group file
          4.6.5 更新文件訪問時間
          $ touch file
          5 命令,重定向,管道和過濾器
          5.1 命令格式
          cmd  [ [-option [option value] …] [parameter1] [parameter2]….
          每一條Shell命令由一個命令動詞或文件名開始,可以跟一個或多個命令選項,一個或多個命令叁數,按回車將命令提交到系統。大部分UNIX命令是一個可執行文件,位于環境變量PATH或path所指示的路徑中。命令也可以是shell內部命令,命令還可以是自己編譯連接的可執行文件或命令踋本(批處理)文件。一個命令行可以有65536個字符,如果一行寫不完,可用\符號續行,在命令行中可以采用*和%等通配符。
          ls
          ls –l
          ls –l /usr
          ls –l /etc/host*
          在一個命令行中可以輸入多個命令,但必須用分號分隔開。
          cd /usr/users/user01; ls –l; pwd
          5.2 重定向
          在缺省情況下,命令的輸入是標準輸入設備鍵盤,輸出是標準輸出設備如終端顯示器,可以通過>和<將命令的輸出和輸入重定向到文件或其它設備。
          $ ls –l >dir.txt
          $ more < .login
          $ echo “” > /usr/sybase/sybase.log
          在缺省情況下,使用>將命令寫到某文件中,如該文件不存在,本命令創建該文件,如果該文件存在,該文件的內容被本命令的輸出結果覆蓋。如果使用>>符號,則命令的輸出被添加到該文件的后面。
          5.3 管道和過濾器
          UNIX命令管理將一個命令的輸出作為另一個命令的輸入,在同一個命令行中有多個命令,后一個命令處理前一個命令的輸出。
          ps –ef|grep oracle
          以上命令查找命令行或用戶名中含有字符串oracle的輸出。 ps –ef命令輸出系統中所有進程的長格式信息,通過grep oracle命令處理后,不包括oracle的行全部被過濾掉了。象grep這種命令叫過濾器。其它過濾器命令如下:
          wc   統計字數,行數,詞數
          grep   按正規表達式進行模式檢索
          -i  不區別大小寫
          -v  不匹配的行
          -n   行前加行號
          -c   只輸出行數
          -l   只輸出匹配的文件名
          fgrep   只是字符串,含特殊字符時高速
          grep   有限制的規則表達式,比較快
          cgrep   完全正則表達式,功能最全
          cut
          -f   域
          -d  分隔符
          -b
          colum   刪列
          colum 3.5,textfuke  刪掉  3~9列
          sort  -b cdfmnru  +關健字開始位置-關健字結束位置,輸入文件
          -f   不區別大小寫
          -m只合并
          -r  降序
          -u  多個相同行只輸出1行
          uniq  多個重復行歸納為1行
          join [-an.][-e串][-j(n)(m)][-o字段][-t字符]文件1文件2
          -a與文件<n>不匹配的全輸出n=1,2
          -e  無對應字段時輸出指定串
          -jnm   將文件n的第m個字段作關鍵字進行連接
          -o


          6 UNIX命令匯總
          6.1 alias     別名     ksh、csh命令
          alias  顯示所有當前命令的別名
          alias name  顯示別名為name的命令
          alias name cmd  置cmd命令的別名為name csh
          alias name=cmd  置cmd命令的別名為name ksh
          6.2 unalias   取消別名
             unalias name
          6.3 bg %jobid  恢復掛起的作業到后臺運行
          6.4 cal  顯示當前日的月歷
             cal [[month]year]
             cal    2  1996
          6.5 chown owner file  改變文件屬性
             chown -h  改變一文件鏈的屬性
             chmod.chgrp
          6.6 啟動一個cshell命令解釋程序
            csh
          6.7 date  顯示和設置日期
             date mmddhhmm.yy設置月日時分年
          6.8 echo string 在標準輸出上回顯string
          6.9 env  顯示環境變量
          env name=value  置環境變量name值為value
          setenv
          setenv name=value  unsetenv name
          6.10 exit 結束用戶登錄
          6.11 export variable
          在sh 和ksh下用戶變量export后才可成為全局變量
          6.12 fg %jobid將掛起的作業調入前臺執行
          6.13 fmt file 簡單正文格式化
             fmt –w width  文件輸出的行寬為width
               fmt –c  頂部對齊
               fmt –s  防止短行合并輸出
          6.14 head file  顯示文件頭部10行
          head –n file  顯示頭部n 行
          6.15 history 顯示以前被執行過的命令csh ,ksh 
          6.16 jobs 顯示所有運行的任務
          在命令行尾加&使作業在后臺執行
          正在執行作業時按ctrl-z (csh)使作業掛起
          然后可用jobs,fg,bg等命令
          6.17 kill pid  給進程發中止信號
          kill-g pid 強制殺除進程
          6.18 ksh 啟動ksh 命令解釋程序
          ksh
          6.19 more 命令
          more  file   分頁顯示file 內容
          more –c    顯示前清屏
          more –s    多個空行壓縮為1行
          子命令
          按空格:向前翻1屏
          按回車:向前滾1行
          b    回翻1屏
          G    到多少行,缺省第1行   nG  到第n行
          P%  到百分之一      np 到第n%處
          m    標記一個位置     m[a-z]  命名位置
          ‘     返回標記的位置   ‘[a-z]
          v     運行editor  編輯文件
          /.?   找一串
          q   exit
          :n   跳到下一文件
          :p    前1文件
          6.20 news 查看新消息
          news –a  顯示所有新消息狀態
          news –n  顯示所有新消息狀態
          6.21 nice cmd  以低于正常優先執行命令
          nice =n cmd  設置優先級
          6.22 mohup cmd  cmd 命令執行時不掛起
          6.23 r    ksh 下重執行前1個命令
          6.24 resume  %jobid  啟動被掛起的作業
          6.25 script file
             將輸出、輸入到終端的信息同時寫入文件中,script –a    同時寫入文件中,-a是添加。
          6.26 set   顯示當前變量值
          set name=value 
          uset name
          6.27 sh 啟動bsh 
          sh
          6.28 spell file  查找文件的拼寫錯誤
          spell –b   美國英語拼寫
          6.29  stop %jobid  掛起正在運行的作業
          6.30  stty  顯示設置終端選項
             sttt –a 顯示當前終端所在選項
             stty –g  顯示當前設置,格式可作為stty實參
                line speed 置波特率
             -t type  終端類型
             columns n  設置列數
          6.31 tail file  顯示文件最后10行
          tail –n file  顯示文件最后n 行
          6.32 tee file  將輸入復制到輸出及文件file中
          tee –a file  添加到file 尾
          6.33 touch file  更新文件的存取時間
          touch –a   只更新訪問時間
          touch –m  只更新修改時間
          touch –c  防止建立以前不存在的文件 
          7 ed 編輯器
          ed file 
          出錯時,h提供簡單幫助信息,H提供詳細幫助信息,用a,c,I進入輸入方式,在單獨一行上用,回到命令格式保存文件w.   Wq =x 
          p  .p 顯示當前行
          =  顯示當前行的行號
          np  顯示第n 行
          1,6p  顯示1-6行
          $p   顯示最后一行
          1,$p顯示所有行
          +  顯示下一行
          - 顯示上一行
          n  顯示當前行及行號
          nn  顯示第n行及行號
          x,yn  顯示x—y行及行號
          l   顯示當前行包括非打印字符
          d   刪除當前行
          u   取消最后命令
          s /str1/str2   用 str2 取代str1
          s/str1//    刪除str1
          2s/str1/str2/n   第2 行的str1改為str2并顯示修改后的行
          s/str1/str2/g   全程替換
          <first>,<end>m<line>
          2,4m6    第2—4行移到第6行之后
          t 塊拷貝格式同m
          r file  將文件讀到當前行后
          <first>,<end> w file   寫塊到文件
          !cmd   執行shell命令
          /模式/   正向查找命令
          ?模式?反向查找命令
          //  繼續找第2個
          g/the/p   全程查找并顯示
          g/the/s/the/that/   全程查找the并用that代替the 
          v與g命令相反
          v/the/n   全程查找不包含the 并顯示
          無字符
          ^代表行首   $行尾    .任意字符   *任意多個與前面相同字符
          /A….B/   以A開關B結尾中間3個任意
          . s/. /.     第1個 . 當前行
                   第2 個 . 任意字符
                   第3個 . 字符
          s/xx*/y/   用y代替2個或2個以上的x
          s/x*y/y/   用y代替以x開頭以y結束的所有字符
          &代表第1個模式內容
          /模式1/(模式1)/=/模式1/(&)/
          [xz]表示x或z
          [0-9]表示0-9的任意數字
          8  vi編輯器 
          vi file         vi -r 只讀模式    vi -r  恢復  -wnumber 指定窗                口大小
          vi +67 file      光標停在第67行
          命令模式   i,I,o,O,a,A進入輸入模式,;/?最后一行模式
          最后一行模式
          :q  退出  :w寫文件  :wq存盤退出    :q!  Quit  :x存盤退出
          命令模式     zz存盤退出   如未修改不存盤退出
          移動光標
          l   空格 右         w  W  下詞詞首    5w  前移5個詞
          h   ^H 左         e  E  詞尾或標點
          j   ^N 下         b  B  返回詞首
          k   ^P 上         )    下句句首
          0   行首        (    上句句首
          &  行尾         }    下段句首
          +  下行行首   {    上段名首
          -  上行行首   ]]   下區第1字符
          [[    上區第1字符
            H 光標到屏幕布頂部
          M 光標到屏幕布中部
          L 光標到屏幕布底部
          ctrl -F  向前一屏
          ^D  向前半屏
          ^B  向后一屏
          ^U  向后半屏
          ^Y  向上滾1行
          ^E  向下滾1行
          G   文件尾, nG到第n 行
          z+  向上翻頁
          z^ 向下翻頁
          z. 當前行到中間
          z-   當前行到底部
          rn   用字符n代替當前字符
          3rn  用n代替當前3個字符
          Rstring ESC  用輸入串代替當前字符
          cw string ESC 用string代替當前光標到詞尾的串
          5cw string ESC  用string代替當前光標到第5個詞尾的串
          cb,CB string ESC用string替換詞首到當前光標位置的串
          c&string ESC 用string替換到行尾的字串
          s刪當前字符并開始輸入正文
          S 刪當前行并開始輸入正文
            ~  改變當前字符大小寫
          x  刪當前字符
          X  刪當前字符左邊的字符
            dw  刪光標到詞尾的串
            d :return=dd   刪兩行
              d [[    刪光標到區首
            D=d&
          fn   移到跟當前光標后面的“n”字符處
          Fn   移到跟當前光標前面的“n”字符處
          fn   移到跟當前光標后面的“n”字符前一列
          Fn   移到跟當前光標前面的“n”字符后一列
            ;  繼續f,F,t,T查找
            ,  反向f,F,t,T查找
           ?。篴ddr    到指定行
            :set nu   當前緩沖區加行號
            m [a-z]   做標記
            ‘a    返回原記號處
            ecol   定位到指定行
            J   光標所在行與下行合并
            u   取消前次操作
          U     光標未離開當前行之首,取消從光標移來所做的修改
            p   將緩沖區內容插入光標右邊,添加新行
          :e!    取消最后一次寫文件以來所做的所有修改
          .  重復上一個命令
          9 圖形界面
          9.1 進入系統
           
          在此輸入用戶名,按回車
           
          在此輸入口令,按回車進入系統




          在此可選擇你所熟悉的語言環境
           

           
          進入系統后,可用dtterm,DECterm,Xterm等仿真終端,輸入UNIX命令。

          9.2 終端仿真  dtterm  Decterm
           
          9.3 輸入法設置
           
          選擇默認輸入法,指定啟動和停止輸入法的熱鍵,各種輸入法的切換熱鍵。退出系統并重新登錄后,設置生效。
          9.4 編輯器
           
          操作與PC機Notepad完全相同
          9.5 其它X實用程序
          在程序組中有多級程序組。
          10 編程
          10.1 DEC  FORTRAN
          F77  [option]  filename  [option]
          源文件以.f,.for,.FOR結尾
          目標文件以.o結尾
          .F結束的文件必須先用C予處理程序處理
          .r和.E解釋為ratfor或ef1源程序
          被 cpp予處理過的源程序
          .options
          -o output   生成目標文件名
          -v     生成l列表文件
          -w1    列警告信息,包括未被使用的變量
          -W
          -cross-reference   列表中含交叉索引
          -c     強制生成目標文件,而不生成或執行代碼
          -d-lines   編譯第1列為D的行
          -go     無符號信息
          -g1     應跟蹤信息,行信息缺省
          -g2或-g  應符號調試信息和跟蹤信息自設置 O。
          -g3   應符號調試信息和跟蹤信息但調試信息不精確
          -machine-code   在列表中顯示機器語言信息
          -o0    無優化
          -o1    局部優化
          -o2    全局優化包含o1
          -o3    附加全局優化包含o2
          -o4或o包含內部行擴展包含o3
          -o5  軟件管道優化
          -om    連接后優化
          -tune generic ︱host︱ev4︱ev5
          改進針對本機或本cpu的性能,其它cpu下降
          -show code  顯示機器代碼
          -show include  顯示include文件中語句
          -show nomap   無符號表示
          -show xvef 
          -warn argument-checking
          -warn declaretions
          -warn noalignments
          -worn nogenerl
          -warn nouncalled
          -warn nouninitialized
          -warn nounreachable
          -warn truncated-sourse
          -warn unused
          -convert cray
          -convert IBM
          10.2 dbx技巧
          dbx和ladebug都是UNIX下調試程序
          ladebug是DEC開發的增強型符號調試程序
          ladebug  a.out
          help   查看聯機幫助
          help cmd 
          alias    查看和設置別名
          print   顯示變量或內存串值 
          ox140001000/100x  轉貯內存
          x 長字  xx雙字  x字  s串  c字符  I機內代碼
          where   在堆棧中尋找變量值
          ro   為函數返回值
          r16  函數變量1
          r17  函數變量2

          r20  函數變量5
          多于5個變量被壓入棧
          assign   改變內存值 
          print* (long *) ox11fffff20
          ox632f73756c  70322d
          assign  ox11fffff20=17
          ox17
          print* (long *)ox11fffff20
          ox17
          stop in      stop  in  
          stopat
          file
          step   stepi
          next   nexti
          cont  conti
          w    wi
          l    li
          程序代碼位置   ox120000000
          數據代碼     ox140000000
          set  &hexin=1     所在輸入均為16進制
          set  &hexints=1   所在輸出均為16進制
          &curpc
          &curline
          use  /dir1/dir2/…
          startddr,endaddr/mode
          startddr,endaddr/count mode
          d  10進制word
          D  10進制long
          o八進制word
          O 八進制long
          x 十六進制 word
          X 十六進制 long
          b  八進制  byte
          c  字符   byte
          s   串    Asciz
          f  單精度  real
          g  雙精度  real 
          i  反匯編  指令
          ?!〗忉?
          !string   ?string  串查找
          alias ,unalias
          予定義的別名
          a  assign  f   func
          b  stop at  h   history
          bp stop in   j status
          d  delete  li &curpc/10I;&curpc=&curpc+40
          l  list
          n   next            q    quit
          u:  nexti            r   rerun
          p   print           ri   record input
          pd  printf  “%d”    ro  recond ouput
          po  printf “%o”      s    step
          pr  printregs        si   stepi
          ps  printf “%s”      u  list  &curline-9:10
          px  printf “ox%x”    w list &curline-5:10
          wi &curpc-20/10i     W list &curline-10:20
          what is  變量       delet all
          where is   變量      file
          which    變量      goto line
          patch f00=20  
          patch f00=20          catch ignore信號
          trace    at           set,useset
          return              source 文件名 
          attach
          dbxinit 文件,初始化命令,設置,
          10.3 make ,makefile, Makefile  s.makefile
          例:persee:persee.for  cudl:a.o   l:b.o
                   f>>-c-g-i8-r8-dorble-size128-g\
                    -convert=cray persee.for cudl:u.0  l:b.0
          cndl:u.o:cndl:u.for
             f>>-c-g-i8-r8-double-size128-convert=cray\cndliu.for
          l:b.o:lb.for
             f>>-c-g-i8-r8-double-size128-convert=cray\l:b.for
          make  -b   兼容老版makefile
          -d     Debug 模式
          -f makefile
          l:b:l:b(file1.0)l:b(file2.0) l:b(file3.0)
          .c.a:
             &(cc)-c&(CFLAGS1)&<
             ar  rv $@  $*.0
             rm-f  $*.0
          10.4 使用軟盤
          n 軟盤文件系統
          $ fddisk   -fmt   /dev/rfdoa
          $ fddisk   -fmt  -f  /dev /rfdoc
          $ newfs   /dev/fd0c   rx23
          $ mount  /dev/fd0c  /mnt
          $ cp  file /mnt
          $ umont  /mnt
          n DOS格式軟盤
          # ln –s /dev/rfd0c /dev/fddrive
          $ /usr/bin/mtools/mdir
          $ /usr/bin/mtools/mcopy file a:
          n 原始格式
          $ tar cvf /dev/rfd0a mydirs
          11 UNIX藝術
          對UNIX使用時間越長,對UNIX的了解就越深入,剛開始使用時,每天都有新的發現,二三年以后逐漸開成自己的風格。
          使用UNIX是一種藝術享受,而不是攔路虎,通向藝術之路。
          11.1 選擇你鐘愛shell
             每一種shell都是進入時初始執行文件。
             sh     ksh       profile
             csh               login       cshrc
            /etc下             csh.login    所有csh用戶進入時初始化
          設置環境變量
          設置path和manpath
          設置終端參數
          執行用戶命令
          賦置別名
          例:  csh                保存歷史
                .login                           set savehist=40
               set term=vt320                   set proupt=“hostmane\!.”
               set editmode=emacs  
               set prompt=“‘whomni’ @‘hostname’\!>”
               set history=100
               setenv  lang=zh.cn
             Ksh profile
             SYBASE=/usr/sybase
             DS2UERY=SYBASE
             EXPORT.SYBASE DS2UERY
          alias   別名
          alias  dir   ls 
          alias  type  cat
          alias  move “mu-i”
          alias   del  rm
          alias   md  mkdir
          alias   rd  rmdir
          alias  deltree  “rm –r”
          alias  ren  mv
          alias  cipy  “cp-i”
          alias  xcopy  “cp-r”
          11.2 使目錄間轉換更容易
          set cdpath=(/usr/rsers/rser1/persee  /usr/users/user1/conpate/mut  /usr/examples/motif/cpuinfo)
          %pwd
          %/usr/users/user1
          %cd mut
          %pwd
          %/mut
          %cd persee
          %pwd 
          /usr/users/user1/persen
          pushd   popd   dirs
          pwd 
          /usr/inolude
          poshd  sys
          pwd /usr/include/sys
          pushd /usr/users/user01
          popd +1
          pwd
          11.3 電子郵件來時通知
          unset mail 
          biff y  xbiff


          12 TCP/IP網絡簡介
          12.1 IP地址
             ping  195.1.1.1
             ftp   195.1.1.1
             telnet   195.1.1.1
          使用機器名,hosts中維持1個名稱和地址轉換數據庫格式
          195.1.1.0 網絡名
          195.1.1.1 主機名
          12.2 ftp  使用
              ftp   主機/地址
                  user
                 password
          ascii  binary  cd  lcd  pwd  ls  lpwd  get  put  mget  mput  prompt  vervose  bye  oper  bye  close  help
          12.3  telnet終端仿真
          telnet hostname
          Digital UNIX (dec3000.newdesign.com.cn) (ttyp1)
          login: user1
          passwd:
          $
          設置終端屬性:
          $ TERM=vt100
          $ export TERM
          $ stty erase ‘^?’
          12.4   X終端仿真
          Huminbird Exceed
          執行Xconfig,選擇Communication->XDMCP-broadcast->OK,啟動EXCEED,可以看到UNIX主機已在列表中。點擊進入。
          eXcursion
          執行eXcursion control panel選擇XDMCP->Enable XDMCP->選擇XDMCPbroadcast,啟動eXcursion,點擊進入想連接的UNIX主機。

          13 UNIX的批處理 Shell Script
          13.1 前言
              在DOS 中,你可能會從事一些例行的重覆性工作,此時你會將這些重覆性的命令寫成批次檔,只要執行這個批次檔就等於執行這些命令。大家會問在UNIX中是否有批次處理這個東東,答案是有的。在UNIX中不只有如DOS 的批次處理,它的功能比起DOS 更強大,相對地也較復雜,已經和一般的高階語言不相上下。在UNIX中大家都不叫做批次檔,而叫做Shell Script。
              一般而言,Shell Script的地位和其它的可執行檔(或命令)是完全相同的,只不過Shell Script是以文字檔的方式儲存,而非二進位檔。而執行Shell Script時,必須有一個程式將其內容轉成一道道的命令執行,而這個程式其實就是Shell ,這也就是為什麼我們叫做Shell Script的原因(往後我們稱為Script)。不同Shell 的Script基本上會有一些差異,所以我們不能將寫給A shell 的Script用B shell 執行。而在UNIX中大家最常使用Bourne Shell以及C Shell ,所以這堂課就介紹這兩種Script的寫法。

          13.2 將文字檔設為可執行的Shell Script
              如果我們已經寫好Script,如何將其設成可執行檔呢?因為Script其實是一個可執行檔,所以必須將其存取權設定成可執行。我們可以使用下列命令更改存取權:
                  chmod u+x filename      只有自己可以執行,其它人不能執行
                  chmod ug+x filename     只有自己以及同一群可以執行,其它人不能執行
                  chmod +x filename       所有人都可以執行
              而我們如何指定使用那一個Shell 來解釋所寫的Script呢?幾種基本的指定方式如下所述:
          1. 如果Script的第一個非空白字元不是"#",則它會使用Bourne Shell。
          2. 如果Script的第一個非空白字元是"#"時,但不以"#!"開頭時,則它會使用C Shell。
          3. 如果Script以"#!"開頭,則"#!"後面所寫的就是所使用的Shell,而且要將整個路徑名稱指出來。
          這里建議使用第三種方式指定Shell ,以確保所執行的就是所要的。Bourne Shell的路徑名稱為/bin/sh ,而C Shell 則為/bin/csh。
          <eg>



          1. 使用Bourne Shell






                  2. 使用C Shell






                  3. 使用/etc/perl
                     






              除了在Script內指定所使用的Shell 外,你也可以在命令列中強制指定。比如你要用C Shell 執行某個Script,你可以下這個命令:
                  csh filename
          此時的Script的存取權就不一定要為可執行檔,其內部所指定的Shell 也會無效,詳細的情形後面會討論。

          13.3 Script的基本結構及觀念
              Script是以行為單位,我們所寫的Script會被分解成一行一行來執行。而每一行可以是命令、注解、或是流程控制指令等。如果某一行尚未完成,可以在行末加上"\" ,這個時候下一行的內容就會接到這一行的後面,成為同一行,如下
                  





              當Script中出現"#" 時,再它後面的同一行文字即為注解,Shell 不會對其翻譯。
              在Script中要執行一個命令的方法和在命令列中一樣,你可以前景或背景執行,執行命令時也會需要設定一些環境變數。
              Script的流程控制和一般高階語言的流程控制沒有什麼兩樣,也和高階語言一樣有副程式。這些使得Script的功能更加強大。
              為了達到與高階語言相同的效果,我們也可以在Script中設定變數,如此使Script成為一個名付其實的高階語言。

          13.4 Bourne Shell
          13.4.1 變數
              Bourne Shell的變數型態只有字串變數,所以要使用數值運算則必須靠外部命令達成目的。而其變數種類有下列幾種:
          1) 使用者變數
                  這是最常使用的變數,我們可以任何不包含空白字元的字串來當做變數名稱。
                  設定變數值時則用下列方式:
                      var=string
                  取用變數時則在變數名稱前加上一"$" 號。
                  <eg>






                      結果如下:
                      name
                      Tom
          2)     系統變數(環境變數)
                  和使用者變數相似,只不過此種變數會將其值傳給其所執行的命令。要將一使用者變數設定為系統變數,只要加上:
                      export var
                  <eg>




                      ┌———————┐

                  以下是使用者一進入系統之後就已設定好的系統變數:
                      $HOME       使用者自己的目錄
                      $PATH       執行命令時所搜尋的目錄
                      $TZ         時區
                      $MAILCHECK  每隔多少秒檢查是否有新的信件
                      $PS1        在命令列時的提示號
                      $PS2        當命令尚未打完時,Shell 要求再輸入時的提示號
                      $MANPATH    man 指令的搜尋路徑
          3)     唯讀的使用者變數
                  和使用者變數相似,只不過這些變數不能被改變。要將使用者變數設成唯讀的,只要加上:
                      readonly var
                  而若只打readonly則會列出所有唯讀的變數。還有一點,系統變數不可以設定成唯讀的。
                  <eg>








                      結果如下:
                      Tom
                      name: is read only
                      readonly name
                      readonly ......
          4)      特殊變數
                  有些變數是一開始執行Script時就會設定,并且不以加以修改,但我們不叫它唯讀的系統變數,而叫它特殊變數(有些書會叫它唯讀的系統變數),因為這些變數是一執行程式時就有了,況且使用者無法將一般的系統變數設定成唯讀的。以下是一些等殊變數:
                            這個程式的執行名字
                      $n      這個程式的第n個參數值,n=1..9
                      $*      這個程式的所有參數
                      $#      這個程式的參數個數
                      $$      這個程式的PID
                      $!      執行上一個背景指令的PID
                      $?      執行上一個指令的返回值
                  當你執行這個程式時的參數數目超過9 個時,我們可以使用shift 命令將參數往前移一格,如此即可使用第10個以後的參數。除此之外,我們可以用set 命令改變$n及$*,方法如下:
                      set string
                  如此$*的值即為string,而分解後則會放入$n。如果set 命令後面沒有參數,則會列出所有已經設定的變數以及其值。
                  <eg>
          檔名:ex1  參數:this is a test














                      結果如下:
                      Filename: ex1
                      Arguments: this is a test
                      No. of args.: 4
                      2nd arg.: is
                      No. of args.: 3
                      2nd arg.: a
                      Arguments: hello, everyone
                      2nd arg.: everyone
              值得一提的是,當你想從鍵盤輸入一變數值時,你可以使用下面的命令:
                  read var1 var2.....
              這時read會將一個字分給一個變數。如果輸入的字比變數還多,最後一個變數會將剩下的字當成其值。如果輸入的字比變數還少,則後面的變數會設成空字串。
                  如果需要處理數值運算,我們可以使用expr命令。其參數及輸出列於附錄A。
          13.4.2 執行命令
              在Bourne Shell中有五種方法執行一個命令,而這五種方式所產生的果有些許的不同。
          1) 直接下命令
                  這個方式和在命令列中直接下命令的效果一樣。
          2) 使用sh命令
                      sh command
                  這個檔案必須是Bourne Shell的Script,但這個檔案并不一定要設成可執行。
                  除此之外和直接下命令的方式一樣。
          3) 使用"."命令
                      . command
                  這時和使用sh命令相似,只不過它不像sh一般會產生新的process ,相反地,它會在原有的process 下完成工作。
          4) 使用exec命令
                      exec command
                  此時這個Script將會被所執行的命令所取代。當這個命令執行完畢之後,這個Script也會隨之結束。
          5) 使用命令替換
                  這是一個相當有用的方法。如果想要使某個命令的輸出成為另一個命令的參數時,就一定要使用這個方法。我們將命令列於兩個"`" 號之間,而Shell 會以這個命令執行後的輸出結果代替這個命令以及兩個"`" 符號。
                  <eg>
                      str='Current directory is '`pwd`
                      echo $str
                      結果如下:
                      Current directory is /users/cc/mgtsai
                      這個意思是pwd 這個命令輸出"/users/cc/mgtsai",而後整個字串代替原來的`pwd` 設定str 變數,所以str 變數的內容則會有pwd 命令的輸出。

                  <eg>
                      number=`expr $number + 1`
                這就是先前所提要作數值運算的方法,基本上expr命令只將運算式解,而後輸出到標準輸出上。如果要將某變數設定成其值,非得靠命令替換的方      式不可。這個例子是將number變數的值加1 後再存回number變數。
          13.4.3 流程控制
              在介紹流程控制之前,我們先來看看test命令。test命令的參數是條件判斷式,當條件為真時則傳回非零值,而條件為偽時則傳回零。在所有的流程控制都必須用到test命令來判斷真偽。而test命令的使用方法則列於附錄B。
              <eg>
                  test $# = 0
               如果執行這個程式沒有參數時,會傳回非零值代表"$# = 0"這個條件成立。反之則會傳回零。
              以下介紹各種流程控制:
          1) if then
               
                  語法如下
                                                  
          if (condition)               
          then                           
                          then-commands            
                      fi                              
                                                      
                  condition 是一個test命令。往後所介紹的各種流程中的condition 都是test命令。
                  <eg>
          檔名:chkarg







                      $ chkarg Hello
                      Arg1: Hello
                      $ chkarg
                      $

          2)   if then else
                  語法以及流程圖如下
                                                       │       FALSE
                      if (condition)              <condition>————————┐
                        then                           │TRUE            │
                          then-commands           then-commands    else-commands
                        else                           ├—————————┘
                          else-commands                │
                      fi
          3)    if then elif
                  語法以及流程圖如下
                                                      │       FALSE
                      if (condition1)             <condition1>———┐
                        then                        │TRUE      │      FALSE
                          commands1              commands1  <condition2>┐
                      elif (condition2)                │          │TRUE    │
                        then                       │   commands2    commands3
                          commands2               ├—————┴—————┘
                        else                       │
                          commands3
                          commands3
                      fi
                  <eg>
                      echo 'word 1: \c'
                      read word1
                      echo 'word 2: \c'
                      read word2
                      echo 'word 3: \c'
                      read word3
                      if (test "$word1" = "$word2" -a "$word2" = "$word3")
                        then
                          echo 'Match: words 1, 2, & 3'
                      elif (test "$word1" = "$word2")
                        then
                          echo 'Match: words 1 & 2'
                      elif (test "$word1" = "$word3")
                        then
                          echo 'Match: words 1 & 3'
                      elif (test "$word2" = "$word3")
                        then
                          echo 'Match: words 2 & 3'
                      else
                          echo 'No match'
                      fi
          4)  for in
                  語法以及流程圖如下 
                                   

          posted on 2008-06-25 15:18 Picasso 閱讀(243) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 丘北县| 台中市| 乐昌市| 讷河市| 六盘水市| 龙江县| 固阳县| 聂荣县| 鞍山市| 万山特区| 林西县| 唐山市| 于都县| 洪洞县| 伊宁市| 甘肃省| 陇西县| 达日县| 志丹县| 筠连县| 射阳县| 柏乡县| 曲靖市| 宁武县| 潞西市| 五常市| 伊宁市| 临颍县| 绥化市| 同仁县| 准格尔旗| 吴川市| 罗平县| 甘谷县| 宝丰县| 随州市| 铜梁县| 从化市| 柳江县| 昭平县| 灵璧县|