LPIC 3日目

ファイル管理

なんか難しいことが始まりそうですが、ご心配なく【ファイルのコピー/移動/削除/圧縮/アーカイブ】です。ファイルだけでなく、ディレクトリもここでやります。
どちらにしてもwinでの操作ならチョロいでしょう?

 

cp【コピー】

読んで字の如く、コピーです。

$ cp コピー元ファイル名 コピー先ファイル名

勿論、ファイル名は絶対パスでも相対パスでもOKです。
上記の書き方だと、ファイル名は変わります。

別ディレクトリにあるものをコピーして持ってきたい場合は、

$ cp コピー元ファイル名 コピー先ディレクトリ

となります。

では、以下をやってみましょう。
※因みに、ホームディレクトリとは、ログイン後にいるディレクトリのことです

・/etc/hostsファイルをホームディレクトリに、myhosts という名前でコピー
・/etc/hostsファイルをホームディレクトリに名前を変えずにコピー
・lsコマンドで、上記2点のファイルがホームディレクトリにあることを確認

ディレクトリもコピー出来るのですが、オプション【-r】が必要です。

$ cp -r コピー元ディレクトリ名 コピー先ディレクトリ(名)

オプションは、cal の時にちょっと触れましたよね。コマンドの機能を拡張・調整してくれるものという理解でいいと思います。

mv【ムーブ】

ファイルを移動します。使い方はcpに似ています。
要は、「コマンド 元 先」ってやつです。

$ mv 移動元ファイル名 移動先ディレクトリ

勘のいい人なら「あれ?」と思ったかもしれません。
「こんな書き方したらどうなるの?」

$ mv 移動元ファイル名 移動先ファイル名

コピーの時もありましたね。具体例だとこうなります。

$ mv hosts hosts_back

hostsファイルをhosts_backという名前にして(同じ場所に)移動。
となるので、要するにリネーム(ファイル名称変更)されることになります。

ですので、mvは移動とリネームの2つの機能があるようなものですね。

mvとcpで違う点は、もう一つあります。
mvは【-r】なしで、ディレクトリ移動が可能です。

rm【リムーブ】

削除です。
ディレクトリを削除する時は、オプション【-r】が必要です。

$ rm ファイル名
$ rm -r ディレクトリ名

ただ、rmは恐ろしいコマンドで、上記を入力してEnter叩いた瞬間に削除されます。
これはあまりよろしくないので、確認させましょ「消していいの?」と。
それがオプション【-i】です。

$ rm -i ファイル名
rm: remove regular file 'ファイル名'?

と確認してくれるので、y を入力後Enter で削除という流れになります。

mkdir【メイクディレクトリ】

ディレクトリの作成です。削除できるんだから作れないとね。

$ mkdir ディレクトリ名

シェルとか使うようになってくると便利なのが、まとめて階層になっているディレクトリを作れるオプションがあります。

$ mkdir -p test1/test2

こうすると、test1を作って、その配下にtest2を作るのと同じことが出来ます。
以下と同じことを1行で出来ると思っていただいてOKです。

$ mkdir test1
$ cd test1
$ mkdir test2

gzip【ジージップ】

圧縮です。
winでもよく使いますよね。大きなファイルを圧縮するものです。
圧縮されたファイルは【.gz】という拡張子になります。
これを解凍するには、gunzip【ジーアンジップ】を使います。

$ gzip ファイル名
$ gunzip ファイル名

gzipでホームディレクトリにあるファイルを圧縮してみてください。
圧縮したファイルが削除され、その名前に【.gz】が付いたファイルが生成されたと思います。
それを解凍すると、お察しの通りですが、、、試してみましょう。

tar【ター】

さて、ディレクトリ(サブディレクトリ含む)と配下のファイルをを圧縮したい場合はどうしたらよいでしょうか。
この時もgzipに-rというわけにはいきません。
一度ディレクトリ以下のディレクトリとファイルをまとめて、一つのファイルにする必要があります。このまとめたファイルをアーカイブといいます。

$ tar cvf アーカイブファイル名 ディレクトリ名

cvfというのはオプションです。なぜかtarはオプションに -(ハイフン)が必要ありません。
よく使うオプションの意味は以下です。

c アーカイブの作成
x アーカイブの展開
v 処理内容の出力
f  アーカイブファイルの指定

このアーカイブファイル(.tar)を圧縮することで、ディレクトリ以下を圧縮したことになります。
上記で軽く触れましたが、アーカイブ作ったら展開したいですよね。

$ tar xvf アーカイブファイル名

まとめると、、、
・tarでディレクトリ以下をアーカイブ
・gzipで圧縮
・gzipで解凍
・tarでアーカイブを展開
が、固めて戻す流れです。
大体、tarを使う時は圧縮したい時が多いです。となると、一度に出来ないの?って感じですよね。

出来るんです。

$ tar czvf 圧縮アーカイブファイル名 ディレクトリ名
$ tar czvf test.tar.gz /var/www/html/test

zを指定すると、できちゃうんですよね。
当然、解凍・展開も可能です。

$ tar xzvf test.tar.gz

オプション z が【gzip圧縮を利用する】というものなんです。

 

さて、ファイル操作の理解を深めるためにも以下を実際にやってみましょう。

・ホームディレクトリに移動
・testdirディレクトリを作成
・testdir配下に、ホームディレクトリのcal.txtをコピー
・cal.txtを、cal2.txt にリネーム
・testdir配下を、testdir.tarという名前でアーカイブする
・ホームディレクトリにtestdir2ディレクトリを作成
・testdir.tarをtestdir2配下で展開する
・ls若しくはtreeで確認
・testdir.tar及び、testdir2を削除
・testdirをtarを使って、圧縮アーカイブ(testdir.tar.gz)する
・ホームディレクトリにtestdir3を作成
・testdir3配下に、testdir.tar.gzを展開する
・ls若しくはtreeで確認
・testdir3、testdir.tar.gzを削除
・ファイルとディレクトリの状態を確認

 

ユーザーとグループ

ログインするにはユーザーがなければ入れませんよね。そんなユーザーについてちょっと触れたいのですが。。

ユーザーにはUIDがあり、それを確認するコマンドがあり、UIDを管理しているファイルがあり、、、
また、ユーザーには種類があり、ユーザーによって権限が違い、、、
ユーザーをまとめているグループがあり、所属グループを確認するコマンドがあり、、、
ユーザーを追加すること、グループを追加する、所属を変更する、それぞれのコマンドがあり、、、
とまぁ色々とあるのですが、何か参考書かネットかで一度読めばわかるものと思うので自分で調べてみてください。
これらはそんな頻繁に使うものではないので、肌で憶えるというよりは理解して憶えるものかもしれません。

ただ、一点だけ。
ユーザーの種類にroot(管理者)権限というものがあり、システム全体を制御する権限を持っています。
一般ユーザーでログインした後、コマンドライン上からroot権限になることができます。

$ su -
password:

パスワードを聞かれるので、パスワードを入力しEnterでrootになれます。
rootから出る時は、exitです。

なぜこれだけ説明しているかというと、root権限でなければ実行出来ないコマンドがあるため、よく使います。
rootにならずにコマンドだけ実行する、sudoなるものもあります。