Jump to content 日本-日本語

製品  >  ソフトウェア  >  HP-UX   >  Knowledge-on-Demand  >  UNIXの教科書 基礎編

UNIXの教科書
〜はじめよう! WindowsとLinuxからのステップアップ〜

第4日目:ファイルの基本操作

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

UNIXの教科書:登場人物紹介 このリンクをクリックすると、新しいウィンドウが開きます

マリー先生
マリー先生:
今回はファイル操作に関する基本コマンドの取り扱いについて説明しましょう。ここまでの操作を理解すれば、ターミナル上での基本的な操作はだいたいOKなのでがんばりましょう。

その前に、前回の説明に関してなにか質問ありますか?
タックス君:
先日、先輩にbashのパッケージをインストールしてもらったのですが、bashを起動するにはどうすればいいのですか?
タックス君
マリー先生
マリー先生:
bashのインストール先にもよるけど、/usr/local/bin/bashにインストールされている場合、単に試すだけだったら、コマンドラインで「/usr/local/bin/bash 【Enter】」(設定によっては「bash 【Enter】」)とすればいいわ。

$ /usr/local/bin/bash 【Enter】
bash-3.2$  ←bashのプロンプト

もとのシェル(POSIX SHELL)にもどるには「exit【Enter】」を実行してね。
タックス君:
ログインしたときにPOSIX SHELLの代わりにbashを使うように設定することはできますか?
タックス君
マリー先生
マリー先生:
ログインしたときに起動するシェルのことを「ログインシェル」というの。ログインシェルはchshコマンドで変更できるわ。ただし、初期状態ではシステムファイルを設定しないと、システムに標準で用意されているシェルしかログインシェルにできないの。あるいは、HP-UX管理ツールであるSMH(System Management Homepage)のugwebを使ってもログインシェルを変更できるわ。いずれにしてもスーパーユーザの権限が必要なので、もしbashをログインシェルにしたかったら管理者に相談してね。

今日の時間割 ファイルのコピーや移動/削除 ファイルのリンク 練習問題

1時間目:ファイルのコピーや移動/削除

ファイルをコピーするcpコマンドの基本的な使い方について前回簡単に説明しましたが、この時間ではもう少し掘り下げて説明しましょう。

前回は、あるディレクトリの下の複数のファイルをまとめてコピーするのに使用するのに、「*」「?」といったワイルドカードを使用する方法について紹介しました。覚えていますでしょうか?

たとえば、カレントディレクトリの下にある拡張子が「.txt」のファイルを、ホームディレクトリ「~」の下のbackupディレクトリにコピーするには、次のようにします。

$ 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」オプション(もしくは「-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コマンド

コピーではなくてファイルを移動したい場合にはmvコマンド使います。cpコマンドの引数の順番と同じく、最初の引数にもとのファイルのパスを、2番目の引数にコピー先のパスを指定します。

たとえば、カレントディレクトリの下のReadMe.txtを、ホームディレクトリ「~」の下に移動するには次のようにします。

$ mv Readme.txt ~/

なお、mvコマンドはディレクトリを丸ごと移動することもできます。このとき、cpコマンドと異なり「-r」オプションは必要ありません。たとえばカレントディレクトリの下にあるsamplesディレクトリを、ホームディレクトリの下にあるPicturesディレクトリに移動するには、次のようにします。

$ mv samples ~/Pictures

タックス君:
移動ではなく名前を変更するにはどうすればいいのですか?
タックス君
マリー先生
マリー先生:
それもmvコマンドでOKよ。つまりmvには名前の変更といった意味合いもあるの。たとえば、カレントディレクトリの下にある「file.txt」の名前を「myFile.txt」にするには、次のようにすればいいわ。

$ mv file.txt myFile.txt

ファイルを削除するrmコマンド

ファイルの削除にはrmコマンドを使います。たとえば、カレントディレクトリの下にあるold.txtを削除するには次のようにします。

$ rm old.txt

四色君:
rmコマンドの引数にワイルドカードは使えますか?
四色君
マリー先生
マリー先生:
もちろん使えますよ。たとえば、UNIX系OSではバックアップファイルのファイル名の最後にチルダ「~」が使用されることがしばしばあるの。カレントディレクトリからそれらのファイルをまとめて削除するには、次のようにすればいいわ。

$ rm *~
タックス君:
ワイルドカードを使ってファイルをまとめて削除できるのは便利だけど、ちょっとコワイですね。
タックス君
マリー先生
マリー先生:
そんな場合には、cpコマンドと同じく「-i」オプションをつけるといいわ。そうすれば、ひとつずつ確認してからファイルを削除してくれるの。

$ rm -i *.txt
Readme.txt: ? (y/n) n
ok.txt: ? (y/n) y
profile.txt: ? (y/n) m

ディレクトリを丸ごと削除する-rオプション

「-r」オプションを指定すると、ディレクトリを丸ごと削除することができます。このオプションを使用するとホームディレクトリを丸ごと削除するといったことも簡単にできてしまいますので、実行には細心の注意をはらってください。

たとえば、oldディレクトリ以下を丸ごと削除するには次のようにします。

$ rm -r old

ディレクトリを削除するrmdirコマンド

ディレクトリの削除に特化したのがrmdirコマンドです。 たとえば、カレントディレクトリの下にあるworkディレクトリを削除するには次のようにします。

$ rmdir work

ただし、rmdirが削除できるのは空のディレクトリだけです。その下にファイルやディレクトリがあるとエラーとなり削除できません。

タックス君:
「rm -r」コマンドでディレクトリを丸ごと削除できるのですから、rmdirコマンドは必要ない気がしますけど。
タックス君
マリー先生
マリー先生:
「rm -r」はその下にファイルがあっても、指定したディレクトリ以下をすべて削除してしまうので、ある意味危険なコマンドなわけ。だから実行には細心の注意を払う必要があるの。それに対して、rmdirはその下にファイルがあると削除できないから安心なのよ。

休み時間:CDEのファイルマネージャ

HP-UXのデスクトップ環境には、The Open Group このリンクをクリックすると、HP社外へリンクします。 が管理する商用のデスクトップ環境であるCDE(Common Desktop Environment)が採用されています。ファイルのコピー/移動、削除、2時間目で説明するシンボリックリンクの作成といったファイルの基本操作は、CDEのファイルマネージャを使っても行えます。

そのままファイルをドラッグ&ドロップすると移動になりますが、Ctrlキーを押しながらドラッグ&ドロップすると移動になります。

CDEのファイルマネージャ
図1:CDEのファイルマネージャ

なお、コピー/移動先のパスをダイアログボックスで指定することもできます。たとえば、コピーする場合にはファイルを選択してから、「選択」メニューから「コピー先を選択」を選択します。表示されるダイアログボックスで、コピー先のディレクトリのパスと、ファイル名を指定してEnterキーを押すとコピーが実行されます。

ダイアログボックスを使ったファイルのコピー
図2:ダイアログボックスを使ったファイルのコピー

連載記事一覧 1  |  2 次のページへ

本ページの内容は執筆時の情報に基づいており、異なる場合があります。

お問い合わせ

ご購入前のお問い合わせ


ご購入後のお問い合わせ

HPEサポートセンター
製品の標準保証でご利用いただける無償のサービスです。

ショールーム

ショールーム 導入をご検討のお客様へ
業務アプリケーションの継続・標準化・開発性とシステム担当者様、システム開発者様が抱える悩み・疑問に対する解決策実体験して頂けます。
印刷用画面へ
プライバシー ご利用条件・免責事項