重要指令概觀

由 匿名使用者 在 週五, 2012/02/24 - 15:19 發表

 

資料來源:http://www.qdm.ks.edu.tw/wakiki/pcmemo/linux2.htm

僅供個人參考備查

一、unix下一些控制鍵的用法 :

Ctrl-C 中斷程式或 shell script

Ctrl-D 終止檔案輸入(EOF), 或 Logout

Ctrl-O 不要程式的輸出, 但不中斷程式

Ctrl-Q 繼續往下顯示

Ctrl-S 暫停往下顯示

Ctrl-U 刪除整行

Ctrl-W 刪除命令行的最後一個字(Word)

Ctrl-Z 暫停程式或 shell script


改變目錄和檔名的捷徑

    .     表目前所在的目錄

    ..    表目前所在目錄的上一層目錄

    ~     使用者的根目錄

    /     根目錄

    *以上可配合 ls,rm,mv,cp...等指令,靈活運用
    examples:
    %cd .
    %cd ..
    %mkdir ~/dir1

檔名字元取代

    * 取代一組字元

    ?   取代一個字元

    [ ] 可於[ ]內列舉適當取代的字元

    -   在[ ]內指定範圍

    examples:
    %ls -l  *.c    列出現在目錄中所有c的檔案
    %ls [a-z]*     列出現在目錄中所有以a,b,...,z 開頭的檔案
    %cp [abc]* dir  將以a,b,c為首的檔案拷備至dir目錄下


二、有關線上查詢的指令

1.man
用來介紹UNIX系統各個命令的詳細用法。

    格式:man command
          command 為 UNIX 所接受的命令
    %man man
    %man pwd


2.learn
幫助初學者學習使用系統之工具,欲結束程式打入bye即可。
    (PANKU專用) %learn


3.info(help)
同learn指令,為幫助初學者,或忘記如何下指令之使用者之諮詢程式。
    (PANKU專用) %help


三、有關檔案、目錄的指令

1.pwd 列出現在的工作目錄
    %pwd
    所顯示如下行所示
    /home/s2847007


2.ls列出目錄內的檔案名稱
   格式:ls [options][directory][file]
    options:
    -a 印出全部的檔案。
    -l 列出檔名外,並加上各種資訊。
    -F 加此參數則會在目錄檔後加上 /,執行檔後加上 *,鏈結檔加上 @,其
       餘為一般檔案。 
    -g 列出檔案的所屬群體名稱。 
    -t 列出的檔名依日期排序,若沒指定則依檔名排序。
   examples:
   %ls
     dir1    file.1
   %ls -a
     .      .login    file.1    dir1
     ..     .cshrc    file.2    dir2
   %ls -lg
     total 4
      drwxr-xr-x  3  huang  center  2048  Oct 14 10:30 bin
      -rwxr-xr-x  1  huang  center   233  Sep 11 09:38 letter
   %
   第一行 total 4 表示所 bin, letter 所佔的記憶體容量(以 block 為單
    位)有關每個目錄、 檔案的資訊, 說明如下:  
     -  rwxr-xr-x  1    huang center  23 Sep 11 09:38 letter
    (1)    (2)    (3)    (4)   (5)   (6)     (7)       (8)

    (1)檔案型態
       d 表目錄
      c 表字元式特殊檔案
      b 表區塊式特殊檔案
      l 表鏈結檔案數
      - 表一般檔案
      s 表 socket 檔

    (2)使用權:表示誰有權去讀取及使用此檔案,從左至右 3 字元為一組,
               分成自己、群體及其它三部份,其中
       r 表讀取
       w 表寫入
       x 表執行
       - 表對應項目的動作不被執行

    (3)鏈結次數:是指鏈結至該檔的數目,以目錄而言,表示在檔案系統中的
                 目錄個數。

    (4)檔案擁有者:該檔的擁有者。

    (5)檔案所屬群體:該檔的所屬群體。

    (6)字元個數:即檔案大小,以位元(byte)為單位。

    (7)最後一次修改的日期與時間:為檔案最後一次修改的日期與時間。

    (8)檔案名稱

    %ls -F
      ac@  @letters/    actwhocheck@   bmag.nurc  backup*
      bmaf.bat*   bmaf.nurc   bmag.bat*  bmag.his*  catman

    %ls -alt
      *在 Convex 系統上,使用 ll 指令代替 ls -l,而以lf 指令代替ls -F



