計算機基礎 - 第12回: UNIX を使ってみよう (3) - 基本コマンド
Table of Contents
1. シェルとカーネル
シェル (Shell) とはユーザが入力したコマンドを解釈し, OS (Operating System) の中核であるカーネル (Kernel) に伝達するプログラムです。
ユーザ シェル カーネル ハードウェア
----------------------------------------------------------------------------------------
コマンド入力 → コマンドを解釈
指令を送る → 指令内容を処理
ハードウェアに命令を送信 → 指令内容を処理
処理結果を確認 ← 処理結果を出力 ← 処理結果を返す ← 処理結果を返す
カーネルはユーザからのコマンドに従ってハードウェア (CPU, メモリ, SSD など) を制御しています。
シェルの主な役割と機能
- コマンドの通訳
- キーボードから入力された文字 (コマンド) を解釈し,コンピュータに実行させます。
- 結果の表示
- 処理結果を画面にテキストとして返します。
- カーネルとの橋渡し
- OS の根幹であるカーネルを操作するための「殻」 (Shell) のような外殻層として機能します。
- 自動化
- よく使う一連のコマンドをファイル (シェルスクリプト) に記述し,まとめて実行できます。
主なシェルの種類
- sh
- Bourne Shell. 最も歴史の古いオリジナルシェル。
- bash
- Bourne-Again Shell. GNU プロジェクトが Bourne Shell のオープンソース版として開発。最も広く普及している標準的なシェル。
- zsh
- 最も機能が豊富なシェルで高度な補完機能が特徴。 macOS (10.15 以降) の標準シェル。
- csh / tcsh
- C言語に似た文法を持つシェル。
2. 基本的なコマンド
Ubuntu (Windows) またはターミナル (Mac) を立ち上げて,以下のコマンドを試してみましょう。
echo 画面に文字列を表示する
echo は指定した文字列や変数の値をターミナル画面 (標準出力) に表示します。
echo [オプション] 表示する文字列
実行例
$ echo "Hello World" Hello World
cat ファイル内容を表示する (concatenate)
指定した複数のファイルを結合して出力したり,単一ファイルの中身を画面に表示したりするために使用されます。
cat [オプション] ファイル1 [ファイル2] ...
指定したファイルが1つの場合は,そのファイルの内容が画面に表示されます。
指定したファイルが複数の場合は,ファイルの内容が指定した順番に表示されます。
実行例
/etc/passwd の内容を画面に表示する。
$ cat /etc/passwd
file1.txt と file2.txt を連結して combined.txt という新しいファイルに保存する。
$ cat file1.txt file2.txt > combined.txt
> は「リダイレクト」と呼ばれ,コマンドの実行結果を画面 (標準出力)
に出力せず,ファイルに保存します。
> ファイルを新規作成または上書きして結果を保存 >> ファイルの末尾に結果を追加する (ファイルが存在しない場合は新規作成)
less ファイル内容を表示する
less コマンドはファイル内容を1画面ごとに表示します。
(同様のコマンドに more がありますが,
less は more よりも高機能です)
less ファイル
less は cat と同様に,ファイルの内容を画面上に表示しますが,ファイル内容を1画面分表示すると,そこでいったん表示が止まります。
Enter または ↓ を押すと1行だけ次に進みます。
Space を押すと1画面だけ次に進みます。
less のオプションには以下のようなものがあります (他にもたくさんあります)。
-q ビープ音を鳴らさない -M 総行数などの情報を画面下部に表示する -N 行番号を表示する
less の主な操作方法をまとめておきます。
f or SPACE 次のページへ進む b 前のページに戻る j or ↓ or ENTER ファイル内を下にスクロールする k or ↑ ファイル内を上にスクロールする g or < ファイルの先頭にジャンプする G or > ファイルの末尾にジャンプする /pattern pattern を含む行を検索する n 直近の検索を繰り返す N 直近の検索を逆方向に繰り返す 数字 + g 指定した行 (数字行目) にジャンプする q less を終了する
実行例
/etc/passwd ファイルを less で表示し,操作方法を試してみましょう。
$ less /etc/passwd
| パイプ
「左側のコマンドの実行結果 (出力)」を「右側のコマンドの入力」として直接渡す機能です。一時ファイルを作成することなく,複数のコマンドを連携させて複雑な処理を連続 (パイプライン処理) で行うことができます。
長いリストを1画面ずつ表示するには less と組み合わせるとよいでしょう。
$ ls -lF /usr/bin | less
sort コマンドと組み合わせて,文字列やファイルを並べ替えることができます。
$ cat /etc/passwd | sort | less
wc (word count) コマンドと組み合わせて,行数を数えることができます。
$ cat /etc/passwd | wc
140 368 9196
find ファイルを探す
find コマンドはファイルを見つけるために利用します。
find 検索ディレクトリ 検索条件 [アクション]
「検索ディレクトリ」は絶対パス,相対パスのどちらでも構いません。
.を指定すると,カレントディレクトリ以下が検索対象となります。/を指定すると,すべてのディレクトリが検索対象となります。
よく使われる検索条件を以下に示します。
-name 名前 名前と一致するファイルやディレクトリ (大文字・小文字の区別あり)
-name "report.docx" report.docx というファイル
-name "*.txt" 拡張子が txt のファイル
-iname 名前 名前と一致するファイルやディレクトリ (大文字・小文字の区別なし)
-iname "a*" a または A から始まるファイル
-mtime n n 日前に更新されている
-mtime -8 7日以内に更新されたファイルやディレクトリ
-mtime +6 7日以上前に更新されたファイルやディレクトリ
-type ファイル種別 ファイルの種類がファイル種別と一致
-type f 通常ファイル
-type d ディレクトリ
「アクション」は検索条件にあう対象がみつかったときに行われる処理です。
-print みつかったファイルの絶対パスを表示する -exec みつかったファイルに対して,任意のコマンドを実行する
アクションを省略すると -print が仮定されます。
which コマンドを検索する
which コマンドは環境変数 PATH に指定されたディレクトリを検索し,実行したいコマンドがシステム上のどこに配置されているかを特定します。
$ which less /usr/bin/less
環境変数 PATH の役割
通常,コンピュータであるコマンドを実行するには,そのコマンドを絶対パスで指定する必要があります。
$ /usr/bin/less file.txt
これは少々面倒ですね。
コマンドがあるディレクトリの場所 (この例では /usr/bin)
をあらかじめ環境変数 PATH に登録しておくと,コマンド名を入力するだけでどこからでもそのコマンドを実行することができます。この操作を「PATH を通す」と表現します。
例えば,ターミナルで python3 と入力したとします。
- PATH が通っていない場合
- OS はどこに
python3があるのかわからず,command not found とエラーを出します。 - PATH が通っている場合
- OS は PATH に設定されているディレクトリを順番に検索し,該当する実行ファイルをみつけて実行します。
カレントディレクトリに python3 の実行ファイルがあっても,カレントディレクトリが PATH に含まれていないと python3 だけでは実行できません。このような場合には ./python3 として実行します。
$ ls python3* $ python3 python3: command not found $ ./python3 Python 3.12.3 (main, Mar 23 2026, 19:04:32) [GCC 13.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
head, tail テキストファイルの先頭と末尾を表示する
head はファイルの先頭部分,
tail はファイルの末尾部分を表示します。
head [オプション] ファイル tail [オプション] ファイル
表示する行数はオプションで指定することができます。指定しないと10行が表示されます。
実行例
/etc/passwd から先頭の5行を表示するには以下のようにします。
$ head -5 /etc/passwd
grep 文字列を検索する
grep コマンドを利用するとファイル中の特定の文字列 (パターン) を含む行を表示することができます。
grep [オプション] パターン [ファイル]
grep は指定されたファイル (ファイルが指定されていない場合は標準入力) を読み込み,与えられた文字列 (パターン) とマッチする行を表示します。
/etc/passwd から and という文字列を含む行を表示させるには次のようにします。
$ grep 'and' /etc/passwd
オプションに -v を指定するとパターンにマッチしない行を表示することができます。
実行例
/etc/passwd から # で始まる行を除いた先頭の5行を表示するには以下のようにします。
$ grep -v '^#' /etc/passwd | head -5
touch ファイルのタイムスタンプを更新する / 空のファイルを新規作成する
touch は指定したファイルのタイムスタンプ (アクセス時刻と変更時刻) を更新します。存在しないファイル名を指定すると,内容が空の新しいファイルが作成されます。
touch [オプション] ファイル
実行例
タイムスタンプの更新
$ ls -l report.docx -rw-r--r-- 1 takagi staff 225105 Jun 20 12:39 report.docx $ touch report.docx $ ls -l report.docx -rw-r--r-- 1 takagi staff 225105 Jun 28 10:30 report.docx
新規ファイルの作成
$ ls -l newfile.txt ls: newfile.txt: No such file or directory $ touch newfile.txt $ ls -l newfile.txt -rw-r--r-- 1 takagi staff 0 Jun 28 10:31 newfile.txt
date 日時を表示する
実行例
$ date Sun Jun 7 15:48:16 JST 2026
cal カレンダーを表示する (calendar)
実行例
$ cal # 今月のカレンダーを表示
June 2026
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
$ cal 1 2027 # 2027年1月のカレンダーを表示
June 2026
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
3. 練習問題
練習1
- ホームディレクトリ直下に practice というディレクトリを作成してください。
- 作成した practice ディレクトリの中に移動してください。
- 空のファイル memo.txt を作成してください。
練習2
echoコマンドとリダイレクトを使って memo.txt に「Linux Basic Command」という文字列を書き込んでください。- memo.txt の中身を表示して確認してください。
練習3
- memo.txt を memo_backup.txt という名前でコピーしてください。
- 現在のディレクトリにあるファイルの一覧 (詳細情報付き) を表示して,ファイルがコピーされているか確認してください。
- memo.txt を削除してください。
練習4
/etc/passwd ファイルから「daemon」という文字列を含む行を抜き出して画面に表示してください。
練習5
gnuplot で媒介変数を利用したグラフを作成してみましょう。
媒介変数表示に移るには set parametric としてパラメトリックモードに移ります。簡単な例として \(x=\cos(t)\), \(y=\sin(t)\) をプロットしてみましょう。
gnuplot> set parametric
dummy variable is t for curves, u/v for surfaces
gnuplot> plot cos(t), sin(t)
gnuplot> set size ratio -1
gnuplot> replot
媒介変数の変域はデフォルトで \(-10 \leqq t \leqq 10\) となっています。
set trange [下限:上限] で変更することができます。
gnuplot> set trange [0:pi] gnuplot> replot
パラメトリックモードを終了するには unset parametric とします。
gnuplot> unset parametric
練習6
Gnuplot でリサジュー図形 \(x=\cos 3t\), \(y=\sin t\) をプロットしましょう。 \(t\) の変域は \(0 \leqq t \leqq 2\pi\) とします。
練習7
Gnuplot で以下の例を試してみましょう。
https://ayapin-film.sakura.ne.jp/Gnuplot/Primer/parametric.html
間違えないように Gnuplot のプロンプトに1行ずつ入力してください。
set parametric set trange [-2*pi/3:2*pi] set size ratio -1 set samples 400 unset border set xtics axis set ytics axis 1 set xzeroaxis lt -1 set yzeroaxis lt -1 unset key f(a,t) = t - a*sin(t) g(a,t) = 1 - a*cos(t) set object circle center 0,1 radius 1 fs solid 1 fc rgb "gray90" behind plot f(2,t), g(2,t), f(1,t), g(1,t), f(1/2.0,t), g(1/2.0,t), f(1/3.0,t), g(1/3.0,t)
4. タッチタイピング
今日も毎分120文字を目指しましょう。
- タイピンガーZの「0から始めるタイピング」で基礎を勉強してください。
- 慣れてきたら寿司打の「お勧め5000円コース」で練習しましょう。
- インターネットでタイピング練習 の「ローマ字タイピング」か「英語タイピング」もよさそうです。