はじめに
この実験(Lab)では、Red Hat Enterprise Linux(RHEL)環境を中心に、Linux のコマンドライン操作の基礎を学びます。ユーザーおよびシステム情報の特定、ユーザーパスワードの管理、さまざまなファイルタイプの検査を行うための必須コマンドを実践的に体験します。
実践的な演習を通じて、cat、head、tail コマンドを使用したファイル内容の表示、ファイルの統計情報の集計、コマンド履歴の効率的な操作方法を学びます。さらに、重要なコマンドライン編集のショートカットをマスターし、Linux システム管理における生産性と熟練度を高めます。
ユーザーとシステム時刻の特定
このステップでは、基本的な Linux コマンドを使用して、現在システムにログインしているユーザーを特定する方法と、システムの現在の日付と時刻を表示する方法を学びます。これらの基本コマンドを理解することは、あらゆる Linux 環境を操作および管理する上で非常に重要です。
まず、現在どのユーザーとしてログインしているかを調べます。これには whoami コマンドを使用します。このコマンドは、現在のユーザーの実効ユーザー名を出力します。
ターミナルに次のコマンドを入力します。
whoami

出力として labex が表示され、labex ユーザーとしてログインしていることがわかります。
labex
次に、date コマンドについて見ていきます。このコマンドは、システムの日付と時刻を表示または設定するために使用します。オプションを指定せずに実行すると、現在の日付と時刻がデフォルトの形式で表示されます。
date コマンドを実行します。
date
出力には、現在の曜日、月、日、時刻(HH:MM:SS)、タイムゾーン、および年が表示されます。正確な出力は、コマンドを実行するタイミングによって異なります。
Mon Jul 22 10:30:45 AM UTC 2024
date コマンドは非常に柔軟性が高く、フォーマット指定子を使用してさまざまな形式で出力できます。たとえば、24時間形式(HH:MM)で現在の時刻のみを表示するには、+%R を使用します。
時刻のみを表示してみましょう。
date +%R
出力は次のようになります。
10:30
MM/DD/YYYY 形式で現在の日付のみを表示するには、+%x を使用します。
日付のみを表示してみましょう。
date +%x
出力は次のようになります。
07/22/2024
最後に、セミコロン(;)で区切ることで、1行に複数のコマンドを実行できます。これは、一連のコマンドをすばやく実行したい場合に便利です。
同じ行で whoami と date を実行してみましょう。
whoami; date
両方のコマンドの出力が続けて表示されます。
labex
Mon Jul 22 10:30:45 AM UTC 2024

