Linuxを使うに当たって(特にサーバ運営する上では)コマンドを避けて通ることは出来ません。
本ブログではコマンドを用いる際にはコマンドとオプションについてはなるべく解説を入れるようにしています。
しかしファイルの移動やコピー、名前変更の全てに解説を入れてしまうと冗長になってしまいます。
そのため、ここでファイル操作について簡単に解説したいと思います。
この記事で行うこと
- Linuxのファイル構造について
- Windowsと比べたLinuxのファイル構造
- 相対パスと絶対パス
- ファイル操作コマンドの解説
- pwd
- ls
- cd
- mv
- cp
- rm
1. Linuxのファイル構造について
1-1. Windowsと比べたLinuxのファイル構造
Linuxのファイル構造は全て「/」(ルートと呼びます)から始まります。
とても乱暴にWindowsで例えて言うとCドライブしかないようなものです。(実際には全く違いますが、それはまた別の機会に)
さて、Windowsのユーザフォルダの在処を見ると(私のWindows10の場合です)
C:¥Users¥(ユーザ名)
となっています。(こちらで半角の「¥」を入力すると環境の問題から「\」と表示されてしまうので、全角で表記しています)
C:を起点にして、Usersフォルダの中にある(ユーザ名)フォルダにドキュメントやピクチャなどのユーザ固有のデータが入っている訳ですね。
ではLinuxはどうなるかと言うと(私のCentOS7の場合です)
/home/(ユーザ名)
となっています。
ルートを起点にして、homeディレクトリ※の中にある(ユーザ名)ディレクトリにユーザ固有のデータが入っている訳です。
※Linuxではフォルダのことをディレクトリと言います。厳密には違うのですがそう覚えて困ることはないです
1-2. 相対パスと絶対パス
これはWindowsにも存在する概念なのですが、おそらくあまり使うことは無いと思います。
例えば
/home/hoge/fizz/bazz/fizzbazz/centos/7/blog
とまあ、こんな感じの入り組んだディレクトリがあるとします。
これが絶対パスです。
そして、仮に今
/home/hoge/fizz/bazz/fizzbazz/centos
に居るとします。
ここから、先程の
/home/hoge/fizz/bazz/fizzbazz/centos/7/blog
に移りたい時に、「/home/hoge/fizz/bazz/fizzbazz/centos/7/blog
」へ移動といちいち打ち込むのは面倒です。
なので「今の場所から7/blog
」へ移動と打ち込むだけで済むようになっています。
ちなみに今の場所を表すのは「./」です。
なので先程のは「./7/blog
」と表せます。
なお「../
」は一階層上を表します。
この場合は「/home/hoge/fizz/bazz/fizzbazz
」になります。
「/home/hoge/fizz/bazz/fizzbazz/centos/7/blog
」というのが絶対パス
「./7/blog
」というのが相対パスです。
絶対パスか相対パスかの区別はルート(/)から始まるか否かでつけることが出来ます。
どちらもファイル操作を行う上で利用しますので覚えておいてください。
3. ファイル操作コマンドの解説
ここで挙げる5種類のコマンドはLinuxを使う上で頻繁に使いますので覚えておいた方が良いです。
2-1. pwd
これはいま自分がいるディレクトリを表示するコマンドです。
print working directoryの略と言われます。
使い方は以下の通りです。
pwd [オプション]
一応オプションとは書きましたが実際にはオプションを使うことはないと言って良いです。
ブログなどで紹介される手順で見かけることは無いと思いますが、自分が作業しているディレクトリが合っているか心配になったときに使うと便利です。
2-2. ls
これはファイルの一覧を表示するコマンドです。
listの略と言われます。
使い方は以下の通りです。
ls [オプション] [表示したいディレクトリ]
見たいディレクトリを省略すると、自分が今居るディレクトリのファイルの一覧が表示されます。
また、よく使われるオプションは以下の通りです。
-l : 詳しい情報を表示(ファイルの所有者や権限など)
-a : 隠しファイルも含めて表示
ファイルが存在しているか、ファイルの権限が正しいかを確認する際によく使います。
2-3. cd
これはいま自分が居るディレクトリを移動するコマンドです。
使い方は以下の通りです。
cd [移動したいディレクトリ] [オプション]
こちらもオプションが使われることはあまりないです。
本ブログでは絶対パスを使うことが多いのでこのコマンドを使うことはあまり無いです。
ただ、ファイルの圧縮解凍など自分が居るディレクトリが関わるコマンドがあるのでその際にはこのコマンドで目的のディレクトリに移動してから作業します。
2-4. mv
ファイルを移動するコマンドです。
使い方は以下の通りです。
mv [オプション] [移動したいファイル] [移動先の場所(ファイル)]
このコマンドも頻繁にはオプションを使いません。
移動したいファイルにディレクトリを書き込んだ場合、ディレクトリを丸ごと移動できます。
また、移動先をファイル名で指定した場合はそのファイル名に変更できます。
例えば、
mv /home/yuto/file1 /home/file2
とした場合は、yutoディレクトリ内のfile1が消えて同じ内容のfile2がhomeディレクトリ内にできます。
このことを忘れると「ファイル名を変えるコマンドって無かったっけ?」と探す羽目になったりするので注意してください。
※renameというファイルの名前を変えるのにうってつけそうなコマンドがありますが、これは大量のファイルの名前を一括で変更する用途のコマンドです。これの存在で余計に混乱したりします。
2-5. cp
ファイルをコピーするコマンドです。
使い方は以下の通りです。
cp [オプション] [コピーしたいファイル] [コピー先の場所(ファイル)]
よく使うオプションとしては「-r」が挙げられます。
mvと違いcpでは単にディレクトリを指定してもディレクトリごとコピーはされません。
この際にオプションに「-r」を指定するとディレクトリごとコピーしてくれます。
また、コピーのファイル名を直接指定することで同じ内容の別のファイルを作ることが出来ます。
例えば、
cp /home/yuto/file1 /home/yuto/file1.backup
とした場合は、yutoディレクトリ内のfile1と同じ内容のfile1.backupというファイルが新たに出来ます。
ソフトウェアをインストールしてから、設定ファイルをいじる前には必ずこうしてバックアップを取るようにしてください。
何か問題があったら逆にfile1.backupをfile1にコピーして元に戻すことが出来るようになります。
2-6. rm
ファイルを削除するコマンドです。
使い方は以下の通りです。
rm [オプション] [削除したいファイル]
よく使うオプションとしては「-r」と「-f」が挙げられます。
rmでは単にディレクトリを選択してもディレクトリを削除できません。
先にディレクトリの中身をすべて消してから「rmdir」という別のコマンドでディレクトリを消します。
しかし、オプションに「-r」を指定するとディレクトリとその中身を一気に消すことができます。
また、rmでは基本的に削除前にファイル毎に削除するか確認されます。しかし、「-f」を指定するとこの確認がなくなります。これは大量のファイルが入ったディレクトリを消したいときに便利です。
しかし、これらのコマンドを使うときには非常に注意する必要があります。
Linuxにはゴミ箱はありません。削除したらそれっきりです。rmを使う際には慎重に行いましょう。
最悪重要なファイルをすべて失うことになりかねませんよ。
まとめ
Linuxのファイル構造と頻出のファイル操作コマンドについて簡単な説明をしました。
しかし、この記事はわかりやすさ優先でかなり内容を端折っていますので、興味があればそれぞれ調べてみてもらえればと思います。
2020/5/6 rmコマンドを追記