Unix コマンドはたくさんありますが,頻繁に使うものはそんなに多くありません.頻繁に使ういくつかのコマンドを覚えておけば,だいたいの用は足ります.
以下は jupiter にリモートログインしてからおこなう
Unix では,シェルと呼ばれる種類のソフトウェアを使って計算機に命令を伝える.ここではキーボードからの文字入力で操作をおこないます.
シェルがコマンドを受け付ける状態のとき,ウインドウには
$
が表示される.場合によっては
george@jupiter:~$
など,プロンプト $ の前にユーザ名やその他の情報が表示されているかもしれない. また,$ でなく % や > が表示されている人もいるかもしれない.
以下,プロンプトは全て $ と書く.
次のコマンドでカレントディレクトリが表示される
$ pwd
ディレクトリの移動には cd コマンドを使う.
行き先の指定を省略するとホームディレクトリに移動する.
$ cd
上のコマンドを打った後にカレントディレクトリを表示すれば,自分のホームディレクトリが表示されるはず.
$ pwd
ホームディレクトリはユーザによって違う.ユーザ名が tako であるユーザのホームディレクトリは /home/tako である.
cd に続けて行き先のディレクトリを書けば,そのディレクトリに移動する. 例えば,ディレクトリ /usr/local/bin に移動するなら
$ cd /usr/local/bin $ pwd
行き先は相対パスで指定することもできる. カレントディレクトリが /usr/local/bin で,ひとつ上のディレクトリ(親ディレクトリ) /usr/local に移動するなら,
$ cd ..
移動できたかどうか確認する.
$ pwd
さらにもうひとつ上のディレクトリ /usr に移動するなら,
$ cd ..
移動できたかどうか確認する
$ pwd
「..」はカレントディレクトリを基準にして決まる. すなわち,カレントディレクトリが異なれば,「..」の指すディレクトリは異なる.
ホームディレクトリから /usr/local/bin に移動する方法はたくさんある. まずホームディレクトリに戻る.
$ cd
移動できたかどうか確認する.
$ pwd
ここから /usr/local/bin に移動するには,
$ cd /usr/local/bin
移動できたかどうか確認する.
$ pwd
違う方法で移動する. まずホームディレクトリに戻る.
$ cd $ pwd
ここから
$ cd .. $ cd .. $ cd usr $ cd local $ cd bin
と cd を5回実行して,/usr/local/bin に移動することもできる. 移動できたことを確認する.
$ pwd
あるいは,
$ cd $ pwd
以下のように移動先を指定してもよい.
$ cd ../../usr/local/bin
移動したら,意図した通りに移動できたかどうか確認する.
$ pwd
ディレクトリにあるファイルの一覧を表示するには ls コマンドを使う.
カレントディレクトリにあるファイルの一覧を表示するには
$ ls
カレントディレクトリにファイルがない時は何も表示されない.
ディレクトリを指定すると,指定したディレクトリにあるファイルの一覧が表示される. 例えば,/usr/local にあるファイルの一覧を表示するなら,
$ ls /usr/local
もちろん,/usr/local に移動して ls とするのでもよい.
$ cd /usr/local $ ls
先に実行した $ ls /usr/local と同じ結果が表示されるはず.
ディレクトリの作成には mkdir コマンドを使う.
ホームディレクトリに,この実習で使うディレクトリを作成してみる. まずホームディレクトリに移動.
$ cd
次に,ホームディレクトリにあるファイルの一覧を表示する.
$ ls
ディレクトリ内に同じ名前のファイル(ディレクトリを含む)を作ることはできない(他のディレクトリには同じ名前のファイルがあってもよい).
作業用のディレクトリを作成する. ディレクトリの名前は好きなものを使ってよい. 以下の例では work という名前のディレクトリが作成される.
$ mkdir work
作成されたかどうか確認してみる.
$ ls
もしかすると,$ mkdir work を実行したところで,
mkdir: cannot create directory 'work': File exists
というメッセージが出た人がいるかもしれない. これは,「work というディレクトリを作成することができませんでした.理由は,work というファイルが既に存在しているためです」と言っている. work でない違う名前を指定して,ディレクトリの作成をやり直してください. ディレクトリに存在するファイルを確認するには
$ ls
ディレクトリはどこにでも作成することができるわけではない.パーミッションで書き込み許可がおりているディレクトリでのみ,ディレクトリを作成することができる.例えば /home は,通常のユーザは書き込み不許可になっている./home でディレクトリを作成しようとすれば,Permission denied (許可がありません)とメッセージが表示され,ディレクトリの作成に失敗する.作成できないけど,試してみる.
$ cd /home
移動したことを確認する.
$ pwd
ディレクトリにあるファイルを確認する.
$ ls
ディレクトリにない名前でディレクトリを作成してみる(以下の例は work というディレクトリを作成する場合).
$ mkdir work
次のようなメッセージが出る.
mkdir: cannot create directory '/home/work': Permission denied
cannot create なので「作成することはできない」と言っている. 実際に作成されていないことを確かめる.
$ ls
作業用ディレクトリへの移動
$ cd $ cd work
(上の work はそれぞれが作成したディレクトリに置き換える). ちゃんと移動できたか確認
$ pwd
echo コマンドを使ってファイルを作ってみる.
$ echo maguro > sushi.txt
このコマンドの例では,sushi.txt という名前のファイルが作成され,その中に maguro と書き込まれる. ファイルが作られたことを確認する.
$ ls
cat コマンドでファイルの中身を表示する.
$ cat sushi.txt
この例では sushi.txt という名前のファイルの中身が表示される.
たくさん書き込むこともできる.
$ echo hotate tsubu hokki > kai.txt
確認する.
$ ls $ cat kai.txt
コピーの作成は cp コマンドを使う.
$ cp sushi.txt kirai.txt
sushi.txt と同じ中身を持ったファイル kirai.txt が作成される. ファイルのコピーができたことを確認する. まずファイル kirai.txt が作成されたかどうかの確認.
$ ls
次にファイルの中身の確認.
$ cat kirai.txt
コピー元のファイルの中身と同じであることを確認.
$ cat sushi.txt
mv コマンドを使ってファイル名を変更する.
$ mv kirai.txt suki.txt
ファイル名が変更されたかどうか確認.
$ ls
正しく実行されていれば,kirai.txt がなくなって suki.txt が存在するはず. ファイルの中身を確認する.
$ cat suki.txt
rm コマンドを使うとファイルを削除できる. まず,存在するファイルの確認.
$ ls
素直に前から順番に作業していたら,sushi.txt というファイルがあるはず. suhi.txt を削除する.
$ rm sushi.txt
削除されたかどうかの確認.
$ ls
sushi.txt がなくなっていればOK.
ディレクトリを削除するときは,rmdir コマンドを使う. ためしにディレクトリを作って,削除してみる.
$ ls $ mkdir wasabi $ ls $ rmdir wasabi $ ls
ディレクトリにファイルがあると,ディレクトリを削除することはできない.ディレクトリを削除するときは,まずディレクトリにあるファイルを全て削除してから,ディレクトリを削除する. これもためしてみる.
$ mkdir norimaki $ ls $ cd norimaki $ echo kappa tekka kanpyo > hosomaki $ ls $ cd .. $ pwd $ ls norimaki $ rmdir norimaki
そうすると
rmdir: failed to remove 'norimaki': Directory not empty
これは,ディレクトリ norimaki は空じゃないので削除することに失敗した,と言っている.
$ ls
消えてないことを確認する.
ディレクトリにあるファイルも含めてまるごと削除するときは,rm に -r のオプションをつける.
$ rm -r norimaki
消えたことを確認する
$ ls
最初に作成したディレクトリも削除する.まずホームディレクトリに移動する.
$ cd
最初に作成したディレクトリが work であるなら
$ rm -r work
「コマンド覚えられない」という気持ちはよくわかる. 意味のないものは覚えられないというのは普通だと思う. コマンドの元になった英語がわかると,少しは覚えやすくなるかもしれない.