ユーザーパスワードの管理とファイルタイプの確認
このステップでは、ユーザーのパスワードを変更する方法と、file コマンドを使用してファイルの種類を判別する方法を学びます。ファイルの種類を理解することは、Linux におけるさまざまなデータ形式や実行ファイルを扱う上で不可欠です。
まず、実験のデフォルトのパスワードを変更せずに、パスワード変更がどのように始まるかを確認します。ユーザーのパスワードを変更するには passwd コマンドを使用します。labex ユーザーの場合、現在のパスワードの入力を求められた後、新しいパスワードの入力を求められます。現在のパスワードは labex です。
ターミナルに次のコマンドを入力します。
passwd
現在のパスワードのプロンプトが表示されたら、labex と入力して Enter キーを押します。新しいパスワードのプロンプトが表示されたら、Ctrl+C を押してコマンドをキャンセルし、シェルに戻ります。新しいパスワードは入力しないでください。
Changing password for user labex.
Current password:
New password: ^C
注意: Linux でパスワードを入力する際、セキュリティ上の理由から画面には何も表示されません。これは正常な動作であり、仮想マシン(VM)が応答していないわけではありません。入力した文字が見えなくても、システムは入力を受け付けています。
次に、file コマンドについて見ていきます。このコマンドはファイルの種類を判別します。特にファイルの拡張子が欠落している場合や誤解を招く場合に、ファイルにどのようなデータが含まれているかを理解するのに非常に便利です。
/etc/passwd ファイルの種類を確認してみましょう。このファイルには、システム上のすべてのユーザーアカウントに関する情報が含まれています。
file /etc/passwd
出力には、/etc/passwd が ASCII テキストファイルであることが示されます。
/etc/passwd: ASCII text
次に、現在使用しているシェルプログラムである /bin/bash などの実行ファイルの種類を確認してみましょう。
file /bin/bash
出力には、/bin/bash が実行ファイルであることや、そのアーキテクチャおよびその他のプロパティに関する詳細が表示されます。
/bin/bash: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=<omitted>, for GNU/Linux <omitted>, stripped
最後に、ディレクトリの種類を判別します。ここでは例として /home ディレクトリを使用します。
file /home
出力には、/home がディレクトリであることが単に示されます。
/home: directory
これらの例は、file コマンドを使用することで、Linux システム上のさまざまなファイルやディレクトリの性質を素早く特定できることを示しています。
cat、head、tail によるファイル内容の検査
このステップでは、3つの重要な Linux コマンド(cat、head、tail)を使用してテキストファイルの内容を検査する方法を学びます。これらのコマンドは、設定ファイルやログファイルなど、ファイルの内容を表示するための基本となります。
まず、cat コマンドを使用します。cat コマンド(concatenate の略)は、主にファイルの内容を表示するために使用されます。また、複数のファイルを1つに結合するためにも使用できます。
/etc/passwd ファイルの内容全体を表示してみましょう。このファイルには、ユーザーアカウントの情報が含まれています。
cat /etc/passwd
/etc/passwd ファイルの内容全体がターミナルに出力されます。すべてのユーザーエントリが表示されるため、出力は長くなります。
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
...output omitted...
次に、複数のファイルを扱う cat を実演するために、~/project ディレクトリに2つの簡単なテキストファイルを作成します。
file1.txt を作成します。
echo "Hello World!!" > ~/project/file1.txt
file2.txt を作成します。
echo "Introduction to Linux commands." > ~/project/file2.txt
次に、cat を使用して両方のファイルの内容を表示します。
cat ~/project/file1.txt ~/project/file2.txt
出力には、file1.txt の内容に続いて file2.txt の内容が表示されます。
Hello World!!
Introduction to Linux commands.
次に、head コマンドを使用します。head コマンドは、ファイルの最初の数行を表示します。デフォルトでは、最初の 10 行が表示されます。
/etc/passwd の最初の 10 行を表示してみましょう。
head /etc/passwd
/etc/passwd ファイルの最初の 10 行が表示されます。
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
-n オプションを使用すると、表示する行数を指定できます。たとえば、最初の 3 行を表示するには次のようにします。
head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
最後に、tail コマンドを使用します。tail コマンドは、ファイルの最後の数行を表示します。デフォルトでは、最後の 10 行が表示されます。
/etc/passwd の最後の 10 行を表示してみましょう。
tail /etc/passwd
/etc/passwd ファイルの最後の 10 行が表示されます。
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:998:996:systemd Resolver:/:/sbin/nologin
systemd-network:x:997:995:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System Message Bus:/:/sbin/nologin
polkitd:x:996:994:User for polkitd:/:/sbin/nologin
unbound:x:995:993:Unbound DNS resolver:/:/sbin/nologin
tss:x:59:59:TPM software stack:/:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:980:978::/run/gnome-initial-setup:/sbin/nologin
dnsmasq:x:979:977:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
head と同様に、-n オプションを使用して表示する行数を指定できます。たとえば、最後の 3 行を表示するには次のようにします。
tail -n 3 /etc/passwd
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:980:978::/run/gnome-initial-setup:/sbin/nologin
dnsmasq:x:979:977:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
これらのコマンドは、テキストエディタで開くことなくファイルの内容を素早く確認する上で非常に価値があります。特に、大きなファイルや特定の部分だけを確認したい場合に便利です。
ファイルの統計情報の集計とコマンド履歴の使用
このステップでは、wc コマンドを使用してファイルの行数、単語数、文字数をカウントする方法と、ターミナルでコマンド履歴機能を効果的に使用する方法を学びます。コマンド履歴の管理は、効率を高め、以前に実行したコマンドを思い出すために不可欠です。
まず、wc コマンド(word count)について見ていきます。このコマンドは、ファイルの行数、単語数、文字数をカウントするために使用します。
/etc/passwd ファイルの行数、単語数、文字数をカウントしてみましょう。
wc /etc/passwd
出力には、ファイル名の前に3つの数値(行数、単語数、文字数)が表示されます。正確な数値は、システム構成によって若干異なる場合があります。
41 98 2338 /etc/passwd
オプションを使用して、特定のカウントのみを表示することもできます。
-l:行数-w:単語数-c:文字数
/etc/passwd と /etc/group(ユーザーグループに関する情報が含まれている)の行数のみをカウントしてみましょう。セミコロンを使用することで、これを1行で実行できます。
wc -l /etc/passwd
wc -l /etc/group
各ファイルの行数が表示されます。
41 /etc/passwd
63 /etc/group
次に、/etc/group と /etc/hosts(ホスト名をIPアドレスにマッピングする)の文字数のみをカウントしてみましょう。
wc -c /etc/group /etc/hosts
出力には、各ファイルの文字数と合計数が表示されます。
883 /etc/group
114 /etc/hosts
997 total
次に、コマンド履歴について学びます。シェルは、実行したすべてのコマンドの記録を保持します。これは、コマンドを再実行したり、過去に行った作業を思い出したりする上で非常に便利です。
コマンド履歴を表示するには、history コマンドを使用します。
history`
現在のセッションおよび以前のセッションで入力したすべてのコマンドの番号付きリストが表示されます。出力の内容は、これまでの作業によって大きく異なります。
...output omitted...
23 clear
24 whoami
25 date
26 file /etc/passwd
27 cat /etc/passwd
28 head /etc/passwd
29 tail /etc/passwd
30 wc /etc/passwd
31 history
感嘆符(!)の後にコマンド番号または文字列を指定することで、履歴からコマンドを再実行できます。
たとえば、番号 26 のコマンド(上の例では file /etc/passwd ですが、環境によって異なります)を再実行するには、history の出力からその番号を見つけて使用します。
!26 ## 26 を履歴にある 'file /etc/passwd' の実際の番号に置き換えてください
シェルは最初に実行しようとするコマンドを表示し、その後にその出力が表示されます。
file /etc/passwd
/etc/passwd: ASCII text
また、特定の文字列で始まる直近のコマンドを再実行することもできます。たとえば、wc で始まる最後のコマンドを再実行するには次のようにします。
!wc
```これにより、最後に実行した `wc` コマンドが実行されます。
```plaintext
wc -c /etc/group /etc/hosts
883 /etc/group
114 /etc/hosts
997 total
これらの履歴機能を使用することで、複雑なコマンドを再入力することなく素早く呼び出して再実行でき、ワークフローのスピードを大幅に向上させることができます。
コマンドライン編集ショートカットの練習
このステップでは、便利なコマンドライン編集のショートカットを学び、実際に練習します。これらのショートカットを使用すると、ターミナルでコマンドを入力および修正する際の効率が大幅に向上し、マウスに手を伸ばすことなくテキストの移動や編集ができるようになります。
まず、長いコマンドを複数行に分けて記述する方法を理解しましょう。これにより、複雑なコマンドの可読性が向上します。行の末尾にバックスラッシュ(\)を使用すると、コマンドが次の行に続いていることを示すことができます。
複数行コマンドを使用して、2つの辞書ファイルの最初の 3 行を表示してみましょう。これらのファイルは通常 Linux システム上に存在し、単語のリストが含まれています。
head -n 3 \
/home/labex/project/words \
/home/labex/project/linux.words
1行目の後に Enter キーを押すと、残りの入力を待っていることを示す > プロンプト(または類似のもの)がターミナルに表示されます。残りの部分を入力し、もう一度 Enter キーを押します。
==> /home/labex/project/words <==
1080
10-point
10th
==> /home/labex/project/linux.words <==
1080
10-point
10th
次に、コマンドライン編集のショートカットをいくつか練習します。これらのショートカットは、ほとんどの最新の Linux ターミナル(Bash や Zsh など)で機能します。
長いコマンドを入力しますが、まだ Enter キーは押さないでください。
echo "This is a very long command that we will edit using shortcuts."
- Ctrl+A:コマンドラインの先頭にジャンプします。
- 上記のコマンドを入力した後、
Ctrl+Aを押します。カーソルが先頭に移動します。
- 上記のコマンドを入力した後、
- Ctrl+E:コマンドラインの末尾にジャンプします。
Ctrl+Aを押した後、Ctrl+Eを押します。カーソルが末尾に戻ります。
- Ctrl+U:カーソル位置からコマンドラインの先頭までを削除します。
- コマンドをもう一度入力します。行の途中の適当な場所(例:「very」の後ろ)にカーソルを置きます。
Ctrl+Uを押します。カーソルから先頭までのテキストが削除されます。
- コマンドをもう一度入力します。行の途中の適当な場所(例:「very」の後ろ)にカーソルを置きます。
- Ctrl+K:カーソル位置からコマンドラインの末尾までを削除します。
- コマンドをもう一度入力します。行の途中の適当な場所(例:「very」の後ろ)にカーソルを置きます。
Ctrl+Kを押します。カーソルから末尾までのテキストが削除されます。
- コマンドをもう一度入力します。行の途中の適当な場所(例:「very」の後ろ)にカーソルを置きます。
- Ctrl+LeftArrow(または Alt+B):コマンドライン上で前の単語の先頭にジャンプします。
- コマンドをもう一度入力します。行の末尾にカーソルを置きます。
Ctrl+LeftArrowを繰り返し押して、単語単位で左に移動します。
- コマンドをもう一度入力します。行の末尾にカーソルを置きます。
- Ctrl+RightArrow(または Alt+F):コマンドライン上で次の単語の末尾にジャンプします。
- 行の先頭にカーソルを置きます。
Ctrl+RightArrowを繰り返し押して、単語単位で右に移動します。
- 行の先頭にカーソルを置きます。
- Ctrl+R:コマンドの履歴リストからパターンを検索します。
Ctrl+Rを押します。(reverse-i-search)プロンプトが表示されます。以前に実行したコマンドの一部(例:date)の入力を始めます。ターミナルに履歴から一致する直近のコマンドが表示されます。Ctrl+Rを押し続けると、古い一致を順に確認できます。見つかったコマンドを実行するには Enter キーを押し、編集するには左右の矢印キーを押します。
これらのショートカットに慣れると、コマンドライン操作のスピードが大幅に向上します。筋肉の記憶(マッスルメモリ)に定着させるために、定期的に練習してください。
まとめ
この実験では、ユーザーおよびシステム情報を特定するための基本的な Linux コマンドを学びました。whoami を使用して現在ログインしているユーザーを特定する方法や、date を使用してシステムの日付と時刻を表示する方法(時刻を表す +%R や日付を表す +%x などのさまざまなフォーマットオプションを含む)を練習しました。さらに、セミコロンを使用して1行に複数のコマンドを実行する方法を習得し、コマンドライン環境での効率を高めました。



