この記事では、WEB エンジニアを目指して学習をしている初心者向けに、ターミナルの基本的なコマンドの使い方について説明します。
ターミナルの使い方についてはこちらの記事で紹介しています。
grep コマンド
grepは、ファイルの中で「文字列(パターン)」が含まれている行を表示するコマンドです。
検索対象には、複数のファイルやディレクトリを指定できます。
ファイルを指定しなかった場合は、標準入力から読み込みます。パイプ(|)と組み合わせて、
他のコマンドの出力結果から必要な箇所だけを絞り込んで表示する際によく使われます。
ファイルの中のパターンを検索するコマンドは以下になります。
grep [オプション] 検索パターン ファイル
例えば、以下のコマンドは、file1 の中から「sample」を含む行を表示するコマンドです。
grep -i sample file1
また、コマンドの結果を絞り込む場合は、パイプ(|)を使って以下のように書きます。
コマンド | grep [オプション] 検索パターン
例えば、以下のコマンドではlsコマンドの結果のうちdirという文字列を含むものだけを表示します。
ls | grep dir
grep コマンドのオプション
grep コマンドのオプションには以下のようなものがあります。
- 
検索パターンに関するオプション 短いオプション 長いオプション 意味 -e 検索パターン --regexp=パターン 検索パターンを指定する -G --basic-regexp 検索に基本正規表現を使う -E --extended-regexp 検索に拡張正規表現を使う -P --perl-regexp 検索に Perl 正規表現を使う -f ファイル --file=ファイル ファイルに書かれているパターンを検索する -i --ignore-case 大文字と小文字を区別しない -w --word-regexp 単語全体でパターンと一致するものを検索する -x --line-regexp 行全体がパターンと一致するものを検索する  - 
表示関連のオプション 短いオプション 長いオプション 意味 -v --invert-match パターンに一致しない行を表示する -s --no-messages エラーメッセージを表示しない -q --quiet --silent 結果を表示しない(主にシェルスクリプトなどで判定用に使う) -L --files-without-match 一致するものが含まれていないファイルのファイル名のみ表示する -l --files-with-matches 一致するものが含まれているファイルのファイル名のみ表示する -c --count 一致するものが含まれている回数のみ表示 -m 回数 --max-count=回数 パターンが指定した回数に達したら処理を終了する -o --only-matching 一致した箇所だけを表示する(通常は行単位で表示) -n --line-number 行番号を併せて表示する -b --byte-offset パターンが何文字目にあるかを併せて表示する -H --with-filename ファイル名を併せて表示する -h --no-filename ファイル名を表示しない(複数ファイル指定時) --color=WHEN 見つかったパターンを目立たせる(WHEN 部分には always、never、auto を指定) -B 行数 --before-context=行数 一致した行の前の行も表示する -A 行数 --after-context=行数 一致した行の後の行も表示する -C 行数,-行数 --context=行数 一致した行の前後の行も表示する  - 
検索対象関連のオプション 短いオプション 長いオプション 意味 -d ACTION --directories=ACTION 検索対象にディレクトリを指定した場合の動作(ACTION 部分には read、recurse、skip を指定) -r --recursive ディレクトリを指定した場合はサブディレクトリ内のファイルも含めて検索する(--directories=recurse 相当) -R --dereference-recursive サブディレクトリも含めて検索、さらにシンボリックリンクの先も対象とする --include=パターン パターンにマッチするファイルだけを対象とする --exclude=パターン パターンにマッチするファイルは検索対象から除外する --exclude-from=ファイル 対象から除外するファイル名のパターンをファイルから読み込む --exclude-dir=パターン パターンにマッチするディレクトリは検索対象から除外する  
awk コマンド
awkは、空白などで区切られたテキストを処理するコマンドです。
演算機能もあり、プログラミング言語としても使用されています。
awkコマンドの書式は以下のようになります。
awk [オプション] [コマンド] [ファイル]
基本的な使い方としては、
awk 'パターン {アクション}' ファイル名
という形で、テキストファイルを 1 行ずつ読み、パターンに合致した行に対して、アクションで指定された内容を実行します。
例えば、ファイルサイズが約 1MB 以上の行を出力するコマンドは以下のようになります。
ls -l | awk '$5>=1000000{print}'
awk コマンドのオプション
awkコマンドのオプションには以下のような物があります。
| 短いオプション | 意味 | 
|---|---|
| -f ファイル名 | awk スクリプトが書かれたファイルを指定する | 
| -F 区切り文字 | 区切り文字を指定する(デフォルトは空白文字) | 
| -v 変数名=値 | 変数を定義する | 
sed コマンド
sedは、「Stream EDitor」の略で、sed スクリプトコマンド ファイル名で、指定したファイルをコマンドに従って処理し、標準出力へ出力します。
ファイル名を省略した場合は、標準入力からのデータを処理します。sed コマンドでは、パイプとリダイレクトを活用するのが一般的です。
sedコマンドは以下のように使います。
sed [オプション]
または、
sed [オプション] スクリプトコマンド 入力ファイル
sed コマンドのオプション
sed コマンドの主なオプションは次の通りです。
| 短いオプション | 長いオプション | 意味 | 
|---|---|---|
| -r | --regexp-extended | スクリプトで拡張正規表現を使用する | 
| -e スクリプト | --expression=スクリプト | スクリプト(コマンド)を追加する | 
| -f スクリプトファイル | --file=スクリプトファイル | 実行するコマンドとしてスクリプトファイルの内容を追加する | 
| -i | --in-place | ファイルを直接編集する | 
| -i 拡張子 | --in-place=拡張子 | ファイルを直接編集し、指定した拡張子でバックアップする(※「-i」と「拡張子」の間には空白を入れない) | 
| --follow-symlinks | -i で処理する際にシンボリックリンクをたどる | |
| -n | --quiet,--silent | 出力コマンド以外の出力を行わない(デフォルトでは処理しなかった行はそのまま出力される) | 
| -l 文字数 | --line-length=文字数 | l コマンドの出力行を折り返す長さを指定する(※「-l」と「文字数」の間には空白を入れる) | 
| -s | --separate | 複数の入力ファイルを一続きのストリームとして扱わずに個別のファイルとして扱う | 
| -u | --unbuffered | 入力ファイルからデータをごく少量ずつ取り込み、頻繁に出力バッファを掃き出す | 
| -z | --null-data | NUL 文字で行を分割する(通常は改行で分割) | 
| --posix | 全ての GNU 拡張を無効にする | 
lsof コマンド
lsofコマンドは、オープンしているファイルを一覧表示するコマンドです。
以下のようにして使用します。
lsof [オプション] [パス名]
lsof コマンドのオプション
lsof コマンドの主なオプションは次の通りです。
| 短いオプション | 意味 | 
|---|---|
| -a | 複数のオプションを指定した際に、AND(かつ)の意味で機能させる | 
| -u ユーザー | 表示対象にしたいユーザーの名前またはユーザー ID を指定する | 
| -p プロセス ID | 表示対象にしたいプロセス ID を指定する | 
| -c 文字列 | 表示対象にしたいプロセスの先頭文字列を指定する | 
| +c 文字数 | プロセス名を表示する際の長さを指定する | 
| -d 数字 | 表示対象にするファイルディスクリプタ | 
| +d ディレクトリ | 表示対象にするディレクトリ名 | 
| +D ディレクトリ | 表示対象にするディレクトリ名(サブディレクトリ以下も対象になる) | 
| -D | デバイスキャッシュファイルを使用する | 
| -e ディレクトリ | 対象外にするディレクトリ | 
| -i | ネットワークソケットを対象にする | 
| -T | TCP の状態(LISTEN など)を表示しない | 
| -X | TCP/UDP のファイルを対象外にする(-i と同時には使用できない) | 
| -l | ユーザー名の換わりにユーザー ID を表示する | 
| -n | ホスト名の換わりに IP アドレスを表示する | 
| -P | ポート名の換わりにポート番号を表示する | 
| -R | 親プロセスのプロセス ID(PPID)を表示する | 
| -t | プロセス ID のみを表示する(警告を出力しないオプション「-W」も同時に指定した扱いになる) | 
| +L | リンク数(NLINK 欄)を表示する | 
| -L | リンク数(NLINK 欄)を表示しない(デフォルト) | 
| -o | SIZE/OFF 欄で常にオフセット(OFFSET)を表示する | 
| +w | 警告(warning)を表示する | 
| -- | オプションの区切り。「--」以降はオプションではなくファイル名として扱う | 
curl コマンド
curlコマンドは、さまざまなプロトコルに対応したデータを転送するためのコマンドです。
URL をパラメータにしてそのコンテンツを標準出力させるのが、基本的な使い方になります。
curlコマンドの書式は、以下のようになります。
curl -O [オプション] URL
取得したコンテンツをファイルに保存する場合は、以下のように実行します。
curl [オプション] URL > 保存ファイル名
例えば、URL を指定してファイルをダウンロードするコマンドは、以下のようになります。
curl http://…/download.zip > myfile.zip
curl コマンドのオプション
curl コマンドの主なオプションは次の通りです。
| 短いオプション | 長いオプション | 意味 | 
|---|---|---|
| -O | --remote-name | 転送元と同じ名前で保存する(「-O」または「-o」を指定しない場合は標準出力) | 
| -o | --output ファイル名 | 保存するファイル名(「-O」または「-o」を指定しない場合は標準出力) | 
| --create-dirs | 「-o」でディレクトリを指定した際、そのディレクトリがない場合は作成する | |
| -# | --progress-bar | 進行状況を「#」文字で表示する | 
| -f | --fail | 失敗してもエラーメッセージを表示しない | 
| -s | --silent | 実行中のメッセージを表示しない | 
| -4 | --ipv4 | IPv4 だけを使う | 
| -6 | --ipv6 | IPv6 だけを使う | 
| -A | --user-agent "Web ブラウザ" | 実行時の Web ブラウザ名を指定する | 
| -e | --referer URL | リンク元の URL を指定する | 
| -b | --cookie "名前=値" | 実行時のクッキーを指定する | 
| --anyauth | 複数の認証方法を試す(個別に「--basic」「--digest」「--ntlm」「--negotiate」を指定可) | |
| -C | --continue-at バイト数 | 転送の続きから行う際に、何バイト目から再開するか指定する(「-C -」で自動計算) | 
| -d | --data "データ" | データを POST したのと同じように送る | 
| -F | --form "名前=値" | 指定した内容をフォームから入力したのと同じように送る | 
| --data-urlencode "データ" | データを URL エンコードして送る | 
wget コマンド
wgetコマンドは“ノンインタラクティブなダウンローダー”です。
wget URLで指定した URL のファイルをダウンロードします。
wgetコマンドの書式は以下のようになります。
wget [オプション] URL
指定した URL からのリンクも含めて保存する(再帰ダウンロード)場合は、以下のコマンドになります。
wget -r [オプション] URL
コマンドの実行例は以下のようになります。
wget http://……/download.zip
tail コマンド
tailコマンドは、テキストファイルまたはパイプでのテキスト入力の末尾を抜き出すコマンド。デフォルトでは最後の 10 行を出力します。
tailコマンドの書式は以下のようになります。
tail [オプション] ファイル名
コマンドの結果の末尾を取得する場合は、以下のように書きます。
コマンド | tail [オプション]
例えば、log.txt ファイルの末尾の10行を表示する場合は、以下のように実行します。
tail -n 10 log.txt
tail コマンドのオプション
tail コマンドの主なオプションは次の通りです。
| 短いオプション | 長いオプション | 意味 | 
|---|---|---|
| -c 数字 | --bytes 数字 | 末尾の指定したバイト数のみ表示する。「-c 5 b」のように単位を付加することも可能(b=512, KB=1000, K=1024, MB=10001000, M=10241024…) | 
| -n 数字 | --lines 数字 | 末尾の指定した行数のみ表示する | 
| -q | --quiet, --silent | ファイルごとのヘッダ表示を行わない(複数ファイル指定時に使う) | 
| -v | --verbose | 常にファイルごとのヘッダ出力を行う | 
| -f | --follow | ファイルを監視して内容が追加されるたびに末尾に表示する(ログ監視などに使用する。[Ctrl]+[C]キーで終了) | 
head コマンド
headコマンドは、テキストファイルまたはパイプでのテキスト入力の先頭を抜き出すコマンド。デフォルトでは先頭の 10 行を出力します。
基本的な使い方はtailコマンドと同様です。
headコマンドの書式は以下のようになります。
head [オプション] ファイル名
コマンドの結果の先頭を取得する場合は、以下のように書きます。
コマンド | head [オプション]
head コマンドのオプション
head コマンドの主なオプションは次の通りです。
| 短いオプション | 長いオプション | 意味 | 
|---|---|---|
| c 数字 | --bytes 数字 | 先頭から指定したバイト数のみ表示する。「-c 5 b」のように単位を付加することも可能(b=512, KB=1000, K=1024, MB=10001000, M=10241024…) | 
| -n 数字 | --lines 数字 | 先頭から指定した行数のみ表示する | 
| -q | --quiet, --silent | ファイルごとのヘッダ表示を行わない(複数ファイル指定時に使う) | 
| -v | --verbose | 常にファイルごとのヘッダ出力を行う | 
less コマンド
lessコマンドは、テキストファイルを 1 画面ずつ表示するコマンドです。less ファイル名で実行する他、コマンド | lessのように、別のコマンドの実行結果を 1 画面ずつ表示する場合にも使われます。
「Enter」キーで 1 行、スペースキーで 1 画面先に進める他、上下矢印キーによるスクロールも可能です。表示を終了するには「Q」または「q」キーを入力します。
lessコマンドの書式は以下のようになります。
ファイルを表示する場合
less [オプション] ファイル名
コマンドの実行結果を表示する場合
コマンド | less [オプション]
find コマンド
findコマンドは、場所を指定してファイルを検索するコマンドです。ファイル名だけではなく、ファイルの種類や更新日時など、細かい条件を指定して検索することができます。
また、見つけたファイルに対して「アクション(コマンド)」を実行させることも可能です。
findコマンドの書式は以下のようになります。
find [オプション] [検索パス] [検索式]
例えば、「/tmp」ディレクトリにある全てのファイルを表示する場合は、以下のように実行します。
find /tmp
また、ファイル名を指定する場合は、「-name」オプションを使用します。
find コマンドのオプション
find コマンドの主なオプションは次の通りです。
| オプション | 意味 | 
|---|---|
| -P | シンボリックリンクをたどらない(デフォルト) | 
| -L | 全てのシンボリックリンクをたどる | 
| -H | コマンドラインで指定したシンボリックリンクをたどる | 
| -D オプション | 診断用の情報(デバッグ情報)を出力する。オプションには次の文字列が入る help:デバッグ用オプションの説明を表示 tree:検索式を構造化した情報 stat:stat や lstat を使ってファイルを調べたときのメッセージ opt:検索式を最適化する際の情報 rates:各処理の成功した回数と失敗した回数を表示  | 
| -O レベル | 最適化レベル。「-O1」はファイル名による判別を先に行う(デフォルト)。「-O2」「-O3」では別の判定を先に行うなどで処理を高速化する | 
ssh コマンド
sshは、暗号化された通信を使ってリモート接続をするコマンドです。リモートマシンにログインして、リモートマシン上でコマンドを実行したい場合に使用します。
なお、接続先のコンピュータでは、「sshd(SSH daemon:SSH のサーバプログラム)」が動作している必要があります。また、インターネット経由で接続する場合には、ルーターなどで外部から接続できるように設定しておく必要もあります。
sshコマンドの書式は以下のようになります。
ssh [オプション] 接続先
または、
ssh [オプション] [ログイン名@]接続先 [接続先で実行したいコマンド]
となります。
ssh コマンドのオプション
ssh コマンドの主なオプションは次の通りです。
| オプション | 意味 | 
|---|---|
| -p ポート番号 | 接続に使用するポート番号を指定する | 
| -l ユーザー名 | 接続に使用するユーザー名を指定する | 
| -i ID ファイル | 接続に使用する公開鍵ファイルを指定する | 
kill コマンド
killコマンドは、実行中のプロセスを終了させる場合に使うコマンドです。
どのプロセスを終了させるかは、「プロセス ID」で指定します。例えば、1000 番のプロセスならばkill 1000と指定します。プロセス ID はpsコマンドで調べることができます。
killコマンドの書式は以下のようになります。
kill [オプション] プロセスID
kill コマンドのオプション
kill コマンドの主なオプションは次の通りです。
| オプション | 意味 | 
|---|---|
| -s シグナル | プロセスに送るシグナル名または番号。-シグナル名、-番号でも指定可能(「シグナルとは」を参照) | 
| -l シグナル名のリストを表示する | 
まとめ
この記事では、ターミナルの基本的なコマンドの使い方について説明しました。
記事で紹介しきれなかったコマンドやオプションもあるので、プログラミングの勉強の中でいろいろなコマンドを使いながら体で覚えていきましょう。
![]()