MAGAZINE

キャリテク!マガジン

コラム

理解しておきたいファイルシステムと、lsコマンドの使い方

こんにちは、吉政創成 アシスタントの菱沼です。
前回はディレクトリの削除や移動、名前の変更といった、ディレクトリの操作について学びました。 今回からファイルの操作に入ります。操作の前にファイルとは何かを確認し、その後、lsコマンドのオプションについて学んでいきます。

では、今回も「さわって学ぶLinux入門テキスト/赤星リナ氏著(マイナビ出版)」を片手に勉強していきます。どうぞ超初心者の方、お付き合いいただければ幸いです。

Linuxでのファイルの扱いはどんな感じ?

WindowsやMacで想像する「ファイル」というと、ExcelやWord、PowerPoint、Textなどのアプリケーションで作成して保存したもの、というイメージですが、Linuxでも同様と考えていいのでしょうか?
テキストには「ファイル」について次のように書かれています。

P.67
ファイルにはさまざまなものがあります。扱いやすいファイルとして、人間も読み書きできる「テキストファイル(text file)があります。中を見ても理解できない文字や数字からなる「バイナリファイル(binary file)」はコンピュータが使う実行ファイルやプログラムファイルなどです。Linuxは、いろいろな設定をテキストファイルで行うことができます。

・・・いろんな設定をテキストファイルで・・・?
思っていたのとちょっと、いや、だいぶ違う答えでした。なので、よくよくLinuxのファイルについて調べてみたところ、ファイルシステムという仕組みがあり、大体次のようなものを指すそうです。

  • テキストデータやバイナリデータを保存するもの
  • ハードディスク(保存領域)にデータを保存するための仕組み
  • データを読み書きする機能を持ったもの

これは、LinuxだけでなくWindowsやmacでもファイルシステムの考えは同じだということでした。

つまり…本来、「ファイル」が指し示すのは拡張子が付いたものを指すのではなく、作成した「hoge.xlsx」や「hoge.docx」、「hoge.txt」、「hoge.jpg」などに含まれた情報を保存し、読み書きする機能を持ったもの(実行するためのもの)を「ファイル」というようです。Windows脳にはなんともややこしい事態です。

参考サイト:ファイルとは|Unix/Linux+Perlでポータブルなサーバー管理入門

ファイル自体に、WindowsやMacのように、「.xlsx」や「.docx」、「.txt」、「.jpg」のような拡張子を付けてあげることはもちろん可能です。ですが、「ファイル」はあくまで「データを保存し、読み書きするもの」なので、拡張子はあくまで「名前」でしかありません。例えば、名称に「.txt」がついていようとも、その中身が「.html」であれば「htmlファイル」として扱われることになるそうです。

そういうわけで、結局のところ、「大事なのは(基本的に)外見より中身なのよ!」ということではありますが、外見と中身が不一致なのも、何モノなのかが一目でわからないのも、管理に関わる人たちにとっては不親切です。そのファイルがどんなデータであるかを一目で知ることができるようにしてあげたほうが運用上便利ですし、ミスも防止できますので、拡張子は付けてあげた方が良さそうですね。

ちなみに、名称につける拡張子と中身の整合性が取れていないと動かないものもあるそうなので、なんにせよ、中身と外見は合わせておいた方が良さそうです。

このファイルシステムについては、実際のところ昨今はそこまで詳しく知らなくても何とか出来てしまう部分はあるそうですが、インフラエンジニアを目指す場合はこの周辺をよく理解しておくと、業務を進めるにあたってスムーズだと言っていました。

余談ですが、デスクトップをLinuxにしたい場合、ExcelやWordが使えないのかといえば、そんなことはなく。使う方法はあるそうですし、互換性のあるフリーのツールもあるようです。ただ表示が崩れたり、互換性が微妙だったりした時代があったそうですので、しっかりとご検討いただければと。どんなツールがあるかを知りたい方は以下のリンクをどうぞ。

LinuxでExcelやWordなどofficeソフトは使えるの?|かどやんの備忘録Linux:Microsoft Officeで作られたファイルを開く|SLACK NOTE

ファイル名をつけるときのルールはあるの?

さて。Windowsやmacではファイル名に英数、記号、漢字、ひらがな、カタカナのすべてが使えます。Linuxではどうなのでしょうか?

