 |
≫ |
|
|
 |
 |
| 今回は、ファイルのコピーや移動、削除といったファイルの基本操作のためのコマンドを掘り下げて説明していくことにしましょう。その後で、別名でファイルにアクセスするリンクについても説明します。今回紹介するコマンドはどれも、前回紹介した「*」や「?」といったワイルドカード、および「..」や「.」といった特別なディレクトリを示す記号と組み合わせることで、より柔軟な処理が可能になります。 |
|
 |
 |
 |
 |
| UNIXの教科書〜はじめよう! WindowsとLinuxからのステップアップ〜 4日目 |
|
 |
 |
 |
 |
2008年2月
大津 真 |
 |
|

 |
 |
 |
 |
 |
 |
 |
 |
 |
マリー先生:
今回はファイル操作に関する基本コマンドの取り扱いについて説明しましょう。ここまでの操作を理解すれば、ターミナル上での基本的な操作はだいたいOKなのでがんばりましょう。
その前に、前回の説明に関してなにか質問ありますか? |
 |
 |
 |
 |
 |
|
 |
 |
 |
 |
 |
タックス君:
先日、先輩にbashのパッケージをインストールしてもらったのですが、bashを起動するにはどうすればいいのですか? |
 |
 |
 |
 |
 |
 |
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
マリー先生:
bashのインストール先にもよるけど、/usr/local/bin/bashにインストールされている場合、単に試すだけだったら、コマンドラインで「/usr/local/bin/bash 【Enter】」(設定によっては「bash 【Enter】」)とすればいいわ。
$ /usr/local/bin/bash 【Enter】
|
もとのシェル(POSIX SHELL)にもどるには「exit【Enter】」を実行してね。 |
 |
 |
 |
 |
 |
|
 |
 |
 |
 |
 |
タックス君:
ログインしたときにPOSIX SHELLの代わりにbashを使うように設定することはできますか? |
 |
 |
 |
 |
 |
 |
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
マリー先生:
ログインしたときに起動するシェルのことを「ログインシェル」というの。ログインシェルはchshコマンドで変更できるわ。ただし、初期状態ではシステムファイルを設定しないと、システムに標準で用意されているシェルしかログインシェルにできないの。あるいは、HP-UX管理ツールであるSMH(System Management Homepage)のugwebを使ってもログインシェルを変更できるわ。いずれにしてもスーパーユーザの権限が必要なので、もしbashをログインシェルにしたかったら管理者に相談してね。 |
 |
 |
 |
 |
 |
|
 |
ファイルをコピーするcpコマンドの基本的な使い方について前回簡単に説明しましたが、この時間ではもう少し掘り下げて説明しましょう。
前回は、あるディレクトリの下の複数のファイルをまとめてコピーするのに使用するのに、「*」「?」といったワイルドカードを使用する方法について紹介しました。覚えていますでしょうか?
たとえば、カレントディレクトリの下にある拡張子が「.txt」のファイルを、ホームディレクトリ「~」の下のbackupディレクトリにコピーするには、次のようにします。
こうするとワイルドカード「*」がシェルによって展開されます。カレントディレクトリにsample.txt、info.txt、readme.txtの3つのファイルがあったとすると、次のような命令がカーネルに送られるわけです。
cp sample.txt info.txt readme.txt ~/backup |
 |
 |
 |
 |
 |
 |
 |
 |
 |
マリー先生:
cpコマンドでは、コピー先に同じ名前のファイルがあっても警告なしに上書きしてしまうので注意してね。 |
 |
 |
 |
 |
 |
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
マリー先生:
心配なら「-i」オプションを指定すれば、上書きするかどうかをファイルごとに確認しくれるわ。前の例で「-i」オプションを指定すれば、backupディレクトリに同じファイルがあった場合には上書きしていいかその都度訊いてくるの。「y 【Enter】」で上書き、それ以外の文字を入力すればコピーされないわ。
$ cp -i *.txt ~/backup
overwrite /home/taro/backup/A.txt? (y/n) y ←上書きする
overwrite /home/taro/backup/AB.txt? (y/n) n ←上書きしない
|
|
 |
 |
 |
 |
 |
|
|
 |
それでは、あるディレクトリを丸ごと階層構造を保持したまま、別のディレクトリにコピーすることはできるでしょうか? 答えは、もちろん可能です。それには「-r」オプション(もしくは「-R」オプション)を指定してcpコマンドを実行します。このことを、“ディレクトリを再帰的にコピーする”などといいます。
たとえば、Documentsディレクトリを丸ごと、backupディレクトリの下にコピーするには次のようにします。
$ cp -r Documents backup/ |
 |
 |
 |
 |
 |
四色君:
この例だと、backupディレクトリの下にDocumentsディレクトリが作成されますけど、違うディレクトリ名でコピーすることもできますか? |
 |
 |
 |
 |
 |
 |
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
マリー先生:
できるわよ。たとえば、DocBackupというディレクトリ名にするには次のようにすればいいわ。
$ cp -r Documents backup/DocBackup |
このとき、同じ名前のディレクトリが存在していた場合には、その下にコピーされてしまうので注意してね。前の例で、cpコマンドを実行するときに、backup/DocBackupディレクトリが存在していた場合にはbackup/DocBackup/Documentsディレクトリが作成されてしまうの。 |
 |
 |
 |
 |
 |
|
|
 |
ファイルの情報を保持したままコピーする-pオプション |
 |
 |
 |
 |