3.mkdir 建立目錄
    格式:mkdir directory1 [directory2 ...]
    %mkdir dir1 dir2



4.cd 改變目前的工作目錄
    格式:cd [directory]
   %cd dir1



5.mv 移動或更改檔案名稱
    格式:mv [options] file1 file2
          mv [options] file dir
    options:
    -i    可避免覆蓋原有的檔案。
    -f    強制覆蓋原有的檔案。

    examples:
    %mv file.1 file.2
    %mv -i file.2 file.2
    %mv -f file.2 file.3



6.rm 刪除檔案
    格式:rm [options] file1 file2 file3 ...
    options:
    -i    刪除檔案前會先詢問
    -f    強制刪除檔案
    -r    刪除目錄及其下所有檔案、子目錄

    examples:
    %rm file.1 file.2 file.3
    %rm -r dir1
    *用 rm  刪除的檔案將永久的被刪除,救不回來。



7.rmdir 刪除目錄
    格式:rmdir directory

    %rmdir dir1
    *被刪除的目錄必須是空的亦即不包含任何檔案或次目錄。



8.cp 複製檔案
   格式:cp [options] file1 file2
          cp [options] dir1 dir2
          cp [options] file directory

    options:
    -i    可避免覆蓋原有的檔案
    -r    拷備目錄及其下所有檔案、子目錄

    examples:
    %cp file.1 file.2
    %cp file.1 dir1
    %cp -r dir1 dir2


9.cat 顯示檔案內容,類似於 DOS 的type。
    格式:cat [options] filename

    options:
    -n    產生行號
    -s    檔案中連續空白行,僅輸出一行\line

    examples:
    %cat -n file.1
    %cat -s file.2




 10. more 顯示檔案內容,每次僅顯示一個螢幕之檔案內容。
    格式:more [options] filename

    options:
    +line number    從第n行開始顯示
    +/pattern       從含有pattern的前兩行開始顯示
    -d              設定列印行數

    在more中常用之指令如下:
    space 鍵往下捲動一個螢幕
    enter 鍵下捲動一行, 鍵入數字後,再按 enter 可向下捲動指定之行數
    q 鍵停止輸出

    %more -d20 more.man          一次顯示20行
    %more +50 more.man           從第50行開始顯示
    %more +/terminal more.man    從含有terminal的前兩行開始顯示



11.chmod 改變檔案許可權
   *權限說明:

    (1) 權限可分為三種: 擁有者、同群組的使用者、其他使用者

    (2) 權限之取得可由ls -lg 所顯示

        r.....表示有讀取的權利
        w.....表示有寫入的權利
        x.....表示有可執行的權利

    (3)其表示方式有以下三種:

        +.....增加權限
        -.....減少權限
        =.....設定權限

    (4)who可以是

       u.....檔案擁有者的存取權
       g.....檔案所屬群體的存取權
       o.....其它使用者的存取權
       a.....全部使用者的存取權

       *如果省略此參數,則預設值為a
       Ex: rwxr--r-x .

       前面三個字母 (rwx).. 表示檔案擁有者的權利擁有者有可讀取、寫入和
                           可執行之權利.

       中間三個字母 (r--)..表示同群組使用者的權利.
                           他只能讀取資料的權利,沒有寫入和執行的權利


       後面三個字母 (r-x)..表示其他使用者的權利.
                           他有讀取資料和執行的權利,但沒有寫入資料的
                           權利

    (5)若用數字法

       r.....表示值為4
       w.....表示值為2
       x.....表示值為1
       Ex: 5....表示為可讀取及可執行 (r+x=4+1)

    (6)現在我們來看看以下的例子

       %chomd u+x doc 將檔案doc加上擁有者可執行的權利

       %chomd 745 doc 將檔案doc變為擁有者有可讀寫可執行
                       的權利 (r+w+x=7),同群組的使用者
                                                                                                                                                                                                                                                                                                                                       只能有讀取資料的權利(r=4),其他使