P.67
ファイル名には、アルファベットの大文字や小文字、漢字やひらがな、数字、一般記号などを使うことができます。ただ、記号の中には特別な役割を持つものがあります。
たとえば、「>」や「<」は後述するリダイレクト機能で使いますし、空白を入れるなら、ファイル名を[‘]や[“]で囲む必要があります。
ファイル名の先頭を[.]で始めると隠しファイル(非表示ファイル)になってしまいます。
漢字やひらがなは、環境によっては表示できない場合も考えられますので使わないほうがいいでしょう。拡張子は必要ありませんが、見分けやすくするためにつけて保存しても構いません。アルファベットの大文字・小文字、数字、[-]ハイフン、[_]アンダーバー、[.]ドット(拡張子を使いたいときなど)などが無難です。

というわけで、なんだかんだ言ってアルファベットと限られた記号で済ませた方がいいようです。

ところで、文中に出てきた隠しファイルは設定ファイルであることが多く、削除すると正常に動作しなくなる可能性があります。このファイルを確認するにはそのままのlsコマンドでは表示することはできないそうで、今までも見たことがありません。まあ、うっかり削除してしまったら怖いので、見えなくていいのですが、表示する方法はどんなかな? と先を読み進めるとlsコマンドにオプションを付けてあげれば確認できるそうです。

テキストでは先にファイルコピーの説明がされていますが、隠しファイルが気になってしまったので、今回はlsコマンドについてまとめます。

lsコマンドをつかえばもっと詳しくわかる

lsコマンドは以前にも少しだけ書きましたが、lsコマンドのオプションについては確認したことがありませんでした。まずはlsコマンドを普通に使うとこうなります。

パスを何もつけていないので、カレントディレクトリ(現在いるディレクトリ)に存在するファイルを一覧で出してくれました。

さてオプションは次の通り。(テキストからの部分引用です。)

オプション説明
-a隠しファイルを含むすべてのファイルを表示
-lファイルの種類・タイムスタンプなどの詳細情報を表示
-r表示したファイルの順番を逆に並べ替える
-tファイルの更新日が新しい順に並べ替える

では早速それぞれやってみます。

隠しファイルを表示したいなら[ -a ]

確かに、「.(ドット)」から始まるファイルが表示されました。

ファイルの詳細情報を表示したいなら[ -l ]

オプションは重ねて使うことも可能だそうです。せっかくなので隠しファイルの詳細も確認してみます。

なんか並んでいますが…それぞれに番号を振りました。各項目の意味は次の通りです。

①ファイルタイプ
ここでは「d」と「-」が出ています。ここで表示されるものとその意味は次の通り。
- :ファイル   d:ディレクトリ   l:シンボリックリンク

②パーミッション
ファイルに対してアクセス権限がどのように設定されているかがわかります。
所有者・グループ・他人という所有権と、「読み・書き・実行」という実行権の面から設定されます。
詳しい説明は東京経済大学情報システム課のサイトをご参照ください。

ハードリンクの数
④オーナー名(ファイルの所有者)
⑤グループ名(ファイルが所属するグループ)
⑥バイトサイズ
⑦タイムスタンプ
⑧ファイル名

並びを逆にしたいなら[ -r ]

確かに逆になりました。

並びを更新順にしたいなら[ -t ]

更新順になっているかをわかりやすくするためにファイルの詳細[-l]と一緒に使ってみます。またついでに[ -r ]と組み合わせて古い順になるようにもしてみました。

それ以外にでもできることがたくさん

lsコマンドをオプション無しに打つと横一列に並ぶのはキャプチャが横に長くなっていやだから縦にしたいなーとか、ファイルサイズ順に並び替えたいなーとか、windowsみたいに拡張子ごとに並べたいなーとか。そういうことはできないのだろうかと探ってみましたらありました。

オプション説明
-1リストを縦に並べる
-Sファイルサイズ順でソートする
-X拡張子ごとに並べる
-hファイルサイズの単位をKやMなど読みやすいようにする

ところで、常々思っていたことがあります。便利なオプションがいっぱいあるのは良い。だけど覚えきれないと…。そうしたらなんと…helpがあるのだそうです…。素敵ですね。

「ls –help」と書けばいいのですが、実行してみた結果の一部抜粋がこちら。

オプションとその説明が表示されます。Google先生にお伺いする前に試してみるのもいいかもしれません。

参考サイト:lsコマンドの使い方と覚えたい15のオプション【Linuxコマンド集】|エンジニアの入り口

では今回はこちらで終了です。お付き合いいただきありがとうございました。

過去の連載記事

  1. Linuxのディレクトリを操作してみた(移動・削除・名前の変更)
  2. CentOSサーバの構築とユーザーの作り方
  3. Linuxサーバの特徴とディストリビューション
facebook シェアシェア
LINE シェアシェア