Linuxの特徴
Linuxの特徴について解説します。
コマンドによるプログラム実行
Linuxでは、コマンドと呼ばれるテキストを入力してプログラムを実行します。これをCUI(キャラクタ・ユーザー・インターフェース)と呼びます。次のような真っ黒な画面で、コマンドを入力して、プログラムを実行します。lsコマンドを実行して、ファイル一覧を表示しているところです。
LinuxにはGUIの機能もあるのですが、リモートからSSHというプロトコルを使って接続して、コマンドを使ってプログラムを実行するのが基本になります。マウスで操作して、プログラムをクリックするGUI(グラフィカル・ユーザー・インターフェース)に慣れている場合は、CUIの画面に、最初は戸惑うかもしれません。
コマンドによる処理の自動化
GUIとCUIを比較した場合に、わかりやすいのはGUIですが、処理の自動化という観点で見た場合に、やりやすいのはCUIでのコマンド実行です。
CUIで実行するコマンドは単なるテキストです。コマンドを並べたファイルを作るだけで、複数の処理を実行することができます。
「auto.sh」という名前でファイルを作成して、処理を複数並べてみます。これは、シェルスクリプトと呼ばれるものです。「#」の部分はコメントで実行されません。
auto.sh
# 処理1 program1 # 処理2 program2 # 処理3 program3
shコマンドを使って、シェルスクリプトを実行してみます。
sh auto.sh
こんな風に記述するだけで「program1」「program2」「program3」を連続して実行することができます。シェルスクリプトの書き方について、後で簡単に解説します。
Linuxで使える便利なコマンド
Linuxでは、ファイル管理のための便利なコマンドが使えます。
ファイル一覧を表示
lsコマンドでファイル一覧を表示できます。
ls
出力結果の例です。ファイル一覧が表示されます。
cover examples lib README templates create_book_pdf.pl giblog.conf public serve.pl
現在のディレクトリを確認
pwdコマンドで現在のディレクトリを確認できます。
pwd
出力結果の例です。現在のディレクトリが表示されます。
/home/kimoto/labo/perlbook-linux
ファイルの内容を表示
catコマンドでファイルの内容を表示できます。
cat README
出力結果の例です。READMEに書かれている内容が出力されます。
書籍 PerlでポータブルなLinuxファイル管理入門 はじめに
現在の日付・時刻の表示
dateコマンドで、現在の日付と時刻を表示できます。
date
出力結果の例です。現在の日付と時刻が表示されます。
Sat Jul 10 11:25:51 JST 2021
検索でマッチした行を抜き出す
grepコマンドを使うと、検索でマッチした行だけを取得することができます。
grep 'Perl' book.txt
出力結果の例です。Perlを含む行だけが出力されます。
Perl Tutorail Linux & Perl
Linuxでは、このようなファイル管理に便利につかえるコマンドがたくさんあります。Linuxコマンドについては後の章で詳しく扱います。
ファイルのバックアップ
Linuxでは、rsyncというコマンドを使うと簡単にファイルのバックアップができます。
rsync -av 同期元ディレクトリ名 同期先ディレクトリ名
rsyncはローカルのファイルのコピーだけではなく、リモートサーバーへファイルを転送する機能があります。またrsyncは、ファイルの差分だけを転送してくれるので、バックアップが高速です。
ファイル履歴管理
Gitと呼ばれるツールを使うと、ファイル履歴を管理することができます。Gitは、一般的にはソースコードのファイル履歴管理に使われますが、日常的に使うファイルでも活用できます。
Gitでファイル履歴を管理した場合に、便利な機能は、簡単にファイルを過去の状態に戻せることです。
# ファイルを過去の状態に戻す git reset --hard コミットID
間違ってファイルを上書き保存してしまった、間違ってファイル内容を置換してしまった、こんな場合でも、Gitでファイル管理をしていれば、安心です。
この書籍では、Perlワンライナーによるファイル内容の置換を解説しますが、間違って置換してしまうことが、よくあります。こんなときに、Gitでファイルを管理していれば、簡単に戻すことができます。
Perlワンライナー
Perlには通称ワンライナーと呼ばれる、Linuxコマンドのように、1行で処理を実行することができる機能があります。
ここでは、「fruits.txt」というファイルの中にある「banana」という単語を「orange」にすべて変換するというワンライナーを書いてみましょう。
# すべてのbananaをorangeに置換 perl -pi -e 's/banana/orange/g' fruits.txt
ファイル「fruits.txt」の内容は、以下のようであったとします。
banana banana banana
上記のPerlワンライナーを実行すると、ファイル内容が以下のよう置換されます。
orange orange orange
ファイル内容を置換という処理をPerlワンライナーを使って、1行で書くことができました。この例は置換の例ですが、Perlワンライナーでは、Perlプログラミング言語のすべての機能を使うことができます。
「-pi」や「-e」はperlコマンドで指定できるオプションです。このオプションについては、Perlワンライナーの章で詳しく解説します。
Perlを使ったファイル管理
Perlを使ってファイル管理を行う方法について解説します。Perlには、Linuxコマンドに対応する関数がたくさんあります。
Linuxコマンド | Perlの機能 |
---|---|
chdir | chdir関数 |
chmod | chmod関数 |
-f | -f |
ls | glob関数 |
find | File::Findモジュール |
basename | File::Basenameのbasename関数 |
ファイルの存在を確認するファイルテスト演算子「-f」、ファイル一覧を取り出せるglob関数、再帰的にファイルを処理するFile::Findモジュールなど、うまく組み合わせると、ファイル管理の処理を簡単に書くことができます。
Linuxの利用方法
Linuxの利用方法を紹介します。
すでにLinuxサーバーがある場合
業務では、すでにLinuxサーバーの環境構築がされていて、Linuxサーバーにログインするための、ユーザー名とパスワードを教えてもらうという場合があります。
このような場合は、ローカルのPCから、リモートのLinuxサーバーに接続して、コマンドを実行できるSSHクライアントと呼ばれる種類のソフトウェアを使う必要があります。
また、リモートのLinux上のファイルを編集するために、SFTPと呼ばれるSSHの上に構築されるファイル転送プロトコルに対応したソフトウェアが必要になります。
ここでは、Windowsで使えるソフトウェアを紹介します。Macの場合も、同じ用途のソフトウェアがありますので、検索してみてください。
Tera Term - SSHクライアント
SSHクライアントであるTera Termというソフトウェアを使うと、Linuxサーバーに接続してコマンドを実行できます。接続する場合は、LinuxサーバーのIPアドレス・ポート番号・ユーザー名・パスワードを指定します。
WinSCP - Linuxサーバー上のファイルを編集する
SFTPに対応したWinSCPというソフトウェアを使うと、Linuxサーバーに接続して、Linuxサーバー上にあるファイルを編集することができます。接続する場合は、LinuxサーバーのIPアドレス・ポート番号・ユーザー名・パスワードを指定します。
VPSサービスを利用する
Linux環境を自分で構築するには、VPSと呼ばれるサービスを利用することができます。VPSは、バーチャルプライベートサーバーと呼ばれ、月額600円~1000円程度で、自分専用のマシンをレンタルし、その上に、Linuxをインストールすることができます。
ローカルPCでバーチャルマシンを利用する
ローカルPC上に、VMWareなどのバーチャルマシンをインストールし、その上に、Linuxをインストールすることができます。ローカル環境で、無料で利用可能な方法です。
Windows上のWSL2を利用する
Windows 10から提供されているWSL2という機能を利用して、この上に、Linuxをインストールすることができます。ローカル環境で、無料で利用可能な方法です。
Windows上でmsys2を利用する
msys2は、Windows上に、Linuxの疑似的な環境を構築することができるソフトウェアです。msys2のインストールだけで、疑似的なLinux環境が構築できます。
msys2は、完全なLinux環境ではないのですが、たいていの場合は、Linux環境として動作し、Windowsのファイルシステムにアクセスでき、比較的インストールが簡単です。
Linuxディストリビューションの紹介
Linuxディストリビューションとは、Linuxカーネルの上に、Linuxで使える便利なソフトウェアを利用できるようにした、各コミュニティが提供するLinuxの環境のことです。
無料で利用できるLinuxディストリビューションに、CentOS、Oracle Linux、Ubuntu、Debian、Fedora、openSUSE、Arch Linux、AlmaLinux、Rocky Linuxなどがあります。
Linuxディストリビューションには、保守期間の長さ、コマンドの後方互換性の高さ、最新のパッケージを積極的に採用する、利用者の多さなど、いくつかの特徴があります。自分にあった使いやすいものをひとつ選択してみましょう。
LinuxはUNIXからの派生ですが、無料で使えるUNIXに、FreeBSD、NetBSD、OpenBSDなどがあります。