UNIX コマンドガイド



シェルの内部コマンド

source (csh, tcsh, bash)

ファイルに書かれたコマンドを実行する。 例えば ~/.cshrc を書き換えた後

          $ source .cshrc
        
とすると、ログインし直さなくても .cshrc の内容が反映される。

ファイル操作

tar

アーカイブの展開(ファイルの復元)

     $ tar -xvf hogehoge.tar [file1 file2 ...]
    
gtar では以下も可能
     $ tar -zxvf hogehoge.tar.gz
    

grep

パターンにマッチする行の表示

     $ grep [option] PATTERN [FILE]
    
オプション
      -v  一致しない行の表示
      -i  PATTERN, 入力ファイルの双方において、大文字・小文字を区別しない
    

tee

     $ make 2>&1 | tee make-log.log
    

find

    $ find [ディレクトリ] -name hogehoge
   

sed

ストリームエディタ

    $ sed -e '   コマンド   ' [入力ファイル] [> 出力ファイル]
    $ sed -f コマンドファイル [入力ファイル] [> 出力ファイル]
   
編集コマンドの例
    '1,10 s/old/new/'                       # 1-10行目の old を new で置き換える
    10a\                                    # 10行目の後に以下の 3行を追加
    This is a pen.\
    Are you happy?\
    Yes I am.
   

awk

パターン処理言語

    $ awk [-F'区切り文字'] '  プログラム       ' [入力ファイル] [> 出力ファイル]
    $ awk [-F'区切り文字'] -f プログラムファイル [入力ファイル] [> 出力ファイル]
   
プログラムの例
    'パターン {アクション}'                                     # プログラム記述の基本
    '{ if (NR % 2 == 1 ) {print $0} }'                          # 奇数行のみを書き出す(パターン無)
    BEGIN {FS = "&" }
    NR == 6 {
                  i = 1
                  while ( i <= NF ) {
                          print $i
                          i++
                  }
             }
    ' NR == 6 {for ( i =1 ; i <= NF ; i++ ){print $i} }'        # 6 行目の各フィールドを書き出す
   

dd

    $ dd if=file_1 of=file_2 ibs=xxx obs=yyy skip=a seek=b count=n

    file_1 を xxx バイトづつ読み込み file_2 に yyy バイトずつ書き出す。
    その際、入力については a ブロック skip し、出力については b ブロック
    seek してから処理を行う。
    if, of 等を指定しない場合は標準入出力が使われる。

    例。一番目の HDD の先頭から 64 ブロックをファイル hogehoge に書き出す。

    # dd if=/dev/hda of=hogehoge bs=512 count=64
   

vi コマンドガイド

文字列の置換

   :%s/xxxx/yyyy/gc
  
カーソルの次行に file の内容を挿入
   :r file
   
m行目からn行目までを file に書き出す
   :m,nw file
   

ターミナル

文字化け回復
   $ echo (SPACE) Control+v ESC c (RETURN)
  

nohup

   $ nohup ./run.sh &

   $ nohup ./run.sh < /dev/null > out.log 2> err.log &

   $ nohup ./run.sh < /dev/null &
   

テープドライブの使用例

    $ mt -f /dev/nst0 status
    $ mt -f /dev/nst1 setblk 64512
    $ mt -f /dev/nst2 rewind
    $ mt -f /dev/st0 offline

    $ tar cvbf 126 /dev/nst0 XXXX
    $ tar xvbf 126 /dev/nst0 [YYYY]

    $ tar cvbf 126 - XXXX | rsh RHOST -l RUSER dd of=/dev/nst1 obs=126b

    $ rsh RHOST -l RUSER dd if=/dev/nst1 ibs=126b obs=126b | tar xvbf 126 - 
   

sudo 設定

sudo コマンドは設定が /etc/sudoers に書いてなければ使えない。このファイルの編集には専用コマンド visudo を用いる。なお sudo 使用時に入力するのは(root等ではなく)各ユーザーのパスワード
    # /usr/sbin/visudo -f /etc/sudoers

    各行の書式は
        ユーザー  ホスト = (権限) コマンド

    設定例
        hogehoge  localhost = (root) /usr/bin/make install