ファイルシステム
コンピュータ上で扱われるデータには様々な種類が有るが、これらのデータをすべて「ファイル」という概念で扱う。通常、これらのファイルは内容や種類に応じて分類・整理し、それぞれの入れ物にまとめておくが、こうしたファイルの入れ物の事をディレクトリ(Windowsではフォルダ)と呼びます。
ディレクトリの中にはファイルだけではなく、さらにディレクトリを入れることもでき、ツリー状に階層化されて管理している。この階層のトップ、つまり一番元になる位置を「/」(ルートディレクトリ)と呼ぶ。
「/」にある「etc」ディレクトリ内の「inittab」ファイルを示すときは「/etc/inittab」と表され、ある場所からある場所への経路を「パス」(path)という。
「/etc/inittab」のように「/」を基点として表すパスを「絶対パス」または「フルパス」、現在の自分の位置(カレントディレクトリ)から目的のディレクトリへの経路を「相対パス」という。カレントディレクトリが「/etc」であった場合の相対パス表記は「./inittab」となる。
また、「/」の様に基点と考えるディレクトリとして、「ホームディレクトリ」(「~/」と表す)がある。コレは、ユーザがログインしたときにいるカレントディレクトリで、ユーザ毎に場所が確保されている。しかし、ホームディレクトリからの経路は絶対パスとは呼ばない。
基本的なファイル管理コマンド
| ls 「オプション」 「ファイル名・ディレクトリ名」 | エルエス |
ファイルやディレクトリの一覧表示
-l:詳細な情報の表示
-i:iノード番号の表示
-a:「.」で始まるファイルも表示
-A:-aと同じだが「.」(カレントディレクトリ)や「..」(親ディレクト)は表示しない
-d:指定したディレクトリ自身の情報を表示する
-F:種類を表示。ディレクトリは「/」、実行ファイルは「*」、シンボリックリンクは「@」
-C:複数の列で表示 |
| touch 「オプション」 ファイル名 | タッチ |
ファイルの更新時刻などを変更する(空のファイルの作成も可能)
-a:最終アクセス時刻を変更
-m:最終更新時刻を変更 |
| mkdir 「オプション」 ディレクトリ名 | メイクディレクトリ |
ディレクトリの作成
-p:親ディレクトリも同時に作成
-m:アクセス権を指定してディレクトリを作成 |
| rm 「オプション」 ファイル名 | リムーブ |
ファイルの削除
-f:確認せず、強制的に削除
-i:削除するときに確認
-r もしくは -R:ディレクトリを丸ごと削除 |
| cp 「オプション」 複写元 複写先 | コピー |
ファイルの複写
-f:複写先に同名ファイルがあれば上書き
-i:複写先に同名ファイルがあれば確認
-p:複写元のファイル属性(アクセス権や所有者など)を保持したままコピー
-r もしくは -R:ディレクトリをコピー |
| mv 「オプション」 移動元 移動先 | ムーブ |
ファイルの移動
-f:移動先に同名ファイルがあれば上書き
-i:移動先に同名ファイルがあれば確認 |
|
| ワイルドカード | |
ある条件にマッチする複数の文字列を表すもの
*:0文字以上の任意の文字または文字列
?:任意の1文字
[]:[]内の任意の1文字
\:直後の文字をワイルドカードとして扱わない |
$ ls
←全て省略するとカレントディレクトリの一覧を表示
defconf hpbackup.sh lpic.txt
$ ls -l
合計 12
drwxr-xr-x 2 root root 4096 1月 23 21:02 defconf
-rw-r--r-- 1 root root 144 4月 15 15:04 hpbackup.sh
-rw-rw-r-- 1 user user 119 6月 27 20:37 lpic.txt
←1行に1つづつ詳細が表示
$ ls -i
4718609 defconf 4718662 hpbackup.sh 4718670 lpic.txt
↑それぞれのファイル(ディレクトリ)の前にiノード番号が表示
$ ls -a
. .bash_history .bash_profile .canna defconf lpic.txt
.. .bash_logout .bashrc .ssh hpbackup.sh
↑「.」から始まるファイル(ディレクトリ)も全て表示
$ ls -A
.bash_history .bash_profile .canna defconf lpic.txt
.bash_logout .bashrc .ssh hpbackup.sh
↑-aと違い「.」「..」は表示されない
$ ls -F
defconf/ hpbackup.sh lpic.txt
↑ファイル(ディレクトリ)の後ろに表示
$ ls -lC
defconf hpbackup.sh lpic.txt
←本来1行1ファイルで詳細が表示されるが「C」オプションで元に戻っている
$ ls -liad
←オプションは複数指定可能
4718594 drwx------ 4 user user 4096 6月 27 20:37 .
$ ls
hpbackup.sh defconf lpic.txt
$ touch kara.txt
←0バイト(空)のファイル作成
$ ls -l kara.txt
-rw-rw-r-- 1 user user 0 6月 30 14:30 kara.txt
↑サイズは0バイト
$ touch -a kara.txt
←アクセス時刻の変更(14:35に実行
$ ls -l kara.txt
-rw-rw-r-- 1 user user 0 6月 30 14:30 kara.txt
↑変わらない
$ touch -m kara.txt
←更新時刻の変更(14:40に実行
$ ls -l kara.txt
-rw-rw-r-- 1 user user 0 6月 30 14:40 kara.txt
↑変更された
$ mkdir lpic
←サブディレクトリ作成
$ ls
defconf hpbackup.sh kara.txt lpic lpic.txt
↑作成された
$ mkdir -p ~/lpic/lpic1/101
↑サブディレクトリ内に「101」ディレクトリと、その親ディレクトリの作成
$ ls lpic
←サブディレクトリ内の表示
lpic1
←親ディレクトリが作成されている
$ ls lpic/lpic1
←さらにその中の表示
101
←目的の「101」ディレクトリが作成されている
$ rm kara.txt
$ rm -i lpic.txt
rm: remove 通常ファイル `lpic.txt'? y
←確認される(「y」es/「n」oを答える
$ ls
defconf hpbackup.sh lpic
←どちらも削除されている
$ rm -r ~/lpic/lpic1/101
←2階層下の「101」ディレクトリの削除
$ ls ~/lpic/lpic1
←削除されている
$ rm -R lpic
←中身(子ディレクトリ「lpic1」)も含めてディレクトリ削除
$ ls
defconf hpbackup.sh
←削除されている為、表示されない
$ ls
defconf hpbackup.sh lpic
$ ls ~/lpic
lpic1.txt
$ rm -ri lpic
←ディレクトリごと、確認しながら削除
rm: descend into directory `lpic'? y
←削除作業を行うかの確認
rm: remove 通常の空ファイル `lpic/lpic1.txt'? y
↑ディレクトリ内のファイルを削除するか確認
rm: remove ディレクトリ `lpic'? y
←ディレクトリを削除するか確認
$ ls -l
合計 12
-rw-rw-r-- 1 user user 0 6月 30 15:26 201.txt
-rw-rw-r-- 1 user user 0 6月 30 15:26 202.txt
-rw-rw-r-- 1 user user 0 6月 30 15:27 321.txt
-rw-rw-r-- 1 user user 0 6月 30 15:27 322.txt
-rw-rw-r-- 1 user user 0 6月 30 15:27 323.txt
drwxr-xr-x 2 root root 4096 1月 23 21:02 defconf
-rw-r--r-- 1 root root 144 4月 15 15:04 hpbackup.sh
drwxrwxr-x 2 user user 4096 6月 30 15:25 lpic
$ ls -l lpic
合計 0
-rw-rw-r-- 1 user user 15 6月 30 15:29 101.txt
-rw-rw-r-- 1 user user 0 6月 30 15:22 102.txt
$ cp 201.txt ~/lpic
←「201.txt」を「lpic」内にコピー
$ ls -l lpic
合計 4
-rw-rw-r-- 1 user user 15 6月 30 15:29 101.txt
-rw-rw-r-- 1 user user 0 6月 30 15:22 102.txt
-rw-rw-r-- 1 user user 0 6月 30 15:28 201.txt
←コピーされている
$ cp lpic/101.txt lpic/201.txt
←名前を変えてコピー
$ ls -l lpic
合計 8
-rw-rw-r-- 1 user user 15 6月 30 15:29 101.txt
-rw-rw-r-- 1 user user 0 6月 30 15:22 102.txt
-rw-rw-r-- 1 user user 15 6月 30 15:30 201.txt
←上書きでコピーされる
$ cp -i lpic/101.txt lpic/102.txt
←上書き時に確認をする
cp: `lpic/102.txt' を上書きしてもよろしいですか(yes/no)? y
↑「yes」もしくは「y」で上書き
$ ls -l lpic
合計 12
-rw-rw-r-- 1 user user 15 6月 30 15:29 101.txt
-rw-rw-r-- 1 user user 15 6月 30 15:30 102.txt
←上書きされている
-rw-rw-r-- 1 user user 15 6月 30 15:30 201.txt
$ cp 20?.txt lpic
←ワイルドカードを使用して「20」+1文字のテキストファイルをコピー
$ ls -l lpic
合計 8
-rw-rw-r-- 1 user user 15 6月 30 15:29 101.txt
-rw-rw-r-- 1 user user 15 6月 30 15:30 102.txt
-rw-rw-r-- 1 user user 0 6月 30 15:31 201.txt
←コピーされている
-rw-rw-r-- 1 user user 0 6月 30 15:31 202.txt
←コピーされている
$ cp -r lpic lpic1
←ディレクトリの中身を含め、コピー
$ ls
201.txt 321.txt 323.txt hpbackup.sh
202.txt 322.txt defconf lpic lpic1
↑コピーされている
$ ls lpic1
101.txt 102.txt 201.txt 202.txt
←中身もコピーされている
$ mv *.txt lpic
←ワイルドカードを使用してテキストファイルを全て移動
$ ls
defconf hpbackup.sh lpic lpic1
←元ファイルは無くなる
$ ls lpic
101.txt 102.txt 201.txt 202.txt 321.txt 322.txt 323.txt
←移動されている
|
ファイルの検索
| which 「オプション」 コマンド名 | ウィッチ |
コマンドの実行ファイルのフルパスを表示
※コマンドサーチパス(環境変数「PATH」)にないコマンドは検索できない |
| whereis 「オプション」 コマンド名 | ウェアイズ |
特定のコマンドの実行ファイル、ソースファイル、マニュアルファイルのフルパスを表示
-b:バイナリファイル(実行ファイル)を表示
-m:マニュアルファイルを表示
-s:ソースファイルを表示 |
| find 「検索対象ディレクトリ」 「検索式」 | ファインド |
条件を指定して検索
※「検索対象ディレクトリ」を省略すると、カレントディレクトリを対象とする
-name 文字列:名前で検索
-mtime 日時:最終更新日時で検索
-perm アクセス権:アクセス権で検索
-user ユーザ名:ファイルの所有者で検索 |
| locate 「検索文字列」 | ロケート |
あらかじめ作成されたファイル名データベースを使って高速に検索
※ファイル名データベースは定期的にアップデートされているが、「updatedb」コマンドでもアップデートできる |
$ which mkdir
/bin/mkdir
←コマンドのフルパスが表示
$ whereis cp
cp: /bin/cp /usr/share/man/man1/cp.1.gz /usr/share/man/man1p/cp.1p.gz
↑バイナリ、マニュアル、ソースの内あるもの全てが表示
$ whereis -b cp
cp: /bin/cp
←バイナリファイルのみ表示
$ whereis -m cp
cp: /usr/share/man/man1/cp.1.gz /usr/share/man/man1p/cp.1p.gz
↑マニュアルファイルのみ表示
$ whereis -s cp
cp:
←ソースファイルのみ表示
↑ファイルが無いので表示されない
$ find lpic -name 101.txt
lpic/101.txt
←指定ディレクトリ以下に指定ファイルがあれば表示
$ find -perm 775
←カレントディレクトリ以下の検索
./lpic1
←指定されたアクセス権を持つファイルやディレクトリが表示
./lpic
$ find -user user
←カレントディレクトリ以下の所有権ユーザ名「user」を表示
.
./lpic1
./lpic1/102.txt
./lpic1/101.txt
./lpic1/201.txt
./lpic1/202.txt
.
←全て表示される
.(省略)
.
$ locate 'lpic'
←ファイル名データベースより、「lpic」をパス名に含むものを検索
/home/user/lpic1
/home/user/lpic1/102.txt
/home/user/lpic1/101.txt
/home/user/lpic1/201.txt
/home/user/lpic1/202.txt
/home/user/lpic1
/home/user/lpic
.
←全て表示される
.(省略)
.
|