Red Hat Enterprise Linux コマンドラインへのアクセス

Red Hat Enterprise LinuxBeginner
オンラインで実践に進む

はじめに

この実験(Lab)では、Red Hat Enterprise Linux (RHEL) 環境における Linux コマンドライン操作の世界への基礎的な旅に出ます。ユーザー情報とシステム情報の特定、ユーザーパスワードの管理、さまざまなファイルタイプの検査を行うための重要なコマンドに関する実践的な経験を積むことができます。

実践的な演習を通して、catheadtail を使用してファイルの内容を表示し、ファイルの統計情報をカウントし、コマンド履歴を効率的にナビゲートする方法を学びます。さらに、重要なコマンドライン編集ショートカットを習得し、Linux システムの管理における生産性と習熟度を高めます。

ユーザーとシステム時間の特定

このステップでは、システムにログインしている現在のユーザーを特定する方法と、基本的な Linux コマンドを使用してシステムの現在の日付と時刻を表示する方法を学びます。これらの基本的なコマンドを理解することは、Linux 環境を操作および管理する上で非常に重要です。

まず、現在ログインしているユーザーを確認しましょう。この目的には whoami コマンドが使用されます。これは、現在のユーザーの実効ユーザー名を表示します。

ターミナルで次のコマンドを入力してください。

whoami
Screenshot of whoami command output

出力として 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 行で複数のコマンドを実行できます。これは、一連のコマンドをすばやく実行する場合に便利です。

whoamidate を同じ行で実行してみましょう。

whoami; date

両方のコマンドの出力が、次々と表示されます。

labex
Mon Jul 22 10:30:45 AM UTC 2024
Screenshot of whoami and date commands output

ユーザーパスワードの管理とファイルタイプの表示

このステップでは、ユーザーのパスワードを変更する方法と、file コマンドを使用してファイルのタイプを判別する方法を学びます。ファイルタイプの理解は、Linux で様々なデータ形式や実行ファイルを取り扱う上で不可欠です。

まず、ユーザーのパスワードを変更する練習をしましょう。passwd コマンドはユーザーのパスワードを変更するために使用されます。labex ユーザーの場合、現在のパスワード、次に新しいパスワードを 2 回入力するように求められます。labex の現在のパスワードは labex であることを覚えておいてください。

ターミナルで次のコマンドを入力してください。

passwd

現在のパスワード、次に新しいパスワードを 2 回入力するように求められます。この実験では、新しいパスワードを newpass に設定できます(重要:この実験ではデフォルトのパスワードを変更しないでください。)。

Changing password for user labex.
Current password: old_password  <-- labex と入力して Enter キーを押してください
New password: new_password      <-- newpass と入力して Enter キーを押してください
BAD PASSWORD: The password is shorter than 8 characters

注意: Linux でパスワードを入力する際、セキュリティ上の理由から画面に何も表示されません。これは正常な動作であり、VM が応答していないことを意味するものではありません。システムは入力された文字が見えなくても、入力を引き続き受け付けています。

パスワードが 8 文字未満であることが示されています。実際の環境では、少なくとも 8 文字以上で、より複雑なパスワードを設定する必要があります。しかし、この実験ではパスワードを変更しないため、Enter キーを押してパスワードの変更をスキップできます。

次に、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 コマンドである cathead、および 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 コマンドが実行されます。

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

最初の行の後に 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 を押します。カーソルから先頭までのテキストが削除されます。
  • Ctrl+K: カーソルからコマンドラインの末尾までをクリアします。
    • コマンドをもう一度入力します。行の途中(たとえば、「very」の後)にカーソルを置きます。Ctrl+K を押します。カーソルから末尾までのテキストが削除されます。
  • 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 の使用、および時間(+%Rなど)と日付(+%xなど)のさまざまなフォーマットオプションを含む、システムの現在の日付と時刻を表示するための date の使用を練習しました。さらに、セミコロンを使用して 1 行で複数のコマンドを実行する方法を発見し、コマンドライン環境での効率を向上させました。