12.jobs 列出在此台終端機上所有的job
   Ex :
        %mail s2847007
        Ctrl-z

        %cat > file.1
        Ctrl-z

        %vi
        Ctrl-z

        %Jobs

        [1]    Stopped      mails2847007

        [2]  - Running      cat>file.1

        [3]  + Stopped      vi

        (1) (2) (3)        (4)

        (1)jobnumber工作代號
      
        (2)+表示current job
           -表示next current

        (3)每個job目前執行的狀況

        (4)job的作業內容





13.fg 啟動被暫停的 job,並改為前景作業
將目前目錄下在背景執行的 process 移至前景(foreground) 執行

    格式:fg %job_number

         fg %2 將job 移至 前景 (foreground) 執行

    Ex :
         %fg     啟動current job,改為前景作業

         %fg%1  啟動job1,改為前景作業或%%1 亦可


14.bg 啟動被暫停的job,並改為背景作業
將目前目錄下在背景執行的 process 移至背景(background) 執行

    格式:bg %job_number

    Ex :
         CRTL-Z 先將在執行的 process 暫停

         bg 方可下 bg 命令將此 job 移至 background 執行
         %bg      啟動currentjob,改為背景作業

          %bg%1   啟動job1,改為背景作業或

          %%1&    亦可
                                                                                                                                                                                                                                                                                                                                                              用者有讀取資料和執行的權利(r+x=5)

15.stop 暫停一個正在執行的job
    格式:stop  %job_number

    Ex :
          %stop  %2 暫停%2正在執行的工作



16.kill 刪除一個job
    格式:kill  %job_number 或 kill pid

    Ex :
          %kill  %3

          %kill  8122

    *如果尚無法清除此 job 則可改用以 kill -9 取代 kill指令。

          %kill -9 8122

          kill 刪除 process 或 job

          kill -9 1340  刪除 process 1340,必須是自已的process

          kill %1 刪除第一個 Job (background 或 暫停)



17.at
    指一串指令於特定時間執行某些指令, 執行後產生的 standard output 必
    須自己以輸出轉向的方式處理,否則看不到結果。

    格式:at [options] time [day][script]

    options:

        -m......執行完畢後會送mail給使用者。當執行過程中若
                有錯誤,則雖未給予此參數,亦會送 mail 告知
                使用者。

        time....執行命令的時間,前2位是時,後2位是分。

        day.....執行命令的日期,若省略則指當天。

        script..內含要執行的命令,類似pc的批次檔,若省略此
                參數,則可將命令直接終端機輸入,欲結束按
                Ctrl-d。

     Ex :
       %at -m 1040 Aug 20   在8月20日10點40分時,去
                             執行who>list的動作

       at > who > list            執行完送一mail給使用者

       Ctrl-d

       %at -m  1050  scrfile  在10點50分時,去執行script
                               的動作,執行完送一mail給使
                               用者

      %at 6:00 tomorrow  file1 在明天早晨 6:00 開始執行批
                              批次檔 file1


18. atq 查詢等待執行之作業(顯示有那些 Job 在 queue 中) 
    Ex :
       %atq
 
    Rank    Execution Date    Owner   Job#    Queue    JobName

    1st  Aug 14,1996 17:00  2847007  4510     a       stdin


19.atrm job# 取消 at 命令,刪除 at_queue 中的 job
    Ex :
       %atrm 4510    刪除 queue 中的Job_number 4510


20.write 送一個訊息給正在上線使用的 User

21.wall 送一個訊息給正所有在上線使用的 User

22. batch 使一串指令在 Background 執行 (執行速度會較慢)
@ batch file3 執行批次檔 file3

23.history 顯示前幾次所鍵入的命令(預設是 40 個)

24.!! 重覆上一命令

25.passwd 更改密碼

26.chfn 更改 full name

27.clear 清除終端機螢幕

28.date 顯示日期(可以特殊日期格式顯示)

29.df 顯示磁碟使用量

30.du 顯示目錄下所使用的磁碟空間

   du .  顯示現目錄下之各子目錄使用 Block 數

    du -s . 只顯示現目錄以下所使用的 Block 總計


31.env 顯示目前所有的環境變數

