ここでは,コマンドライン上からのファイルの操作方法について説明します.より具体的には,以下について説明します.
- ファイルやディレクトリの複製・移動・削除(cp, mv, rm コマンド)
- ファイル内容の表示(cat, less, lv コマンド)
- ファイルの作成(cat, touch コマンド)
ファイルやディレクトリの複製・移動・削除の操作については,Finder では 14.3.3 ファイルの操作 と対応します.
ファイルやディレクトリの複製
ファイルやディレクトリの複製を行うには,cp コマンドを利用します.
例えば,次の 2 行目の入力はカレントディレクトリにある foo.txt を複製した bar.txt というファイルを作ります.
また次の例では,foo.txt を親ディレクトリに同じ名前でコピーしています.
コピー先に既に同じ名前のファイルがあった場合.コピーしたファイルで上書きされ,元の内容は永久に抹消されます.復活させる方法はありません.なお,-i オプションをつけることで,本当に上書きしてよいか確認することができます.
cp コマンドは,ディレクトリの複製にも使用することができます.ただし,その際には -r オプションをつける必要があります.次の例の 1 行目は,-r オプションをつけないとエラーが出ることを示しています.
さて,ここで 2 行目の実行結果について見てみると,次のようになります:
- コピー先の ~/tmp が存在していなければ,コピー元の piyo/fuga というディレクトリが,~/tmp という名前でコピーされます.
- もし ~/tmp が既に存在していれば,その中に fuga という(コピー元と同じ名前の)ディレクトリが作られます.
次の例は,piyo/fuga というディレクトリをカレントディレクトリにコピーします.カレントディレクトリは存在しているので,fuga というディレクトリがカレントディレクトリの真下にできることになります.
なお,ここで「cp piyo/fuga/ .」とコピー元の最後に「/」をつけると,教育用計算機システムでは fuga ディレクトリの中身がコピーされることになりますので,気をつけてください.
デスクトップに現れたコピーされたファイルのアイコンをダブルクリックし,そこに書いてある花子さんの職業を見てみて下さい.花子さんの職業は何でしょう.(1)
練習が終わったら,コピーしたファイルを削除しておくと便利です.
ファイルやディレクトリの移動
ファイルやディレクトリの移動には, cp コマンドの代わりに mv コマンドを利用します.使い方はほぼ同じで,ディレクトリの移動の際に -r オプションがいらなくなっただけです.
cp コマンドと同じように,移動先に既に同じ名前のファイルがあった場合.移動したファイルで上書きされ,元の内容は永久に抹消されます.復活させる方法はありません.-i オプションをつけることで,本当に上書きしてよいか確認することができます.
例えば,次の2行めの入力はカレントディレクトリにある foo.txt を(カレントディレクトリの)baz.txt に移動させます.これは名前の変更を行っていることに相当します.
また,次の例は,bar.txt を piyo というディレクトリに移動させます.
cp のときと同様に,ディレクトリを移動する次のコマンド
の実行結果について見てみると,次のようになります.
- 移動先の ~/tmp が存在していなければ,移動元の piyo/fuga というディレクトリが,~/tmp という場所に名前・位置になります.
- もし ~/tmp が既に存在していれば,その中に fuga という(移動元と同じ名前の)ディレクトリが作られます.
ファイル・ディレクトリの削除
ファイルやディレクトリの削除には,rm コマンドを用います.ディレクトリを削除するには,-r オプションを指定する必要があります.
削除したファイルやディレクトリを復活させる方法はありません.-i オプションをつけることで,本当に削除してよいか確認することができます.
なお,ディレクトリを削除しようとするときに,-r オプションなしで rm コマンドを実行させると,例えば
のようなエラーが表示されます.実際の削除は行われません.
ファイル内容の表示
ファイルの中には,テキストファイルという(人間が読める)文字データだけが書かれたファイルがあります.代表例としては,シェルスクリプト(25.4 シェルスクリプト)や,TeX ソース(27. LaTeX)などがあります.テキストファイルの内容は,cat, less, lv といったコマンドで表示させることができます.ここでは,これらのコマンドの使用例を解説します.
cat コマンドは,ファイルの中身を一挙に表示させるコマンドです.引数に表示させたいファイル名を指定します.その性質上,1 画面に収まらないような長いファイルには不向きです.下の例は,memo.txt というファイルの中身を画面に一挙に表示させます.
1 画面を超えるような長いテキストファイルを読むには,less, lv といったコマンドを使います.これらは 1 画面単位で内容を表示するプログラムで,ページャと総称されます.
less コマンド
less コマンドは,cat コマンドと同じように,表示させたいファイルの名前を後ろに指定して使います.
1 画面分を表示すると一旦停止します. キーを押すと,1 画面分スクロールして続きを見ることができます.上下の矢印キーを使って,1 行ずつ見る範囲を変えることもできます.終了するには q キーを押します.
less 起動中に h キーを押すか,
としてコマンドラインから起動すると,キー操作のヘルプが表示されます.
代表的な操作方法を下にまとめます.一つの操作に対し,複数の方法が用意されている場合が多いです.
操作 | キー |
---|---|
less の終了 | q, Q, ZZ など |
1画面進む | , f, f, v |
1画面戻る | b, b, v |
半画面進む | d, d |
半画面戻る | u, u |
1行だけ進む | , e, j, n など |
1行だけ戻る | y, k, p など |
lv コマンド
lv コマンドは,ほぼ less コマンドと使い勝手は変わりません.
しかし,lv コマンドでは文字コード(18.4 文字の符号化)の自動判別ができたりするので,日本語のテキストファイルを読むには lv コマンドの方が便利かもしれません.一方,less コマンドにだけあって lv コマンドにはない機能もあります.
ファイルの作成
ファイルを作るには mi などのアプリケーションを用いたり,他の場所からのコピーやダウンロードをすることが多いですが,コマンドラインから直接ファイルを作ることもできます.
コマンドラインを利用してファイルを作成する場合,「>」を使ったリダイレクション(詳しくは15.5 パイプとリダイレクションを参照)という方法を使うことが多いです.大雑把にいうと,コマンドの出力結果を画面ではなくファイルに変更することでファイルを作る,ということになります.
例えば,(echo コマンドはあとに指定された文字列をそのまま出力させるだけなので)次で addr.txt というファイルを作ることができます.
cat コマンドを使って複数行のファイルを作ることもできます.例えば,memo.txt を作るには次のようにします.
ここで,カーソルは行頭に移動し入力待ちの状態になります.この状態でどんどん新しい文章を入力していきます.
入力を終わりにするには,最後の行を入力し終わった後(を押した後)で dを押します.
また touch コマンドを使うと,「空ファイルを作る」ことができます.空のファイルをつくるなんて意味があるのかと思われるかもしれませんが,「この作業はいついつに終わった」ことを空ファイルを作ることで記録することもが行われたりしています.touch コマンドは,ただ
のように引数に作りたいファイル名を与えればよく,リダイレクションは不要です.また,すでに存在するファイル名を touch コマンドに与えることもでき,そうした場合は更新時刻だけが現在時刻に変わる(ファイルの内容は変わらない)ことになります.