Shell

Shell -- Quick Ref. -- My Job -- Yashiro's home

Last update: 2004/6/18
Since: 1995/11/6


Inside
    1. シェル (Update 2000/7/13)
    2. コマンドの実行 -- 入出力の切替, パイプ, ハードコピー (Update 2004/6/4)
    3. コマンドの別名, オプションの標準値の変更
    4. 入力コマンドの再利用
    5. コマンドの検査
    6. コマンドの作成
    7. Comparizon between Cshell & bash
    8. Executing of costomize file (.cshrc, .login, .bashrc, etc.) (Update 2001/1/12)
    1. Cshell
    2. bash (Added 2000/7/13)
    3. Script samples (Update 2016/6/24)

  1. シェル
    1. 文献
    2. [1]
      UNIX Cshell フィールドガイド(THE UNIX C SHELL FIELD GUIDE), Gail and Paul Anderson, パーソナルメディア(1987)

    3. シェルの種類
    4. B シェル系 sh(Bourne shell), ksh(Korn shell), bash(Bourne Again Shell), zsh(Super Korn shell)
      C シェル系 csh(C shell), tcsh

    5. Linux
    6. TurboLinux Pro Nihongo3.0 ash=bsh, bash=sh, ksh, tcsh=csh, zsh
      Vine ash=bsh, bash=sh, tcsh=csh

    7. 機能 [1]-p32
    8. コマンドインタープリタ
      対話機能
        省略形を使える.
        コマンドの記憶および再利用機能
      調整機能
        作業環境のカスタマイズ
      プログラミング
        シェルスクリプト
      以下 csh について説明する.

    9. コマンドの種類
      1. path で指定したディレクトリにある実行可能ファイルがコマンドとして実行される.
        設定: .cshrc あるいは .login で PATH が指定されている.
             % setenv		PATH の表示	(csh, bash)
             % set		path の表示	(csh)
        
      2. 再設定: PATH の値を壊した場合には source コマンドでリセットする. (csh)
          % source .cshrc

      3. shell の組み込みコマンド
        PATH の値が壊れても, 実行できる.
          (ex. source, setenv, set, ..)


  2. コマンドの実行
    1. コマンドの実行 [1]-p72
    2. 単一のコマンド 複数のコマンド コマンドグループ

    3. 入力と出力の切り替え, 出力のハードコピー [1]-p50, p74
    4. bash, csh, tcsh -- common
        command> filename
        command>> filename  追加書き
        command< filename
          % ls -c /usr/local/bin > temp
          % echo "Append a line" >> temp
          % mail myname < temp
          % tr "[A-Z]" "[a-z]" < report > report.low
        command >& filename  
          % cc test.c > c.out
          % cc test.c >& c.out
        (command;command) > filename
          % (date; du) >status
        (command> filename)>& filename
          % (cc test.c > c.out) >& c.error
        保護機構	(bash, csh)
        
          % set noclobber % who> temp % who>! temp command >! filename  保護回避 % unset noclobber   解除
        全部の入出力のハードコピー : $ script

      bash
        stdout & stderr :
          $ command &> outputfile
          $ command &>> outputfile -- Not works!! A bug ?
            ==> $ command >> outputfile 2> &1
        stderr only :
          $ command 2> outputfile
          $ command 2>> outputfile
        Result of time :
          $ (time command) 2> outputfile

      csh, tcsh
        コマンドからの出力 : % <command> |& tee <outputfile>

    5. パイプ [1]-p51, p81
    6. % who | wc -l % tar cvf - * | compress > test.tar.Z
      csh --- % xinit |& tee xinit.log
      bash -- $ xinit 2> 1 | tee xinit.log


  3. コマンドの別名, オプションの標準値の変更
    1. alias で設定する.
      csh : .cshrc に記述するとよい.
       ex) % alias rm 'rm -i'
           % alias mv 'mv -i'
           % alias cp 'cp -ip'
           % alias addpath 'set path = ($path \!*)'
      	    Shell script ではできない.  \!* = 全ての引数を渡す.
      
      bash : .bashrc に記述するとよい.
       ex) $ alias rm='rm -i'
           $ alias cp='cp -i'
           $ alias mv='mv -i'
      
    2. Display alias definition.
        % alias

    3. alias で設定したオプションを使用しない方法
           % \<command>                ex) % \ls>
           % unalias <command>             % unalias ls
      


  4. 入力コマンドの再利用
    1. history 機能を利用
       !!		  直前のコマンドの実行
       !str		  str で始まる, 最近のコマンド
       ^old^new 	  変換と実行
       ^old^new^:p	  非実行
       !str:s/old/new   str で始まる最近のコマンド, 変換と実行
       !str:gs/old/new
       !^  !$  !*	  直前のコマンドの最初 / 最後 / 全部の引数
      

    2.  % ls .login save
       % mkdir !$	-->  mkdir save
       % !l		-->  ls .login save
       % !!		-->  ls .login save
       % mv  !*	-->  mv .login save
      
    3. 動作条件
      csh
      % set history = 200   必須、記憶するコマンドの数
      % set savehist = 200  次の login に引き継ぐ記憶コマンドの数
      % set prompt = "`hostname`{`whoami`}\!: "
      		     プロンプトに履歴番号を表示する
      bash
      % export HISTSIZE = 200   必須、記憶するコマンドの数
      % export HISTFILESIZE = 200
      


  5. コマンドの検査
    1. 同一名のコマンドの調査や, コマンドのあるディレクトリを捜す.
      % whereis <command>   : 標準的に提供されているパスから捜す.
      % which  <command>    : 実行されるコマンド.
      
    2. which での注意
      コマンドを alias で再定義してある場合には, 注意を要する.
        HI-UX/csh : 実在するコマンドを表示
          % alias rsh 'date'
          % which alias
          /usr/ucb/rsh
          % rsh
          Mon Feb 7 12:46:22 JST 1994
        Sun4/csh : alias であることを表示
          % which ls
          ls: aliased to ls -F
        bash : 何も表示しない
          $ alias rsh='date'
          $ which rsh
          $ rsh
          Thu Jul 8 18:29:27 JST 1999


  6. コマンドの作成
    1. 新しく登録したコマンドを有効にする
        % rehash

    2. csh スクリプトのトレース(デバッグ)
      (方法-1) % csh -v shell_script
      (方法-2) スクリプトの先頭行を '#! /bin/csh -v" とする.
      (方法-3) スクリプト内に set verbose を挿入する.

    3. bash スクリプトのトレース(デバッグ)
      (方法-1) % bash -v shell_script
      (方法-2) スクリプトの先頭行を '#! /bin/bash -v" とする.


  7. Comparizon between Cshell & bash
  8. Cshellbash
    Environment Variablesetenv LANG ja_JP.EUCexport LANG=ja_JP.ujis
    aliasalias rm 'rm -i'alias rm='rm -i'
    Filename CompletionEsc-key & ^DTAB-key
    ignoreeofset ignoreeofexport IGNOREEOF=


  9. Executing of costomize file
    1. telnet
    2. telnet
      xterm

    3. xdm
    4. Window manager
      xterm - either from .xsession and from window manager.

  10. Cshell
  11. "csh.html" を参照のこと。

  12. Bash
  13. "bash.html" を参照のこと。