UNIX入門:3. コマンドの入力形式と基本コマンドの操作
コマンドの入力は「処理方法のオプションの下,入力ファイルを読み込み,処理の結果を出力する」という形式になっています。入力ファイルについては,指定必須のコマンドとそうでないものがあります。
入力形式:command [-option] [input]
コマンドが実行されると,一つのプロセスとなります。プロセスが完了せず,いつまでたってもプロンプト (%
) が戻らない場合,無限ループに陥っている可能性があります。この場合は,'^C'
(controlキー+ C) で強制終了します。
以下では,UNIX の操作に慣れることを目的に,実験例を示しましょう。
3.1. カレント・ディレクトリの変更と確認法
UNIX を利用する上で,カレント・ディレクトリ (作業中のディレクトリ) がどこなのか,自分のホーム・ディレクトリの外で作業はしていないか,すなわち,迷子にならない方法は何か,ここではそのための練習をしてみましょう。
- 例3.1.1 (太字部分を入力後リターン)
% cd # ホーム・ディレクトリに移動 % pwd # カレント・ディレクトリの絶対パス /Users/taro # ホーム・ディレクトリは,Users の中の taro % cd / # ルート・ディレクトリに移動 % pwd # カレント・ディレクトリの絶対パス / % ls # カレント・ディレクトリのファイル一覧 Users dev sbin usr bin etc tmp var % cd Users # カレント・ディレクトリ内のディレクトリ Users へ % pwd /Users % ls hanako taro % cd taro % pwd /Users/taro
- 例3.1.2 ホーム・ディレクトリ内のファイルを確認し,その中のディレクトリ
My_Programs
へ移動% cd # ホーム・ディレクトリに移動 % ls -l drw-r--r-- 1 taro staff 3 Feb 5 18:00 My_Programs # 頭の d は,ディレクトリの意 % cd My_Programs % pwd /Users/taro/My_Programs % ls -l -rw-r--r-- 1 taro staff 63 Feb 5 18:01 hello.c # 頭が - であればファイル -rwxr-xr-x 1 taro staff 12588 Feb 5 18:02 hello.out -rwxr--r-- 1 taro staff 68 Feb 5 17:57 hello.pl -rwxr--r-- 1 taro staff 31 Feb 5 17:46 hello.sh
- 例3.1.3 ホーム・ディレクトリ内にディレクトリ「
Jobs
」を作成% cd ~ # ホームへ。例3.1.2の続きなら,cd .. でもOK。ホームへは,いつでも cd のみでも。 # ~ はホームの意。 % pwd /Users/taro/ % mkdir Jobs % ls Jobs My_Programs
- 例3.1.4 そこから「
Jobs
」へ移動し,そして「My_Programs
」に移動% cd ./Jobs # cd Jobs でもOK。. でカレントを意味し,./ でカレント内となる。 % pwd /Users/taro/Jobs % cd ../My_Programs % pwd /Users/taro/My_Programs
[ノート] ディレクトリの省略表現
上記における ~
は,以下のようなディレクトリの省略表現を利用しています。
ホーム・ディレクトリ ~ ~/ で「ホーム内の」という意味に。 カレント・ディレクトリ . ./ で「カレント・ディレクトリ内の」という意味に。 その親ディレクトリ .. ../ で「親ディレクトリ内の」という意味に。
3.2. ファイル/ディレクトリのコピー
- 例3.2.1 ファイル「
hello.sh
」をコピー% pwd # カレント・ディレクトリの確認。前の例の続き。 /Users/taro/My_Programs % cp hello.sh benchmark.sh % ls -l # C.f. 例3.1.2 -rwxr--r-- 1 taro staff 31 Feb 21 18:05 benchmark.sh -rw-r--r-- 1 taro staff 63 Feb 5 18:01 hello.c -rwxr-xr-x 1 taro staff 12588 Feb 5 18:02 hello.out -rwxr--r-- 1 taro staff 68 Feb 5 17:57 hello.pl -rwxr--r-- 1 taro staff 31 Feb 5 17:46 hello.sh % cat hello.sh # hello.sh の中身を確認 #!/bin/sh echo "Hello World!" % cat benchmark.sh # benchmark.sh の中身を確認 #!/bin/sh echo "Hello World!" % diff hello.sh benchmark.sh # diff は2つのファイルの差を検査。 # man diff でマニュアルが参照可能。 % # ファイルの中身に差がないので, # メッセージなしでプロンプトが戻る。
- 例3.2.2 それを「
Jobs
」内にコピー% pwd # カレントの確認。前の例の続き。 /Users/taro/My_Programs % cp benchmark.sh ../Jobs % cd ../Jobs % ls -l -rwxr--r-- 1 taro staff 68 Feb 21 18:06 benchmark.sh
3.3. ファイル/ディレクトリの移動
- 例3.3.1 「
My_Programs
」内の「hello.sh
」を「Jobs
」内へ移動% pwd # 前の例の続き。 /Users/taro/Jobs/My_Programs % mv hello.sh ~/Jobs # ~/Jobs は .. では駄目。../Jobs はOK。 % ls -l -rw-r--r-- 1 taro staff 63 Feb 5 18:01 hello.c -rwxr-xr-x 1 taro staff 12588 Feb 5 18:02 hello.out -rwxr--r-- 1 taro staff 68 Feb 5 17:57 hello.pl -rwxr--r-- 1 taro staff 31 Feb 5 17:46 hello.sh % cd .. % ls -l -rwxr--r-- 1 taro staff 31 Feb 21 18:05 benchmark.sh -rwxr--r-- 1 taro staff 31 Feb 5 17:46 hello.sh
- 例3.3.2 「
Jobs
」を「My_Programs
」内へ移動% cd ../My_Programs # 前の例の続き。 % mv ../Jobs . % ls -l drwxr-xr-x 4 taro staff 126 Feb 21 17:28 Jobs -rwxr--r-- 1 taro staff 31 Feb 21 18:05 benchmark.sh -rw-r--r-- 1 taro staff 63 Feb 5 18:01 hello.c -rwxr-xr-x 1 taro staff 12588 Feb 5 18:02 hello.out -rwxr--r-- 1 taro staff 68 Feb 5 17:57 hello.pl
3.4. ファイル/ディレクトリのリネーム (名称変更)
- 例3.4.1 「
benchmark.sh
」を「hello.sh
」に名称変更% pwd # 前の例の続き。 /Users/taro/My_Programs % mv benchmark.sh hello.sh % ls -l drwxr-xr-x 4 taro staff 126 Feb 21 17:28 Jobs -rw-r--r-- 1 taro staff 63 Feb 5 18:01 hello.c -rwxr-xr-x 1 taro staff 12588 Feb 5 18:02 hello.out -rwxr--r-- 1 taro staff 68 Feb 5 17:57 hello.pl -rwxr--r-- 1 taro staff 31 Feb 21 18:05 hello.sh
- 例3.4.2 「
Jobs
」を「Temp
」に名称変更% pwd # 前の例の続き。 /Users/taro/My_Programs % mv Jobs Temp % ls -l drwxr-xr-x 4 taro staff 126 Feb 21 17:28 Temp -rw-r--r-- 1 taro staff 63 Feb 5 18:01 hello.c -rwxr-xr-x 1 taro staff 12588 Feb 5 18:02 hello.out -rwxr--r-- 1 taro staff 68 Feb 5 17:57 hello.pl -rwxr--r-- 1 taro staff 31 Feb 21 18:05 hello.sh
3.5. ファイル/ディレクトリの削除
- 例3.5.1 「
Temp
」内の「hello.sh
」を削除% cd Temp # 前の例の続き。 % ls -l -rwxr--r-- 1 taro staff 31 Feb 31 18:05 benchmark.sh -rwxr--r-- 1 taro staff 31 Feb 5 17:46 hello.sh % rm hello.sh % ls -l -rwxr--r-- 1 taro staff 31 Feb 31 18:05 benchmark.sh
- 例3.5.2 空のディレクトリを削除
% mkdir Jobs # 空ディレクトリを作成 % ls -l drwxr-xr-x 1 taro staff 14 Feb 21 18:15 Jobs -rwxr--r-- 1 taro staff 56 Feb 31 18:05 benchmark.sh % rmdir Jobs % ls -l -rwxr--r-- 1 taro staff 56 Feb 31 18:05 benchmark.sh
- 例3.5.3 空ではないディレクトリ「
Temp
」を削除% cd .. # 前の例の続き。 % rm -r Temp % ls -l -rw-r--r-- 1 taro staff 63 Feb 5 18:01 hello.c -rwxr-xr-x 1 taro staff 12588 Feb 5 18:02 hello.out -rwxr--r-- 1 taro staff 68 Feb 5 17:57 hello.pl -rwxr--r-- 1 taro staff 31 Feb 21 18:05 hello.sh *これで最初の状態に戻る。