バックエンドエンジニアにとって、サーバー環境の大部分を占める Linux や、日常的に開発に使用する macOS などの Unix系OS の操作スキルは必須です。GUI(グラフィカルユーザーインターフェース)だけでなく、CUI(キャラクターユーザーインターフェース)である コマンドライン を自在に扱うことで、作業効率は飛躍的に向上します。
この章では、コマンドラインの基本的な使い方と、サーバー操作の土台となる知識を習得します。
1. ターミナルの基本とファイルシステム
コマンドラインを操作するための画面を「ターミナル」や「コンソール」と呼びます。
現在地の確認と移動
pwd(Print Working Directory): 現在作業中のディレクトリのパスを表示します。/ 使用例:pwd/ 説明: 今、ファイルシステムのどこにいるかを確認します。ls(List): ディレクトリ内のファイルとフォルダの一覧を表示します。/ 使用例:ls -l/ 説明:-lオプションで詳細(パーミッション、サイズ、更新日時など)を表示するのが一般的です。cd(Change Directory): ディレクトリを移動します。/ 使用例:cd documents/ 説明:documentsフォルダへ移動します。cd ..: 一つ上の階層のディレクトリへ移動します。cd ~: ホームディレクトリ(ユーザーの個人フォルダ)へ移動します。
ファイルとディレクトリの操作
mkdir(Make Directory): 新しいディレクトリを作成します。/ 使用例:mkdir project_a/ 説明:project_aという名前のフォルダを作成します。touch: ファイルを作成(またはタイムスタンプを更新)します。/ 使用例:touch index.html/ 説明:index.htmlという空のファイルを作成します。cp(Copy): ファイルやディレクトリをコピーします。/ 使用例:cp file1 file2/ 説明:file1をfile2としてコピーします。cp -r: ディレクトリごとコピーする場合は-r(recursive) オプションが必要です。/ 使用例:cp -r dir1 dir2mv(Move): ファイルやディレクトリを移動・改名します。/ 使用例:mv file1 /tmp// 説明:file1を/tmpディレクトリに移動します。mv old_name new_name: ファイル名を変更(移動先と同じディレクトリで実行)します。rm(Remove): ファイルやディレクトリを削除します。/ 使用例:rm file1rm -rf: ディレクトリごと強制的に削除する場合は-rfオプションを使います。非常に強力なコマンドなので注意が必要です。 / 使用例:rm -rf dir1
2. ファイルの内容操作と標準入出力
コマンドライン操作では、プログラムの「入力」や「出力」を操作する概念が重要になります。
ファイル内容の表示と編集
cat(Catenate): ファイルの内容をすべて表示します。/ 使用例:cat log.txt/ 説明:log.txtの内容を画面に出力します。less: ファイル内容をページ単位で表示します。/ 使用例:less large_log.txt/ 説明: 長いファイルの内容をスクロールしながら表示できます(qで終了)。head: ファイルの先頭部分を表示します。/ 使用例:head -n 10 file.txt/ 説明: ファイルの先頭 10行 を表示します。tail: ファイルの末尾部分を表示します。/ 使用例:tail -f access.log/ 説明: ファイルの末尾を表示し続け、新しい行が追加されるとリアルタイムで更新 します(ログ監視で多用)。grep: 特定のパターンに一致する行を抽出します。/ 使用例:grep "ERROR" log.txt/ 説明:log.txtから「ERROR」という文字列を含む行を探して表示します。vim / nano: テキストエディタを開きます。/ 使用例:vim test.txt/ 説明: サーバー上でのファイル編集に使う基本的なエディタです。
標準入出力とパイプ(|)
Unix系OSでは、すべてのデータは「ストリーム(データの流れ)」として扱われます。
>(リダイレクト): コマンドの出力をファイルに書き込みます(ファイルは上書きされます)。/ 使用例:ls > file_list.txt>>(追記): コマンドの出力をファイルの末尾に追加します。/ 使用例:date >> log.txt|(パイプ): 前のコマンドの出力を次のコマンドの入力にします。/ 使用例:cat log.txt \| grep "FAIL"/ 説明:cat log.txtの出力結果を、grep "FAIL"コマンドの入力として渡し、フィルタリングします。
3. システムとユーザーの管理
バックエンドエンジニアは、サーバー上で稼働するプログラムを管理する役割も担います。
ps(Process Status): 現在実行中のプロセスを表示します。/ 使用例:ps aux/ 説明: システム全体のプロセスを詳細に表示します。top / htop: システムのリソース状況をリアルタイム表示します。/ 使用例:top/ 説明: CPU使用率やメモリ使用量が多いプロセスを監視します。kill: プロセスを終了させます。/ 使用例:kill 12345/ 説明: プロセスID(PID)12345 のプロセスを停止させます。sudo(Super User Do): 管理者権限でコマンドを実行します。/ 使用例:sudo apt update/ 説明: 通常の権限では実行できないシステム変更を一時的に管理者として行います。ssh(Secure Shell): リモートサーバーに接続します。/ 使用例:ssh user@server.com/ 説明: リモートサーバーに安全に接続し、コマンドライン操作を行います。
⭐ 演習課題
以下のタスクをコマンドラインで実行してみましょう。
practiceというディレクトリを作成し、その中に移動してください。data.txtという名前のファイルを作成し、echo "Hello AYCF"の実行結果をそのファイルに書き込んでください。data.txtの内容を画面に出力して確認してください。ホームディレクトリ(
~)に戻り、practiceディレクトリを削除してください。