Operating System
(ここは読んでおいてください)
前回扱えなかった応用練習について前回扱わなかった逆操作(1.txt を
1 に戻すなど)について、ここで解説しておく。
ファイル名(が変数の値になっている時にその)の後ろに文字列を付加することは簡単だが、その逆は以下のような工夫が必要。
sed(変換のための用法)の使い方は右図のとおり。
echo 1.txt | sed 's/[.]txt//'
正規表現の中でピリオド(.)を特殊な意味(任意の文字にマッチ)でなく使う記法は右図の2通りある。
そのパターンを除去する変更なので、変更後、に相当する右2つのスラッシュの間は //のように空でいい。
これをすべてのファイルに対して行えばいいから、以下のようなコマンドで実現できることになる。
for i in *.txt ; do
mv $i $(echo $i|sed 's/[.]txt//')
done
${}の中は前述のsedを使う方法に似ている(/ で区切ること)が、
ブレースの中なので最後の(変更後の文字列の右側の)/ は不要。
for i in *.txt ; do mv $i ${i/[.]txt/} done
パラメータ展開の別の用法として%
を使うこともできる。上記の(.txt
を取り除く)パラメータは
${i%.txt}
とも書ける。
12回の9 練習課題について
今日は Unix/Linux マニュアルの構成について話しました。 これ以降の内容は次回(最終回)あらためて扱いますが、資料は読んでおいて下さい。
=> 以下は次回あらためて
シェルスクリプトの書き方として、これまでに学んできたコマンドや 構文が使われていることが見てとれるだろう。(例えば以下のような)
if [ ... then ... fi
for □□□ in ... do ... done
これまでに説明を端折った構文として case文(右図)がある。
右のような ||
を使った書き方は、条件付き実行の記法として 幅広く使われている
着目すべき場所は:
Upstartの場合、.confファイルの後半に
script ... end script
という記述がある。ここがシェルスクリプトとして実行される
sysvinit で扱うファイルはすべてシェルスクリプト
Systemdではスクリプトでの起動はあまり使われていないようだ。
(上記のようにさまざまなディストリビューションでの傾向をまとめたが) antix ではほとんどの作業が sysvinit をベースに動いている (systemd-free を謳っているぐらいに徹底している)。 ので、sysvinit の動作を眺めてみる機会にしてください。
具体的な探検のストーリは別ページを参照