UNIX TIPS

sedによる置換

Cシェル

バックグラウンドftp

tar

文末

1. sedによる置換

sed “s/X/$AA/g” file1 > file2

$AAforeachendでループする  4/30/04

もう少し具体的に:

input.orgの中身にX(置換したい文字)を入れて、次のようなCシェルを作成する。10/185

#!/bin/csh -f

set ORG = input.org

set INP = input

foreach ichan(1 2 3 4 5)

  sed "s/X/$ichan/g" $ORG > $INP

  main.run < $INP

end

置換したい文字が複数ある場合

sed -e "s/CCYY/${CCYY}/g" -e "s/MM/${MM[$n]}/g" -e "s/PERI/${PERI}/g" $ORG > $INP

2. リブートなど(1/1405)

shutdow

Ø              (/sbin/)shutdown i0 g0 y (return)

OK プロンプトが返ってくる。

電源をoffしてよい。(本体をオフしてから周辺機器をオフ)

電源オン(周辺機器をオンしてから本体オン)

 

・リブート

root

reboot (return)

ログイン画面が返ってくる

 

・おまじない

sync

sync

init 0

 

1. システムのメッセージを読む

dmesg(return)

 

標準出力に出されるのでgrepなども可  5/23/04

 

あるいは、/var/admにログが記録されている(10/285)

2. ファイルの中身確認

less ??

で複数のファイルを同時に開く事が可能

次のファイルに行くときは:n(return)viとおなじ 8/23/04 文書の先頭

ファイルを探す

find . -name "*grad*" -print 9/1804 文書の先頭

 

3. Cシェル

3.1ファイルがないときの条件文

foreach DD( 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 )

   if( ! -e $DD) then ## !のあとスペースが必要

   mkdir $DD

   endif

   cd $DD

     tar xf /dev/rmt/1n

   cd ..

 end

 

3.2条件文の構造

    if ($name == "boo") then

        echo "I am the eldest"

    else if ($name == "hoo") then

        echo "I am the second eldest"

    else if ($name == "woo") then

        echo "I am the youngest"

    else

        echo "Who am I?"

    endif

引用:京大:高崎先生

 

3.3引数の与え方

    変数を$1と定義すれば、引数がはいる。

!/bin/csh -f

#argment

echo $1

ls -la  ${1}.txt

3.4ファイルの中でINPを作成する

   sample.txt

 

4. 足し算など

    set target =  $DD

    @ target += 1 ## increment 数字として扱うには@が必要!

    if( $target < 10 ) then

       set target2 = 0$target ## 文字として操作するので空白などは不要。

       mv $DD  $target2

    else

       mv $DD $target

    endif

 end

 

5. バックグラウンドftp

バックグラウンドでftpするときには次のコマンドで実施。

ftp n < inp & (return)

 

インプットファイルの中身—ftpで入力すべき内容を記述する。

パスワードを入力しなくてはいけないのがちょっと難点。

open Hostname

user anonymous PassWard

cd /????

mget *

close

bye

 

文書の先頭

 

6. メールの送信

11/305

6.1添付ファイルの作成

/bin/uuencode $org_file $name_file > $dammy.uu

$org_fileは添付したいファイル名

$name_fileはメール上で表示されるファイル名

$dammy.uuは送信用のファイル。名前は何でもよい

 

6.2メール送信

/usr/ucb/mail -s $subject $send_mail_adress < $txt

$subjectはメール上に表示される表題。

$send_mail_adressは送信のあて先。

$txtはメールの本文。添付ファイルを送る場合は前述の$dammy.uuを指定するとよい。

 

 

7. tar

12/10’5

ファイルをまとめる。

tar cpf - PNG > png.tar &

 

 

8. Bシェル

上書きリダイレクトの際、よく使う「>& ! o_err」の!は有効ではない。

ファイル名「!」なるファイルに、出力が記録される。通常は、上書き可。