データベース入門 資料 1
UNIX 操作の復習

平成27年4月13日


目次

1 練習

UNIX 実習用コンピュータにリモートログインして,以下の操作をしてください。 必要に応じて付録 A も参照してください。
  1. ls コマンドを使って,ファイル名の一覧を表示してください。
  2. .(ドット)で始まるファイル名も含めて表示してしてください。 さらに,その表示にファイルの種類(通常のファイルかディレクトリか)を表す記号が付いた形で表示してください。
  3. ファイルの詳細情報一覧を表示してください。


2 シェルのコマンド入力支援機能

ユーザーがコマンド行に打ち込んだコマンドを解釈し, 実行させる役割を持つプログラムをシェル (shell) といいます 1

ユーザーが計算機にログインすると, そのユーザーのためにシェルが動き出します。 これをログインシェルといいます。 ユーザーがコマンドをタイプして実行できるのは, ログインシェルが動いているからです。 シェルには幾つかの種類がありますが,各ユーザーのログインシェルは, 予め計算機の管理者が設定しています。

ログインシェルが何であるかを確認するには finger コマンドが使えます。 ここで

finger username
を実行してみましょう 2username には,自分のユーザー名を指定してください。

この節では,tcsh というシェルが持つコマンドの入力支援機能のうち,知っていて欲しい代表的なものを紹介します。 ただし,ここで紹介する機能は,最近,よく使われているシェル3においても,大部分が利用可能です。

2.1 コマンド行の編集

プロンプトの存在する,コマンド入力のための行をコマンド行 (command line) と呼びます。 tcsh では,GNU Emacs というエディタでカーソル移動や文字削除等をするのと同じキー操作で, コマンド行の内容を編集することができます4。 コマンド行に何か適当な文字列を打ち込んだ後で以下を試してください。

2.1.1 カーソル移動

コマンド行でのカーソル移動には
CTRL-a (行頭), CTRL-b (左), CTRL-f (右), CTRL-e (行末)
などが使えます。カーソルの左右移動には,通常,矢印キーも使えます。

なお,カーソルがコマンド行の途中にある状態で <Enter> を押すと,コマンド行の全体が実行されますので,コマンド実行の前にカーソルを行末まで移動する必要はありません。

2.1.2 消去

コマンド行の文字を消去するときには,<BackSpace><Delete> 以外に GNU Emacs のキー操作も使えます。 よく使うのは次のものでしょう。
CTRL-d (カーソル位置の一文字削除), CTRL-k (カーソル位置から行末まで消去; kill)

現在編集中のコマンド行を実行せずに,新しいプロンプトを出すには,

CTRL-c
を打ちます。

2.1.3 その他

GNU Emacs における 領域(リージョン)指定や,領域消去,領域複写,貼り付け (再入;yank) もコマンド行でできます。 GNU Emacs のキー操作に慣れている人は試してみましょう。

2.2 ヒストリ(履歴)の利用

GNU Emacs におけるカーソルの上下移動のキー操作は,コマンド行では次の意味 を持ちます。
CTRL-p (一つ前のヒストリを表示), CTRL-n (一つ先のヒストリを表示)
通常,これらの代わりに上下の矢印キーも使えます。

CTRL-p を一回押すと,一つ前に実行したコマンド行の内容が表示され,続いて CTRL-p を押すと二つ前に実行したコマンド行の内容が表示されます。 このようにヒストリを遡ってから,下移動のキー(CTRL-n) を押すと,最近のヒストリに戻っていきます。 この操作でコマンド行に現れた文字列はカーソル移動や消去,貼り付けによって編集し,実行することができます。


2.3 入力補完

コマンド行にコマンドやファイル名の始めの一部だけを入力して,残りをシェルに自動的に補わせることができます。
<Tab> 補完
ただし,タイプした文字列だけでコマンドやファイル名が一意に決まらない(複数の補完候補がある)ときには,補完の代わりに,補完候補の一覧が表示されます。

なお,複数の補完候補がある場合のシェルの振る舞いはシェルは設定によって変わります。 tcsh の場合,<Tab> で補完候補が表示されない場合5には

CTRL-d 複数の補完候補がある場合の一覧表示
を押してみてください。ただし,CTRL-d はプロンプトに続いて何か文字列をタイプした後で押してください。 コマンド行で CTRL-d だけを押すと,シェルに対して「入力の終わり」(EOF; end of file) を入力したことになり,設定によっては計算機からログアウトしてしまいます6

また,bash というシェルの場合には,<Tab> を二度押すことで補完候補の一覧が表示されます。

