はじめに
こんにちは![]()
皆さんはCUIとCLI、どちらの用語を使いますか?
今回は「CLIとは?」「知らないとまずい基本コマンド」をオプション別にまとめています。
環境により、一部コマンドが機能しないこともあります
⚫︎ CLIコマンド一覧
ファイル操作・ディレクトリ管理コマンド
| コマンド | 説明 |
|---|---|
| ls | ファイルやディレクトリを表示 |
ls -l (詳細表示) |
|
ls -a (隠しファイル含む) |
|
ls -laF (両方適用し、ファイル種別を表示) |
|
| cd | ディレクトリを移動 |
cd .. (親ディレクトリへ) |
|
cd ~ (ホームディレクトリへ) |
|
cd - (直前にいたディレクトリへ戻る) |
|
| pwd | 現在の作業ディレクトリのフルパスを表示 |
| cp | ファイルやディレクトリのコピー |
cp -r [ディレクトリ名] [新規ディレクトリ名] (ディレクトリを再帰的にコピー) |
|
cp -i [移動元] [移動先] (上書き前に確認) |
|
| mv | ファイルやディレクトリの移動/リネーム |
mv -i [移動元] [移動先] (上書き前に確認) |
|
| rm | ファイルやディレクトリの削除 |
rm [ファイル名] (ファイルを削除) |
|
rm -r [ディレクトリ名] (ディレクトリを再帰的に削除) |
|
rm -f [ファイル名] (存在しない場合でもエラーを出さずに削除。確認プロンプトをスキップ) |
|
rm -rf [ディレクトリ名] (ディレクトリを強制的に再帰削除) |
|
| mkdir | ディレクトリの作成 |
mkdir -p [ディレクトリ名]/[サブディレクトリ名] (親ディレクトリも同時に作成) |
|
| touch | 空のファイルを作成またはファイルのタイムスタンプを更新 |
touch -d "2 days ago" [ファイル名] (指定日時に更新) |
|
| find | ファイルやディレクトリを検索 |
find . -name "*.txt" (カレントディレクトリ以下で名前がtxtで終わるファイルを検索、ワイルドカード使用可) |
|
find [パス] -type f (ファイルのみを検索) |
|
find [パス] -type d (ディレクトリのみを検索) |
|
| ln | ファイルへのリンク(別名)を作成 |
ln -s [元ファイル] [リンク名] (シンボリックリンク*を作成。ディレクトリにも使える) |
|
ln [元ファイル] [リンク名] (ハードリンク*を作成。同じinodeを指す) |
- [パス]
* 定義: ファイルやディレクトリの場所を示すアドレス。絶対パス(/home/user/...)または相対パス(../...)で指定する。カレントディレクトリを示す.や、ホームディレクトリを示す~も使用できる。
- シンボリックリンク (Symbolic Link)
* 定義: 別のファイルやディレクトリへのパス情報を記録した特殊なファイル(ショートカットのようなもの)。元ファイルが削除されると使えなくなる(切断)。- ハードリンク (Hard Link)
* 定義: 元ファイルと**同じデータ本体(inode)**を直接指す別名。元ファイルが削除されても、ハードリンクが残っていればデータは削除されない(リンク先の削除までデータが保持される)。
ファイル内容表示・編集コマンド
| コマンド | 説明 |
|---|---|
| cat | ファイルの内容を標準出力または連結 |
cat -n [ファイル名] (行番号を付けて表示) |
|
cat file1 file2 > file3 (file1とfile2を結合しfile3に出力) |
|
| less | ファイルの内容をページ単位で表示 |
less [ファイル名] (スペースキーで次ページ、qで終了。/で検索、g/Gで先頭/末尾へ移動) |
|
| head | ファイルの先頭部分を表示 |
head -n [数値] [ファイル名] (先頭から指定行数を表示) |
|
| tail | ファイルの末尾部分を表示 |
tail -n [数値] [ファイル名] (末尾から指定行数を表示) |
|
tail -f [ファイル名] (ファイルの内容を監視し続ける) |
|
| grep | ファイルから指定したパターンを含む行を検索 |
grep -i [検索文字列] [ファイル名] (大文字小文字を区別しない) |
|
grep -c [検索文字列] [ファイル名] (一致した行の総数を返す) |
|
grep -l [検索文字列] [ファイル名] (一致した行を含むファイル名のみを出力) |
|
grep -w [検索文字列] [ファイル名] (単語の完全一致で検索。例: "is" で "this" はヒットしない) |
|
grep -r [検索文字列] [ディレクトリ名] (ディレクトリを再帰的に検索) |
|
| vim/nano | 標準的なテキストエディタを起動 |
vim [ファイル名] / nano [ファイル名] (設定ファイルなどの編集に必須) |
|
| echo | 文字列を標準出力またはファイルへ書き出し |
echo $PATH (環境変数の値を出力) |
|
echo "Hello" > file.txt (ファイルに文字列を上書き) |
|
| sort | ファイルの内容を行単位でソート(並べ替え) |
sort -r [ファイル名] (逆順でソート。降順) |
|
sort -n [ファイル名] (行頭または指定フィールドを数値として比較しソート) |
- 環境変数 (Environment Variable)
* 定義: シェルやOSが参照する、動作環境に関する設定情報。exportコマンドで子プロセスに公開される。
* 調べ方:echo $[環境変数名]やenvコマンドで一覧を表示する。例:echo $PATH。
履歴・情報・ヘルプコマンド
| コマンド | 説明 |
|---|---|
| history | 過去に実行したコマンドの履歴を表示 |
history [数値] (最近[数値]件の履歴を表示) |
|
! [履歴番号] (指定番号のコマンドを再実行) |
|
! [検索文字列] (直前の[検索文字列]で始まるコマンドを再実行) |
|
!$ (直前のコマンドの最終引数を使用) |
|
!! (直前のコマンドを再実行) |
|
| man | コマンドのマニュアルを表示 |
man [コマンド名] |
|
| which | コマンドの実行ファイルのフルパスを表示 |
which [コマンド名] (コマンドがどこにあるかを確認) |
|
| alias | コマンドに別名(エイリアス)を定義 |
alias ll='ls -alF' (別名を定義し、頻繁に使うオプションを省略) |
|
| export | シェル変数を環境変数として定義・公開 |
export PATH=$PATH:/usr/local/bin (環境変数を追加し、子プロセスに引き継ぐ) |
|
| exit | 現在のシェルを終了 |
ネットワーク・通信コマンド
| コマンド | 説明 |
|---|---|
| ping | ネットワークの接続性を確認 |
ping -c [数値] [接続先]* (指定回数で停止) |
|
| ssh | リモートホストに安全に接続(リモート操作) |
ssh -i [鍵ファイル] [ユーザー名]@[接続先]* (鍵ファイルを指定) |
|
ssh -p [ポート番号] [ユーザー名]@[接続先] (ポート番号を指定) |
|
| scp | SSHプロトコルを使用したリモートとの安全なファイルコピー |
scp [ファイル名] [ユーザー名]@[接続先]:[パス] (ファイルをリモートへ送信) |
|
| curl | URLを指定してデータを転送(Web APIテストなどに利用) |
curl -O [URL] (ファイルをダウンロード) |
|
| ip addr / ifconfig | ネットワークインターフェースの設定(IPアドレスなど)を表示 |
ip addr show (現在のネットワーク設定を表示。Linuxで推奨されるコマンド) |
|
ifconfig (ネットワーク設定を表示。Mac/古いLinuxで利用) |
|
| route | ルーティングテーブル(通信経路)の表示と操作 |
route -n (ルーティングテーブルを数値形式で表示) |
- [接続先] (Host)
* 定義: ネットワーク上の別のコンピューターやサーバーの識別名。IPアドレス(例:192.168.1.1)かホスト名(例:example.com)を指定する。- [鍵ファイル]
* 定義: SSH接続時に使用する秘密鍵ファイル(通常は~/.ssh/id_rsaなどのパス)。
圧縮・アーカイブコマンド
| コマンド | 説明 |
|---|---|
| tar | ファイルやディレクトリをアーカイブ/展開 |
tar czvf [アーカイブ名].tar.gz [ファイル名/ディレクトリ名] (gzip圧縮アーカイブ作成。ハイフンなしで実行可能) |
|
tar xzvf [アーカイブ名].tar.gz (gzip圧縮アーカイブ展開) |
|
| zip/unzip | ファイルを圧縮・解凍(zip形式) |
zip -r [アーカイブ名].zip [ファイル名/ディレクトリ名] (圧縮) |
|
unzip [アーカイブ名].zip (解凍) |
アクセス権限・ユーザー管理コマンド
| コマンド | 説明 |
|---|---|
| chmod | ファイルやディレクトリのアクセス権限変更 |
chmod u+x [ファイル名] (所有者に実行権限を追加) |
|
chmod 755 [ファイル名] (権限を数値で設定) |
|
chmod -R 755 [ディレクトリ名] (ディレクトリを再帰的に変更) |
|
| chown | ファイルやディレクトリの所有者変更 |
chown [ユーザー名]:[グループ名] [ファイル名] (所有者とグループを同時に変更) |
|
| sudo | 特権ユーザー(root)としてコマンドを実行 |
sudo [コマンド名] |
|
sudo su - (rootユーザーに切り替える) |
- 数値 (chmod 755など)
* 定義: ファイルのアクセス権限を8進数で表したもの(例: 7はrwx、5はr-xを意味する)。
リソース・プロセス管理コマンド
| コマンド | 説明 |
|---|---|
| df | ディスクの空き容量を表示 |
df -h (人間が読みやすい形式で表示) |
|
| du | ファイルやディレクトリのディスク使用量を表示 |
du -sh [ディレクトリ名] (指定ディレクトリの合計サイズを読みやすい形式で表示) |
|
| ps | 現在実行中のプロセスを表示 |
ps aux (全ユーザーの全プロセスを表示) |
|
ps -ef (全プロセスの詳細情報を表示) |
|
| top | システムの使用状況をリアルタイムで表示 |
top (CPUやメモリの使用率などを監視) |
|
| kill | プロセスを終了させる(シグナル送信) |
kill [PID] (プロセスIDを指定して正常終了。シグナル15/SIGTERMがデフォルト) |
|
kill -9 [PID] (強制終了。シグナル9/SIGKILL。最終手段として使用) |
- PID (Process ID)
* 定義: 実行中の個々のプロセス(プログラム)に割り当てられた一意の識別番号。ps auxやtopコマンドで確認できる。
⚫︎ CLIコマンドの概要と利点
1. CLI/CUIとは? GUIとの違い
コンピュータを操作する形式として、GUI (Graphical User Interface) と、テキストベースのインターフェースがあります。
テキストベースのインターフェースは、CLI (Command Line Interface) が技術文書や現場で一般的に使われる呼称です。
また、この形式はCUI (Character User Interface) とも呼ばれ、特に日本国内で使われることもありますが、指している機能は同一で、キーボードからのテキスト入力(コマンド)のみで操作します。
| 特徴 | CLI / CUI | GUI |
|---|---|---|
| 操作方法 | テキスト(コマンド)入力 | マウス/タッチ操作、視覚的な要素 |
| 得意な処理 | 自動化、繰り返し処理、リモート操作 | 直感的、単一タスクの迅速な実行 |
| リソース | 軽量(CPU、メモリ消費が少ない) | 重い(グラフィック描画が必要) |
2. コマンドライン操作が必須な理由
エンジニアリングやシステム管理において、CLIの習熟は単なる知識ではなく、生産性と効率性を決定づけるスキルです。
A. 驚異的な自動化と高速性
GUIでは何十回もクリックが必要な操作も、CLIではシェルスクリプトというテキストファイルにコマンドを記述することで、一瞬で自動実行できます。
例えば、ログファイルから特定のエラーを抽出・圧縮し、別のサーバーへ転送する一連の作業は、数行のスクリプトで完了します。
B. リモート環境での普遍性
サーバーやクラウド環境(AWS, Azure, GCP)は、基本的にGUIを持たないCLI環境で動作しています。SSHを使ってリモートサーバーに接続し、ファイル操作やシステム監視を行うには、CLIコマンドが唯一の手段となります。OSやディストリビューションが異なっても、コアなコマンド(ls, cd, grepなど)は共通しており、環境を選ばず作業が可能です。
C. パイプとリダイレクトによる柔軟な連携
CLIでは、パイプ (|) やリダイレクト (> / <) という仕組みを使い、複数のコマンドの出力を次のコマンドの入力に連結できます。
-
例:
ps aux | grep nginx | kill -9-
ps aux(実行中のプロセス一覧を表示) の結果を -
grep nginx(nginxを含む行を検索) へ渡し、 - その結果得られたプロセスIDを
kill -9(強制終了) へ渡す。
-
これにより、複雑な処理を単機能なコマンドの組み合わせで実現でき、高度なデータ処理やシステム制御が可能になります。