はじめに
このチャレンジでは、シェルコマンドの出力を処理するシンプルなシェルスクリプトの作成方法を学びます。これは、タスクを自動化したり、コマンドラインツールから特定の情報を抽出したりするための基本的なスキルです。コマンド出力のキャプチャ、データの操作、そして処理した情報をスクリプト内で活用する方法を習得します。このチャレンジを通じて、システム管理に不可欠な実用的なスクリプト作成スキルを養うことができます。
コマンド出力を処理するシェルスクリプトの作成
このステップでは、ls -l コマンドの出力をキャプチャし、特定の情報(ファイルサイズとファイル名)を抽出して、整形された形式で表示するシェルスクリプトを作成します。この演習は、シェルスクリプトでよく行われるタスクである「コマンド出力のパース(解析)」を実践するものです。
タスク
ls -lコマンドの出力をキャプチャするシェルスクリプトを作成してください。- 各ファイルについて、
ls -lの出力からファイルサイズとファイル名を抽出してください。 - 抽出した情報を、指定されたフォーマットで表示してください。
要件
スクリプトは
~/project/scriptsディレクトリに作成してください。スクリプト名は
process_ls.shとしてください。スクリプトの先頭にはシバン(shebang)
#!/bin/bashを記述してください。スクリプト内で
ls -lコマンドの出力をキャプチャし、変数に格納してください。ls -lの出力にリストされている各ファイルについて、そのサイズと名前を抽出してください。抽出したファイルサイズとファイル名を以下の形式で表示してください:
File size: <file_size> bytes File name: <file_name><file_size>は実際のバイト単位のファイルサイズに、<file_name>は実際のファイル名に置き換えてください。
例
ファイルが存在するディレクトリでスクリプトを実行した場合、出力は以下のようになります:
[labex@host ~]$ cd ~/project/scripts
[labex@host scripts]$ nano process_ls.sh
[labex@host scripts]$ chmod +x process_ls.sh
[labex@host scripts]$ ./process_ls.sh
File size: 1300 bytes
File name: process_ls.sh
[labex@host scripts]$
実際のファイルサイズと名前は、現在のディレクトリの内容によって異なります。
ヒント
- コマンド置換(例:
variable=$(command))を使用すると、コマンドの出力をキャプチャできます。 - コマンド出力の各行を処理するには、
while readループが便利です。 ls -lコマンドは詳細な情報を提供します。各行から特定の列(フィールド)を抽出するには、awkやcutといったツールの使用を検討してください。ls -lの出力の最初の行は通常 "total" で始まります。個別のファイルを処理する際には、この行をスキップする必要があることに注意してください。- スクリプトに実行権限(
chmod +x)を付与することを忘れないでください。
まとめ
このチャレンジでは、コマンドの出力を処理するシェルスクリプトの作成方法を学びました。具体的には、ls -l の出力をキャプチャし、ファイルサイズと名前を抽出して、整形された形式で表示しました。この演習を通じて、コマンド置換、while read ループ、awk によるテキスト処理といった、シェルスクリプトの重要な概念を実践しました。これらのスキルは、タスクの自動化、ログファイルの解析、各種コマンドラインツールからの特定データの抽出に不可欠であり、RHCSA 試験の対策や日常のシステム管理業務において非常に重要です。