cpコマンドでファイルをコピーすると、ファイルの更新日時はコピーした日時になります。またファイルのパーミッション(アクセス権限)などの情報はシェルの設定によって変更される場合があります。
$ cp index.html index2.html
$ ls -l
total 32
-rw-rw-rw- 1 o2 users 5 Jan 1 00:00 index.html
-rw-r--r-- 1 o2 users 5 Jan 29 22:48 index2.html ←パーミッションと
更新日時が変更された |
もとのファイルの情報をそのまま保持したい場合には、「-p」オプションを指定して実行します。
$ cp -p index.html index3.html
$ ls -l
total 48
-rw-rw-rw- 1 o2 users 5 Jan 1 00:00 index.html
-rw-r--r-- 1 o2 users 5 Jan 29 22:48 index2.html
-rw-rw-rw- 1 o2 users 5 Jan 1 00:00 index3.html ←情報が保持される |
|
 |
コピーではなくてファイルを移動したい場合にはmvコマンド使います。cpコマンドの引数の順番と同じく、最初の引数にもとのファイルのパスを、2番目の引数にコピー先のパスを指定します。
たとえば、カレントディレクトリの下のReadMe.txtを、ホームディレクトリ「~」の下に移動するには次のようにします。
なお、mvコマンドはディレクトリを丸ごと移動することもできます。このとき、cpコマンドと異なり「-r」オプションは必要ありません。たとえばカレントディレクトリの下にあるsamplesディレクトリを、ホームディレクトリの下にあるPicturesディレクトリに移動するには、次のようにします。
 |
 |
 |
 |
 |
タックス君:
移動ではなく名前を変更するにはどうすればいいのですか? |
 |
 |
 |
 |
 |
 |
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
マリー先生:
それもmvコマンドでOKよ。つまりmvには名前の変更といった意味合いもあるの。たとえば、カレントディレクトリの下にある「file.txt」の名前を「myFile.txt」にするには、次のようにすればいいわ。
|
 |
 |
 |
 |
 |
|
|
 |
ファイルの削除にはrmコマンドを使います。たとえば、カレントディレクトリの下にあるold.txtを削除するには次のようにします。
 |
 |
 |
 |
 |
四色君:
rmコマンドの引数にワイルドカードは使えますか? |
 |
 |
 |
 |
 |
 |
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
マリー先生:
もちろん使えますよ。たとえば、UNIX系OSではバックアップファイルのファイル名の最後にチルダ「~」が使用されることがしばしばあるの。カレントディレクトリからそれらのファイルをまとめて削除するには、次のようにすればいいわ。
|
 |
 |
 |
 |
 |
|
 |
 |
 |
 |
 |
タックス君:
ワイルドカードを使ってファイルをまとめて削除できるのは便利だけど、ちょっとコワイですね。 |
 |
 |
 |
 |
 |
 |
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
マリー先生:
そんな場合には、cpコマンドと同じく「-i」オプションをつけるといいわ。そうすれば、ひとつずつ確認してからファイルを削除してくれるの。
$ rm -i *.txt
Readme.txt: ? (y/n) n
ok.txt: ? (y/n) y
profile.txt: ? (y/n) m |
|
 |
 |
 |
 |
 |
|
|
 |
「-r」オプションを指定すると、ディレクトリを丸ごと削除することができます。このオプションを使用するとホームディレクトリを丸ごと削除するといったことも簡単にできてしまいますので、実行には細心の注意をはらってください。
たとえば、oldディレクトリ以下を丸ごと削除するには次のようにします。
|
 |
ディレクトリの削除に特化したのがrmdirコマンドです。 たとえば、カレントディレクトリの下にあるworkディレクトリを削除するには次のようにします。
ただし、rmdirが削除できるのは空のディレクトリだけです。その下にファイルやディレクトリがあるとエラーとなり削除できません。
 |
 |
 |
 |
 |
タックス君:
「rm -r」コマンドでディレクトリを丸ごと削除できるのですから、rmdirコマンドは必要ない気がしますけど。 |
 |
 |
 |
 |
 |
 |
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
マリー先生:
「rm -r」はその下にファイルがあっても、指定したディレクトリ以下をすべて削除してしまうので、ある意味危険なコマンドなわけ。だから実行には細心の注意を払う必要があるの。それに対して、rmdirはその下にファイルがあると削除できないから安心なのよ。 |
 |
 |
 |
 |
 |
|
|
 |
HP-UXのデスクトップ環境には、The Open Group が管理する商用のデスクトップ環境であるCDE(Common Desktop Environment)が採用されています。ファイルのコピー/移動、削除、2時間目で説明するシンボリックリンクの作成といったファイルの基本操作は、CDEのファイルマネージャを使っても行えます。
そのままファイルをドラッグ&ドロップすると移動になりますが、Ctrlキーを押しながらドラッグ&ドロップすると移動になります。
 |
 |
| 図1:CDEのファイルマネージャ |
なお、コピー/移動先のパスをダイアログボックスで指定することもできます。たとえば、コピーする場合にはファイルを選択してから、「選択」メニューから「コピー先を選択」を選択します。表示されるダイアログボックスで、コピー先のディレクトリのパスと、ファイル名を指定してEnterキーを押すとコピーが実行されます。
 |
 |
| 図2:ダイアログボックスを使ったファイルのコピー |
|
 |
 |
| 本ページの内容は執筆時の情報に基づいており、異なる場合があります。 |
|