2.4 練習

  1. [コマンドの補完] コマンド行に fing とタイプして <Tab> を押してみましょう。 続いて <Enter> を押しましょう。
  2. [補完候補の表示] コマンド行に fin と打ってから <Tab> を押してみましょう。補完されませんね。 代わりに補完候補の一覧が表示されます。
  3. 続いて g をタイプしてコマンド行を fing としてから <Tab> を押し てみましょう。続いて <Enter> を押しましょう。
  4. [ファイル名の補完] まず, ファイル .emacs が存在することを確認するために, cat .emacs を実行してファイルの中身を表示してみましょう。 次に, cat .ema に続いて<Tab> を押してみましょう。 コマンド行が cat .emacs になったら,続いて <Enter> を押しましょう。
  5. [パス名の補完] まず,ls /usr/bin を実行して,ディレク トリ /usr/bin (ルートディレクトリ / の下の usr の下の bin ) に存 在するファイル一覧を表示してみましょう。続いて,ls /u<Tab>b<Tab> と打って <Enter> を押してみましょう。

3 ファイルとディレクトリの操作の基本

なお,tmpfile や tmpdir がカレントディレクトリに存在しなければ,mv や cd の実行は失敗します。

3.1 練習問題

italic (斜体)の語は,適当な語に変えて入力する必要があることを意味します。
  1. カレントディレクトリの絶対パス名を表示して,今,どのディレクトリを使っているのかを確かめてください。

  2. mkdir コマンドを使って,ホームディレクトリの下に db15 というディレクトリを作りましょう。 ちゃんと作成できたことを確認しましょう。

  3. cd コマンドを使って,今作成したディレクトリ db15 をカレントディレクトリにしましょう。

  4. カレントディレクトリの変更に成功したことを確認しましょう。

  5. echo コマンドを使って,自分のユーザー名 (ログイン名)を画面に表示させてみましょう。

  6. ディレクトリ db15 に,自分のユーザー名(ログイン名)が書かれた ファイル loginname を作りましょう。

    loginname の作成には echo コマンドとリダイレクト (>) を使うこととします。 一般に

    command > file
    で,コマンド command の出力を,ファイル名が file である新しいファイルに格納することができます。

  7. cat コマンドで loginname の中身を確認しましょう。

  8. loginname にローマ字表記の自分の氏名を追加しましょう。

    一般に

    command >> file
    で,コマンドの出力を,既存のファイルfile に追加できます。

  9. loginname の中身を確認しましょう。

  10. loginname のファイル名を myUserName に変更しましょう。

  11. db15 の親ディレクトリをカレントディレクトリにしましょう。その際には,cd コマンドに適当な引数を与えて実行してください。


A. UNIX コマンド

表において file ... は複数のファイルを指定できることを表し,[ ] は中の要素が省略可能である ことを表す。file としてディレクトリを指定できるものもある。
分類 コマンド 機能
オンラインマニュアル man command command のマニュアルを表示
ディレクトリ操作 cd [directory] カレントディレクトリを directory に変更 (directory を省略した場合はホームディレクトリに変更)
  pwd カレントディレクトリ名を絶対パス名で表示
  mkdir directory ... directory ...の作成
  rmdir directory 中身が空の directory を削除
  mv directory1 directory2 directory1 の名前を directory2 に変更
  rm -r directory ... directory ... をディレクトリ階層を含めてすべて削除
ファイル・ディレクトリ操作 ls [file ...] カレントディレクトリに存在するファイルの名前を表示する。 file ...が指定された場合,その名前を表示する。 file ...がディレクトリである場合,その中のファイル名を表示する。
  ls -F [file ...] ファイルの種類を表す記号を付加
  ls -a [file ...] ドットで始まるファイルを含めて表示
  ls -l [file ...] 詳細情報を表示
  cp file1 file2 file1file2 に複写
  cp file ... directory file ...directory に複写
  mv file1 file2 file1 の名前を file2 に変更
  mv file ... directory file ...directory に移動
  rm file ... file ... を削除
  cat files files の内容を表示
その他 finger [user] 同じ計算機を利用しているユーザー (または user) の情報を表示
  whoami 私はだーれ
  echo string ... string ... を画面に表示



脚注

... といいます1
これはシェル利用の一形態です。 他の形態でシェルを利用することもあります。
... を実行してみましょう2
または finger -l
... ただし,ここで紹介する機能は,最近,よく使われているシェル3
例えば Linux における標準的なシェルである bash 等。
... コマンド行の内容を編集することができます4
bindkey -v を一度実行すれば,vi 流のキー操作によるコマンド行編集が可能になります。 例えば,コマンド行に何かタイプした後で,<ESC> を押してから h や l を押すとカーソルが左右に動き,x を押すとカーソル位置の一文字が消えます。
... で補完候補が表示されない場合5
シェル変数 autolist が設定されていない場合
... を入力したことになり,設定によっては計算機からログアウトしてしまいます6
シェル変数 ignoreeof が設定されていれば,CTRL-d によるシェルの終了は無効です。