32.setenv
     指定變數值於 shell 中, 供子 shell 使用 setenv LD_LIBRARY_PATH
     /usr/openwin/lib


33.set 顯示或定義變數
   set term=vt100


34.unset 取消某個變數的定義
   unset term


35.stty 設定終端機
    stty pass8 rows 24


36.finger 顯示遠端主機 login 狀況
   finger @dec2


37.rehash 
    若有新的命令檔存入 path 所指定的目錄時, 使hash table 重建


38.head 顯示檔首( 行,block,字元)
    head -5 mbox  顯示 mbox 前五行, 若未指定預設是10 行


39.tail 顯示檔尾(行、Block、字元)
    tail -100 file1


40.rcp 與遠端主機間的檔案拷貝
     rcp file1 mail:/home/user/user1  將 file1 拷貝至
     mail_host 的/home/user/user1


41.rsh 執行遠端主機的命令
    rsh sparc20 ls -al 執行 sparc20 的命令


42.rlogin Login至遠端主機目錄下之子目錄 games
    rlogin sparc4


43.split 將大檔案分割成數個小檔案
    split -100 big_file sf  將 big_file
    以每100行為一個檔案寫至 staa sfab ...


44.sort 排序檔案內容
     sort file1 > file2
     將 file1 由小到大排序至 file2

     sort -t: +2 file3 > file4
     將 file3 以 : 作欄分界,以第三欄排序至 file4
  

45.cut 挑出檔案的部份欄資料
     cut -f1,5 -d. file1 >file2
     將 file1 以 . 作欄分界,分出第一、五欄寫至 file


46.source 執行一 shell script file
    source .cshrc


47.tar 產生或解開檔案庫

    tar -cvf bin.tar ./bin
    將 ./bin 下之檔案及其子目錄製成一檔案庫 bin.tar

   tar -xvf bin.tar  將檔案庫 bin.tar 解開

    tar -xzvf chdrvfont.tar.gz 將 chdrvfont.tar.gz 解開


48.umask 設定以後建立檔案及目錄的存取權利
    umask 077 使其它 User 皆無法讀寫執行您的檔案及目錄


49.wc 計算檔案長度


50.find 找尋檔案

    find . -atime +7 -print
    找尋現目錄下的所有子目錄及檔案,其最後一次讀取為 7 天以上者

    find /usr -name "*.h" -print
    找尋 /usr下的所有子目錄及檔案, 其檔名為.h 結尾者


51.uuencode 將二進位檔以編碼方式變成一 ASCII 檔
    uuencode file_a file_b >file_c
    將 file_a 編碼並以 file_b 為 Label 寫至file_c


52.uudecode 將 uuencode 過的檔案回復為原來的內容
   uudecode file_c  解碼後的檔案其檔名為 file_b


53.compress 將檔案壓縮以減少空間
    compress file1 >file1.Z


54.uncompress 將壓縮過的檔案回復
    uncompress file1.Z


55.diff 比較兩個本文檔不同的地方


56.cmp 比較兩個本文檔或非本文檔不同的地方


57.sh 開一個 Bourne Shell 命令解譯器


58.ln 連結檔案或目錄

    ln file1 file2 將原先檔案 file1 連結一份至 file2

    ln -s /usr/games games  將 /usr/grams 連結成現目


59.grep 在本文檔中找尋字串

    grep 'how are you' file1

    ps -aux |grep user1  找尋所有 process 中有 user1


四、輸出入轉向
        在 UNIX 系統中,大多數的指令,內定從鍵盤輸入資料,而將輸出資料顯示
在終端機螢幕上,因此鍵盤稱為標準輸入,終端機螢幕稱為標準輸出。但使用者
可以使用一種具有重定方向特性的指令來更改這些內定動作,將其輸出輸入的螢
幕、鍵盤改為檔案或其它設備,而原命令不須做任何的修改。

    利用重定方向的特性,我們可以做以下的動作:

   .將輸出原本應顯示在終端機螢幕上的程式,改為輸出給一個指定的檔案。

   .將原本該終端機鍵盤輸入的程式,改為以檔案做為其輸入資料。

   .將一程式的輸出,當成另一程式的輸入資料。



