例えば、フルパスで表現されたファイル名からパスをカットする場合、以下のようなコマンドを実行します。
$ echo "/u01/app/oracle/admin/orcl/alert_orcl.log" | sed 's/.*\///' alert_orcl.log
- echo コマンドで"/u01/app/oracle/admin/orcl/alert_orcl.log"という文字列を標準出力に出力し、
- それをパイプを使って sed コマンドの標準入力として受け渡し、
- sed コマンドの中で正規表現を使った文字列の置換(ここでは任意の文字列の繰り返しの後に"/"が来る文字列のパターンがあった場合にそれを空文字に置換)を行っています。
filename=`echo "/u01/app/oracle/admin/orcl/alert_orcl.log" | sed 's/\.\///'`
置換対象の文字列がシェルスクリプト実行時に指定した第1引数だったりする場合は、以下のようになります。
filename=`echo "$1" | sed 's/\.\///'`
たかが文字列の置換ごときでかなり回りくどい書き方です。
しかし、このコマンドの中には、echo コマンド、sed コマンド、パイプ、特殊文字(シングルクォート、ダブルクォート、バッククォート、バックスラッシュ)、変数、正規表現と、bash の基本要素がふんだんに盛り込まれています。
この書き方の意味を完全に理解することができれば、bash がかなりわかったような気になれますね^^