Linux学習についてのまとめ 02 GNU/Linux

こんにちは。22年度入社の中島です。

現在、私はLinuCの101試験に合格するためにLinuxの学習を進めています。特にGNUに関する内容を理解することが重要であると感じ、これらの知識をブログとしてまとめました。この記事を通じて、GNU/Linuxの基本的な歴史やリチャード・ストールマンの貢献、さらにはLinuxのテキストフィルタコマンドについて共有します。

1. GNUの歴史について

GNUは「GNU’s Not Unix!」の略で、Unix互換のオペレーティングシステムを開発するために1983年にリチャード・ストールマンによって開始されたプロジェクトです。当時、ほとんどのソフトウェアがプロプライエタリ(専用)であり、ソースコードが公開されていませんでした。ストールマンは、ソフトウェアの自由な使用、改変、再配布を可能にすることを目指してGNUプロジェクトを立ち上げました。

GNUプロジェクトの最も重要な成果の一つは、GPL(GNU General Public License)です。GPLは、フリーソフトウェアに特化したライセンスであり、ユーザーにソフトウェアの自由を保障します。このライセンスは、ソフトウェアを自由に使用し、改変し、再配布することを許可しますが、改変や再配布されたソフトウェアも同様にGPLの下で公開される必要があります。この仕組みを「コピーレフト」と呼びます。コピーレフトは、ソフトウェアの自由を保護するための強力な手段であり、オープンソースソフトウェアの普及に大きく寄与しました。

コピーレフトの理念は、ソフトウェアが自由であるべきという考え方に基づいており、ユーザーがソフトウェアを制限なく利用できるようにすることを目的としています。このため、GPLはフリーソフトウェア運動の基盤となり、オープンソースコミュニティにも大きな影響を与えました。

GNUプロジェクトは、Unixと同様の機能を持つ多くのソフトウェアを開発しました。これらのソフトウェアには、コンパイラ(GCC)、テキストエディタ(Emacs)、シェル(Bash)などが含まれます。これらのツールは、現在も多くのユーザーに利用され、Linuxを含むさまざまなオペレーティングシステムで使用されています。

2. リチャード・ストールマンについて

リチャード・ストールマンは、フリーソフトウェア運動の先駆者であり、GNUプロジェクトの創始者です。1985年にフリーソフトウェア財団を設立し、ソフトウェアの自由を擁護する活動を続けています。彼の主張は、ソフトウェアがユーザーに自由を与えるべきであり、そのためにはソースコードが自由にアクセスできる状態でなければならないというものです。ストールマンの理念は、多くのフリーソフトウェアのライセンス(例:GPL)に反映されており、今日のオープンソースコミュニティに大きな影響を与えています。

3. GNUから生まれたLinux

GNUプロジェクトは多くのツールを開発しましたが、オペレーティングシステムの核となるカーネルは開発されていませんでした。1991年、リーナス・トーバルズによってLinuxカーネルが発表されました。GNUツールとLinuxカーネルを組み合わせることで、現在の多くのGNU/Linuxシステムが形成されました。このように、LinuxはGNUプロジェクトと密接に関連していますが、GNUそのものとは別の存在です。

4. GNU/Linuxのテキストフィルタコマンド

GNUシステムの基本コンポーネントには、GCC(コンパイラ)、glibc(ライブラリ)、Coreutils(コマンド)、GDB(GNUデバッガ)、Bashシェルなどが含まれています。
Coreutils(GNU Core Utilities)の中でも特徴的なのが、テキストデータを加工するコマンド群になります。シェル上でこれらのコマンドを組み合わせることで強力なデータ処理が可能です。

これらのテキストフィルタコマンドは、データ処理や分析において非常に役立つツールであり、試験勉強の一環として理解を深めることで、実際の業務でも役に立つと思いました。
業務で使うシーンを想定しながら、今回はそのコマンドと例文の一部をまとめようと思います。

代表的なテキストフィルタコマンド
コマンド説明
grepテキスト検索ツールで、指定したパターンに一致する行を抽出します。
例: grep -i ’error’ application.log
application.logファイル内で ‘error’ (大文字小文字区別なし)に一致する行を検索して表示します。
sedストリームエディタで、テキストの置換や削除、挿入を行います。
例:sed ‘s/localhost/127.0.0.1/g’ /etc/hosts
ホスト名をIPアドレスに置き換えます。設定ファイルを一括して修正する際に役立ちます。
awkテキスト処理言語で、テキストのパターンマッチングと処理が可能です。
例:awk ‘$3 == “root” {print $1}’ /etc/passwd
/etc/passwdファイルからrootユーザーのユーザー名を抽出します。
sortテキストデータをソート(並べ替え)します。
例: sort -k3,3 -t, data.csv
CSVファイルの3列目(例: 売上データ)を基準にしてソートします。
uniq重複する行を削除します(通常はsortと組み合わせて使用されます)。
例: sort access.log | uniq -c
アクセスログの重複するエントリを集計し、一意のリクエスト数を数えることができます。
cutテキストの特定のフィールドを抽出します。
例: cut -d ‘:’ -f 1 /etc/passwd
/etc/passwdファイルからユーザー名のみを抽出します。
tr文字の変換や削除を行います。
例: echo ‘abc123’ | tr ‘a-z’ ‘A-Z’
出力結果の小文字を大文字に変換します。

