<6>
ファイル操作の基礎(実習)以下の操作は、シェル(Unix/Linux)でも、コマンドプロンプト(Windows) でも概ね同じではあるが、
一部のコマンドには差異があったり(右図)、
Windowsで使えない機能があったりもする。(本ページ下(末尾近く)の補足も参照のこと)
mkdir ディレクトリ名
# windowsではMDコマンドがあるがUnixにはない
以下の実習は いま作成したディレクトリに 移動して
cd ディレクトリ名
そのもとで行う。なお、実習が終わったら
cd ディレクトリ名
のあと そのディレクトリを消していい。
rmdir ディレクトリ名
コマンドの使い方を知る方法
コマンド名の由来
端末を起動した状態(ホームディレクトリがカレントディレクトリになっている)から、
cd ..
を何度か行って /home や /
にいる状態で、ディレクトリ作成や後述のファイル作成(或いは消去など)の
操作を行おうとすると、“permission denied”
のようなメッセージが出て、拒絶される(実際に試してみて下さい)。
sudo
をつけるのがその方法。touch コマンド
touch ファイル名
# 空のファイルができる(本来の目的はタイムスタンプ変更。「触る」の意味)
# (余談だが)touch という単語は(例えば muchと同系列の発音なのに)
# 違うスペルだったりして、英語の煩雑な点の1つですね。
nullデバイスからのコピー
cp /dev/null ファイル名
# この特殊なデバイス名は、ファイル名(パス名)の代わりに使われ
# 入力元、コピー元として使われた時は 空ファイルとしてふるまう
# 出力先、コピー先として使われた時は、送られてきたデータを
# すべて黙って破棄する
この方法は(既存のファイルを上書きして消してしまう危険もあるため)
実際に使うことはお勧めしない(可能性の1つとして提示しただけ)
なお、windowsでは nul という疑似ファイル名が同じ機能を持つ
copy nul abcde
エディタで作成して保存
リダイレクトで書き込む:
情報表示系のコマンドとして
ls -l /
dpkg -l
これらのコマンドに対して、
ls -l / > x.txt
dpkg -l > yyy
などのように >
の右にファイル名を与える。(と、コマンドの出力がファイルに書き込まれる)
なお、右図のようなコマンドを入力すると、もっと長い出力が得られる(システム内のすべてのファイルのリストである)
GUIで ファイルマネージャ(PCmanFMなど)に「新規作成」といった機能があれば使える。
rm ファイル名
ファイルとディレクトリで扱いが違う。
rmdir ディレクトリ名
「消す」を意味する英単語はいくつかある(右図)が、
OS内部での「remove」動作は、ディスク等の記憶装置の中から、 当該データを完全に消し去るのではなく、そのデータに到達するための ディレクトリ項目だけを消し去るものであることが多い。
特にここは読んでおいて下さい。
rm *というような呼び方をすると、そこ(そのディレクトリ)にあるすべてのファイルを一瞬で消してしまうので注意。
これは「ワイルドカード」と呼ばれる指定方法
これについては、詳しくは Bashのマニュアル(man コマンド または Webページ たとえばここで、
「パス名展開」(長いページなのでページ内検索で探すこと;英語では pathname expansion )の章を参照。
cat ファイル名
more ファイル名
# SPACE で次ページ q で終了
less ファイル名
# h は helpのh
# q は quitのq
# (他に end exit ^D bye なども使われることがあるが)
なお、catコマンドは(元来の機能としては)右図のように
標準入力から標準出力への、変換なしの垂れ流し(透過な伝達路)だが、
cat
のように使うこともでき、このときは標準入力も標準出力も端末に割り当てられている(右図)ので、オウム返しの機能を持つ。
^Z
のように)キャレット文字 ^
で表示されることが多い(昔からの慣習)。Ctrl系の操作をこの記法で示す資料も多いので合わせて覚えておいて下さい。さらに、複数のファイル名を引数に与えて(右図)それらのファイルの内容を連結して表示することもできる。
cat abc def ghi
mousepad ファイル名
firefox ファイル名
など。
なお、mousepadやfirefoxのようなGUIを使うアプリケーションを コマンドラインから呼び出すと、
こういった状況を回避するためには、起動の際に、
mousepad ファイル名 &
のように、末尾に &をつけて呼び出すといい。
このとき、呼び出されたアプリケーションは「端末から切り離された」状態になる。
或は、すでに起動してしまったものについては、右図のような操作ができる。
こういった機能は「ジョブ制御」と呼ばれる。
CUIでのコマンド操作では クリップボードを介したコピペの概念はない。
名前の変更
mv 古い名前 新しい名前
移動:複数の対象(ファイルでもディレクトリでも)を一度に移動できる
mv 移動の対象 ... 移動先のディレクトリ
コピー
cp コピーの対象 新しい名前
cp コピーの対象 ... コピー先のディレクトリ
後者の方法では、もとの名前が維持される。
今日紹介した技術をは下の板書
(右からWindowsでのGUI、コマンドプロンプト、Unix/LinuxでのCUI)
の通り。
![]() |
![]() |
|
Unix のファイルシステムの典型例 | <=> | Windowsでの典型例 |
(ちなみに GUIで 上位のディレクトリに移動する「cd . .」に相当するキー操作は、BackSpace)
me@host ~ $ mkdir abc # ディレクトリ作成
me@host ~ $ cd abc # ディレクトリ移動(プロンプトも変る)
me@host /home/me/abc $ touch aa # ファイル(空の)を作成
me@host /home/me/abc $ mkdir def
me@host /home/me/abc $ mkdir ghi
me@host /home/me/abc $ cd .. # 1つ上へ(もとの場所に戻ってきた)
me@host ~ $ cd .. # さらに上へ
me@host /home $ touch xx # ここには作れない(権限がないため)
permission denied # このようなメッセージが英語で出るだろう
me@host /home $ cd .. # さらに上へ(ルートディレクトリに来た)
me@host / $ touch yy # ここも勿論作れない
permission denied ...
Unix/Linuxは(普段は意識しないがWindowsパソコンも) 「マルチユーザ」システムであり、 ユーザ間での権限の調整がOSの重要な課題になる。
黒板を使った別ページ解説も参照下さい。
Unix/Linuxでは、ファイルシステムは全体で1つ (違うデバイスに跨っていて1つの木構造としてまとめられている)
Windowsでは、デバイス毎に「ドライブレター(アルファベット一文字 後ろに : がつく)」 が付与されて、別の木構造が作られる。
Windowsでは、c:や c:などのフォルダが、 (エクスプローラ等の標準ソフトでは)「ユーザー」「マイドキュメント」のように 日本語表示(各国語での表示)される。