Linuxの学習を進めていくにあたり、基本的なコマンドは必須の知識となります。本記事では初学者が最初に知っておくべきコマンドについて解説していきます。ここでの学習はAWSのEC2インスタンスにSSH接続済みである事を前提としています。EC2インスタンスへのSSH接続については「Linuxの基礎知識」の記事を参考にしてください。

特別なディレクトリ記号
Linuxでは特別なディレクトリを表す記号がいくつか存在ます。コマンドの詳細については後述しますがここでは以下の3つがあることを把握しておきましょう。
- . は現在のディレクトリを表しています。
- .. は一つ上の親ディレクトリを表しています。
- ~ はユーザのホームディレクトリを表しています。
ルートユーザの場合は/root/、一般ユーザの場合は/home/{ユーザ名}/のディレクトリを指します。
【現ディレクトリを再表示】
ls -l .
【親ディレクトリへの移動】
cd ..
【ホームディレクトリへの移動】
cd ~
~は省略可能です。
cd
コマンドオプションの結合
コマンドにはその挙動を変えるコマンドオプションがあります。コマンドオプションは個別に指定することもできますが、連結して指定することもできます。以下はファイルコピーのコマンドの例ですがどちらも同じ意味になります。
cp -i -p test1.txt test2.txt
cp -ip test1.txt test2.txt
タブ補完
ターミナル上でコマンド使用時に、ディレクトリやファイル名を指定する際、途中まで入力した状態からタブキーを押下するとマッチするディレクトリ・ファイル名を自動的に入力されます。ディレクトリ・ファイル名が途中まで重複するものがある場合は、重複部分までが自動入力されます。そこから続けてタブを2回連打すると候補を表示してくれます。重複するディレクトリ・ファイル名がない場合は最後まで自動入力されます。作業効率に直結するスキルなので習慣として身に付いている状態にしておきましょう。
sudoコマンド
一般ユーザではルート権限のコマンドは実行できないようになっています。次のセクションのユーザの管理などシステム全体に関わるコマンドは一般ユーザのec2-userでは直接実行できません。
ルートユーザしか実行できないコマンドを実行するにはルートユーザになるか、一般ユーザの状態から sudo コマンドを通してルート権限のコマンドを実行することになります。
【ルートユーザにスイッチ】
sudo su -
ルートユーザはシステム自体を破壊できる最高権限の管理者ユーザなので、コマンドの実行ミスがあるとサーバの起動ができなくなったりアクセス不能やデータ消失を引き起こす可能性があります。より安全にサーバを運用するためには一般ユーザで限定的に管理者ユーザのコマンドを実行するように心がけましょう。
【一般ユーザでルート権限のコマンドを実行】
sudo {ルートユーザコマンド}
ディレクトリ移動操作系コマンド
- pwd
-
print working directory: Linux上で現在自分がいるディレクトリーの位置をターミナルに表示します。
[ec2-user@www ~]$ pwd /home/ec2-user
- cd
-
change directory: 指定したのディレクトリに移動します。
【絶対パスでの指定】 cd /var/log/ 【相対パスでの指定】 cd ../../home/ec2-user/ 【ホームディレクトリ記号からディレクトリを辿って移動する場合】 cd ~/.ssh/
-
絶対パス・相対パスの違いについては「Linuxの基礎知識」の記事で確認してください。
ディレクトリ操作系コマンド
- ls
-
ディレクトリ内のリストを表示します。-l オプションをつけるとロングフォーマットで表示されます。
ls -l
- mkdir
-
ディレクトリの作成をします。-pオプションで存在しない親フォルダ(parent)フォルダも同時に作成します。
mkdir -p test1/test2
- cp
-
ディレクトリやファイルコピーにはcpコマンドを使用します。
-iオプション(既存ファイルがある場合は確認プロンプトの表示)
-pオプションでコピー元のファイルのタイムスタンプを保持します。
-rオプションでディレクトリ内のディレクトリ・ファイルもコピーします。
ディレクトリコピーには必須オプションです。cp -ipR dir_from dir_to
- rmdir
-
ディレクトリを削除する場合は、ディレクトリ内がからである必要があります。
rmdir test1/
ディレクトリの中身ごと強制削除する場合はforceオプション(f)とrecursiveオプション(r)を同時に指定する必要があります。
rm -fr test1/
ファイル操作系コマンド
ファイルの作成・編集コマンドはviまたはvimが代表的ですが、これは別記事にて紹介します。
【近日公開】「ターミナルのファイルエディター」の記事で学習していきます。
- touch
-
新規ファイルを作成します。
touch test.txt
- cp
-
ファイルをコピーします。
-iオプション(既存ファイルがある場合は確認プロンプトの表示)
-pオプションでコピー元のファイルのタイムスタンプを保持します。cp -ip test.txt test_copied.txt
- rm
-
ファイルの削除をします。-fオプションを付けた場合は強制削除になります。
rm /home/ec2-user/test.txt
ファイル表示系コマンド
- cat
-
ファイル内容をつなげてコンソールに表示。
元々は複数ファイルをつなげて表示するためのコマンドですが、意図しないファイルの編集保存を避けるために1ファイルだけで表示する使い方の方が多いかもしれませんね。cat ../example/config
- less
-
less my-file.txt
ページャー(pager)と呼ばれる類似のコマンドは複数ありますが、ここではもっとも代表的なlessコマンドのみ紹介しておきます。
【上下の移動】
ファイルを開いた後は、上下矢印で1行ごとの移動、スペースキーで次ページ、fキーで次ページ(forward)移動、bキーで前ページ(back)移動ができます。
【検索機能委】
検索をしたい場合は「/]を入力後にキーワードを入力します。リターン押下後に最初のマッチワードに移動します。次のワード位置に移動する場合はnキー(next)、前のワード位置に戻る場合はN(Shift + n)で移動します。
【コマンドの終了】
ファイルを閉じてコマンドを終了する場合は「:q」と入力してください。
ユーザ管理系コマンド
Linux上のユーザ管理もインフラを扱えるWebエンジニアとしては重要なスキルになります。ユーザ管理にはユーザーとユーザーグループの2つの区分けがあります。
通常ユーザを追加した場合、ユーザが作成されると同時に同名のユーザグループが作成され、そこに所属することになります(プライマリーグループ)。つまり自分のグループに自分が入っているという状態になります。
ユーザ自身が作成したディレクトリ・ファイルは基本的にはルートユーザ以外は他の一般ユーザは勝手に変更・削除ができないようになっています。自分の作成したファイル等に他のユーザがアクセスすることを許可する場合は、自分のユーザグループに許可したいユーザを追加するという作業が必要になります。
【ユーザの追加】
sudo useradd newuser
【ユーザリストファイルの確認】
sudo cat /etc/passwd
【ユーザグループリストの確認】
sudo cat /etc/group
【ユーザグループを作成】
sudo groupadd somegroup
【ユーザを追加と同時に明示的にプライマリグループを指定】
sudo useradd newuser -g somegroup
【newuserを別のグループにも追加】
sudo usermod -a -G somegroup newuser
【ユーザをグループから削除】
sudo gpasswd --delete newuser somegroup
【ユーザの削除】
sudo userdel newuser
追加されたユーザとユーザグループのリストファイルは以下の位置にあります。
ユーザリスト:/etc/passwd
ユーザグループリスト:/etc/groups
EC2インスタンスにはデフォルトでec2-userが追加されているので、別途追加する必要はありません。
コマンド履歴とコマンドの再実行
直近で実行したコマンドをさかのぼって実行したい場合は、上下矢印で履歴を移動できます。
上下矢印で遡るには遠い履歴のコマンドはhistoryコマンドを実行して、コマンド履歴を表示しましょう。
history
コマンド履歴の番号からコマンドを再実行する場合は「!行番号」で実行できますが、見間違いが起こりやすいのでこの方法はあまり使われません。対象のコマンドをコピペして実行しようとしているコマンド内容も目視確認した後に実行した方が安全です。
コマンドのマニュアル
コマンドのオプションを忘れてしまった場合は、簡易的にターミナル内で確認することができます。manコマンド(manual)でオプションを確認したいコマンドを指定して実行しましょう。
以下の例ではコピーコマンドのマニュアルを表示します。
man cp
lessコマンド同様に上下矢印やスペースキー、fキー(次ページ)・bキー(前ページ)、/検索ワードの操作ができます。
「:q」でマニュアルを閉じることができます。
ホスト名の指定
EC2インスタンスのホスト名はデフォルトでは割り振られた名前になっていて、一目で分かる名前にはなっていません。複数サーバを管理する場合、意図しないサーバ上で間違ってコマンドを実行しないために、自分が接続しているサーバをはっきりと認識しておかなければなりません。接続先のサーバを確認する際には分かりやすい名前を指定しておいた方がよいでしょう。ここでは、インスタンスに紐づいたドメイン名を設定しておくことをおすすめします。
【ホスト名の指定】
sudo hostnamectl set-hostname {ドメイン名}
【ホスト名の表示】
sudo hostname
ホスト名の変更が反映しない場合はターミナルを閉じて再度EC2インスタンスにSSH接続してください。
EC2インスタンスとドメインの関連付けに関しては「EC2インスタンスの作成手順」の記事を参照して下さい。

まとめ
本記事では最初に知っておくべきLinuxの基本的なコマンドについて学習しました。特別なディレクトリ記号があること、コマンドオプションがは結合できること、タブ補完の機能について知りました。そして一般ユーザでsudoコマンドを使用する方法を学習し、ディレクトリやファイル操作についてのコマンドを学習しました。ユーザ管理系のコマンドも重要でしたね。コマンド履歴から上下矢印でコマンドの再実行をすれば作業の効率化にもなります。コマンドのマニュアルを表示するコマンドがあることも分かりました。最後にはサーバのホスト名を指定する方法まで試しました。コマンドやオプションはもっと多種多様にありますので、日々学び続けていく必要があります。
【関連記事】「Linux|標準入力、標準出力、標準エラー、そしてリダイレクトとパイプとは」

【関連記事】「Linuxのアクセス権限(パーミッション)を理解する」