これらのコマンドを使いこなすことで、テキストデータの効率的な処理と分析が可能になります。

おわりに

今回の記事では、LinuC101試験に向けての学習の一環として、GNU/Linuxの歴史やリチャード・ストールマンの貢献、そしてテキストフィルタコマンドについてまとめました。これらの知識を深めることで、Linuxシステムの理解がさらに深まったと感じています。特に、シェルスクリプトの作成や自動化されたデータ処理、システム管理業務において、これらのコマンドの組み合わせが強力なツールとなることを理解しました。また、実際の業務でのデータ処理や、エラーの迅速な検出・修正など、より効率的なシステム運用に役立つ点も大いに学ぶことができました。

今回はここまで
最後までご覧いただきありがとうございました!

Linux学習についてのまとめ 01

こんにちは。22年度入社の中島です。

最近はLinuxの資格であるLinuCを受験するために、Linuxの学習をしています。
今回は復習も兼ねて学習したもの、実際に使ったものの一部を紹介したいと思います。

 

shutdownコマンド
私が最初に覚えたコマンドで、システムを安全に停止するコマンドです。

12:00に時間指定でシャットダウンする場合

[crayon-670dfb3484610405822502  ]shutdown -h 12:00[/crayon]

すぐに再起動する場合

[crayon-670dfb3484617593445496  ]shutdown -r now[/crayon]

私がこのコマンドを使うときは、オプションの-rをよく使います。

書式 shutdown [オプション] 時間 [メッセージ]

オプション
-h  シャットダウンする
-r  シャットダウン後に再起動

 

cpコマンド
ファイルやディレクトリをコピーするコマンド。
業務では、WinSCPなどで追加したVMの共有フォルダからファイルをコピーするとき以下のようなコマンドでファイル情報を保持するオプションをつけ実施しました。

[crayon-670dfb348461d127251836  ]cp -rp vagrant/html/* /var/www/html[/crayon]

書式 cp [オプション] コピー元ファイル名 コピー先ファイル名
   cp [オプション] コピー元ファイル名 コピー先ディレクトリ

オプション
-f  コピー先に同名のファイルがあれば上書きする
-i  コピー先に同名のファイルがあれば上書きするかどうか確認する
-p  コピー元ファイルの属性(所有者、所有グループ、アクセス権、タイムスタンプ)を
   保持したままコピーする

 

chownコマンド
ファイルに設定されている所有者を変更するコマンド。
業務ではApacheを起動する際、所有者が違ったのでオプションの-Rを使って対象ディレクトリの全ファイルの所有者を変更しました。

[crayon-670dfb3484622963292786  ]chown -R root vagrant[/crayon]

書式 chown [オプション] ユーザー [:グループ] ファイル名やディレクトリ名

オプション
-R  指定したディレクトリとその中にある全ファイルの所有者を変更する

 

lsコマンド
ディレクトリを指定した場合は、そのディレクトリ内のファイルを表示します。ファイル名を指定した場合は、そのファイルの属性を表示します。何も指定しない場合は、カレントディレクトリ内のファイルを表示します。ドットファイルも参照したかったため、以下のようなコマンドを実行して確認しました。

[/crayon]

書式 ls [オプション] (ファイル名あるいはディレクトリ名]

オプション
-l  カレントディレクトリにあるファイルの詳細設定を表示
-A ドットファイルも含めて表示。ただし./ および ../ をのぞく
-a  ドットファイルも含めて表示。

 

grepコマンド
ファイルやテキストの中に、 正規表現によって表される検索文字列があるかどうかを調べます。引数にファイルを指定した場合、そのファイルの中で検索パターンにマッチした文字列が含まれる行をすべて表示します。


オプションの-nをつけることで、自分の探している文字が何行目にあるかを確認することができます。

書式 grep [オプション] 検索パターン [ファイル名]

オプション
-n  検索結果とあわせて、行番号も表示する

 

いかがでしたでしょうか。

LinuCは、試験レベルが3つありレベル1の試験は、「101試験」と「102試験」の2試験に合格するとレベル1合格になります。Linuxの復習しながら、ブログの続きとしてを出していけたらと思います。

今回はここまで
最後までご覧いただきありがとうございました!