1. > 重定標準輸出的方向
    格式:command > newfile

    %ls -al > list

    *將 ls-al 命令的輸出資料放在名為 list 的檔案中。

    * 若將輸出轉向一個已存在的檔案時, 會把原檔案內容蓋掉, 為避免此種
      情況發生,請於事先下 set noclobber 命令,或將此命令加入.cshrc 檔
      ,然後再執行

    %source.cshrc

    %set noclobber

    %date > list

    list:file exists

   *可用 >! 強迫 overwrite

    %date >! list


2. >> 重定和附加標準輸出
    格式:command >> file

    透過”>>”符號,可將一個命令的輸出附加於一個檔案之後。

    %date > list.new將date命令的輸出放在list.new的檔案中

    %pwd >>list.new再將pwd命令的輸出附加在list.new的檔案中


3.重定標準輸入的方向
    格式:command  file

    透過” ”符號來重導命令的輸入設備。

    %cat   list

    %mail  user  letter


4. >& 標準錯誤重導方向
    透過”>& ”符號,可將標準錯誤重導至與標準輸出相同的目標。

    %ls-al >& list

    *若要將標準輸出和標準錯誤區隔開,請使用下列格式的命令

     %(command>outfile) >& errorfile

     %(program>/dev/null) >& /dev/tty

    * 不顧標準輸出,只看程式所產生的錯誤訊息。( 當你執行較大程式時,可
      使用此指令,以節省時間 )



5.程式的連結
    %ls -al > file.list    將ls -al的輸出放在名為file.list檔案

    %pr  file.list > temp  再將此檔透過pr做文件處理,並將處理完後的資
                            料放在temp檔

    %lpr  temp             將temp檔列印出來



6.| 連結命令
    格式:command|command

    某個命令的輸出可以直接作為另一個命令的輸入。

    %ps -aux|more



7.其它應用
    (1)用 cat 建立新檔

       %cat > work.txt
             ..........
             ..........      按Ctrl-d結束
       %

    (2)用 cat 合併檔案

       %cat file1 file2 > files
       將 file1 及 file2 的內容合併在 files

       %cat file3 >> files
       將 file3 的內容附加在 files 之後。


五、有關列印的指令

1.lpr 送印指令
    格式:lpr [options] filename ....

    options:
    -Pprinter     指定印表機,若省略此參數,則指預設印表機lp

    examples:
    %lpr
    %lpr -Psp



2.lprm 取消已送印的檔案
    格式:lprm [options] job#

    options:
    -Pprinter       印表機,若省略此參數,則為預設印表機 lp

    -username       將此user欲列印的檔案取消,若省略此參數,
                    則指自己

    examples:
    %lpq -Psp

    Rank   Owner      Job  Files                Total Size
    1st    s2847007   235  test.1                 38 bytes
    2nd    s2847007   236  test.2                 38 bytes
    3rd    s2847007   237  test.3                300 bytes

    %lprm -Psp 236 237



六、節省輸出入時間之指令
1.history 將你所下過的指令記錄下來
    格式:history [options]

   options:
   -r       以反方向顯示所下過的指令
    n       顯示前n次所下過的指令

    examples:
    %history
    %history -r
    %history 5
    %history -r 5

   (1)set history=n     設定history記錄命令的量
       %set history=50
       *從目前開始,直到退離系統,保留最後50 個命 令。
       *如果你想讓此命令永遠有效,可將此命令加入.cshrc
        這個檔案內,然後執行。 %source .cshrc
  (2)如何利用history 記錄的命令
       %history
       1    w
       2   date
       3   vi .cshrc
       4   pwd
       5   ls -al
       6   history

      %!!           執行前一次的命令,即history
      %!4           執行第四次的命令,即pwd
      %!vi          執行最近一次的\fs24 vi 命令,即vi .cshrc
      %!?ls?        執行最近一次命令中含有ls 的命令,即ls -al
      %!5 /usr      執行第五次的命令並加/usr,即ls -al /usr
      %!2 > status  即date > status



