第 2 回 - フィルタ,シェルスクリプトの基礎(2)

[9/28, 2009 H.Aman]
67x27(1669bytes)   67x27(1669bytes) 【例題 2】

課題 1-1

カレントディレクトリの下に "backup" という名前のディレクトリを作り, カレントディレクトリに置かれている全ての C ソースファイル(拡張子 .c)を backup の下へコピーするシェルスクリプト makebackup.sh を作りなさい. ただし,コピー先の名称はファイル名の末尾に "bak" を付けるものとする.

※実行例.
例題 1 で用意したディレクトリ pr2-2-ex1 にて実行した場合:

     $ cd pr2-2-ex1
     $ ls
     bar.c  foo.c  hoge.c
     $ bash makebackup.sh
     $ ls
     backup/  bar.c  foo.c  hoge.c
     $ ls backup
     bar.c.bak  foo.c.bak  hoge.c.bak

課題 1-2

カレントディレクトリに data1.txt, data2.txt, data3.txt, data4.txt という 4 つのファイルが置いてあるとする. これらの名前を順番に input1.dat, input2.dat, input3.dat, input4.dat へと変更するシェルスクリプト data2input.sh を作りなさい. シェルスクリプトでは必ず for 文を用いること. (ヒント:数字部分を変数で表すとよい)

※次のサンプルファイル pr2-2-ex1-2.tar.gz を右クリックし,「名前を付けてリンク先を保存」を選んでダウンロードすること.
そして,

     $ tar zxvf pr2-2-ex1-2.tar.gz
というコマンドを実行すると,カレントディレクトリに pr2-2-ex1-2 という名前のディレクトリが自動的に作られ,その下に 4 つのファイルが作られる:
     $ cd pr2-2-ex1-2
     $ ls
     data1.txt  data2.txt  data3.txt  data4.txt
ここで,課題となっている data2input.sh を正しく作成して実行すれば, それぞれの名前が書き変わる:
     $ bash data2input.sh
     $ ls
     input1.dat  input2.dat  input3.dat  input4.dat