2.alias
    (1)alias  將命令用一別名取代

    格式:alias alias_name command
          examples:

          %alias copy 'cp -i'
          %copy
          *執行  copy  視同執行'cp -i' 。
          *可將  alias 的設定加入.cshrc檔內,讓每次進系統時,這些設定
                 永遠有效。

    (2)unalias  取消alias的設定

  格式:unalias alias_name examples:%unalias copy

    (3)亦可將數個命令結合起來取一個別名

    格式:alias alias_name 'command;command;....'
          examples:
          %alias status 'date;uptime'

    (4)alias 用 \!* 來傳參數

         examples:
         %alias L 'ls -l \!* | more'
         %L /usr 視同執行\fs24 'ls -l /usr | more',/usr取代 alias L
           中的\!*


   (5)指令更正

        格式: ^incorrect^correct
        *針對前一次的指令作更改

        example:
        %pc file.1 file.2
          pc: Command not found.
        %^pc^cp
          cp file.1 file.2
          格式:!5:s^search^replacement
          或 !5:s/search/replacement

        *針對history所記錄的指令作更改

        examples:
        %!3:s/.cshrc/myfile  將第3次命令中的.cshrc改為myfile
        %vi myfile

        *先確定指令更改無誤後再執行
        %!3:p:s/.cshrc/myfile  加上參數p,可先確認更改動作是否無
        %!!                    誤,確定後vi myfile,再使用!!執行
        %vi myfile
        %!!


七、作業環境之設定
    當你進入系統時,CShell 會自動地執行使用者目錄下的.login 及.cshrc。
若是在作業的當中啟開某個 subshell,使.cshrc 會再執行一次,其目的是讓你
的工作,預先設定一個完整的作業環境以便於使用。


1.set 設定 Shell 變數
    格式:set variable 或 set variable = value

    (1)欲看目前的設定,可鍵入set指令。

       %set

       argv()

       history 40
       ..........
       ..........
       %



2.set autologout=n
    %set autologout=30 設定於30分鐘內,若使用者一直未按任一鍵,則自動
                        將此使用者退離系統


3.set history=n
    %set history=50 設定歷史命令記錄最後50個指令


4.set savehist=n
    % set savehist=50 將最後 50 個指令儲存起來, 做為下次進入系統時的
                       歷史命令


5.set prompt=variable
    %set prompt=% 將系統提示符號改為%


6.setpath=dir
設定路徑
    %setpath=(.~~/bin /usr/local /usr/ucb /usr/bin /usr/etc)

    %setpath=($path $OPENWINHOME/bin
                     $OPENWINHOME/bin/xview)


7.set term=ternimal_type
設定終端機型號
    %set term=vt100


8.set ignoreeof
防止鍵入 Ctrl-d 時執行logout的動作


9.set notify
背景作業執行完畢,會顯示 [Done] 以告知使用者


10.set noclobber
當已存在之檔案被 overwrite 時,會顯示 "Fileexists" 訊息

     *以上所介紹的 set 指令,可將常用之指令寫在.cshrc檔內, 如
     此使用者可以不必每次進入系統都要做這些設定動作。

    Ex :
        %source.cshrc

    *若要取消設定則鍵入 unset variable。

    *注意:重新修改的.login,須先logout離開,再login進來使用

    另外節省輸入時間之指令alias也可寫在.cshrc檔內

    %alias h 'history'

11.setenv 設定環境變數

    %setenv OPENWINHOME /usr/openwin

    %setenv TERM vt100

    *設定終端機型號

    *若欲知環境變數,鍵入printenv
    %printenv
    HOME=/home1/center/kai
    SHELL=/bin/csh
    TERM=sun
    USER=kai
    PATH=......
        ..........
    %



八、其它UNIX的指令
1.date 顯示現在之年、月、日、時間、及星期。
    %date

    Sat Oct 26 10:10 :40CST1991



2.cal 顯示月曆
    格式:cal [[month] year]

    Ex :
       %cal

       %cal 81900



3.who 查詢現在進入系統的使用者。
    Ex :
       %who



4.which 查詢某一個執行檔位於那一個目錄下。
    Ex :
       %which vi



5.quota 使用者可使用之磁碟空間(kbyte)及檔案個數。
    Ex :
       %quota -v

Read more >>

關於EC ONE ECONE-top-right.png