sharoa’s blog

ただいま勉強中。

lsコマンドを作るんだ。

今習っているFBCのカリキュラムの中で 「lsコマンドを作る」というものがあり、

本日無事に全ての項目のOKをもらったので

サクッとまとめたものをブログに記しておこうと思う。


1.lsコマンドって??

lsコマンドは、ファイルやディレクトリの情報を表示するもの。

「list segments」の略。

lsと打つと、現在いるディレクトリのファイルやフォルダを一覧表示してくれる、これが基本の動作。

そこにオプションが多く存在する。 (ただ、FBCのカリキュラムでは-a -r -lの3つのオプションのみ。)

2.オプションについて

  • オプション-a

   ⇨よく使うオプションの一つ。

   ⇨ファイル名の先頭にピリオド(.)があるファイルも表示してくれる。

  • オプション-l

   ⇨こちらもよく使うオプションの一つ。

   ⇨lはlongなフォーマットの意味。各ファイルのロングフォーマットを表示してくれる。

   ⇨上のオプション-aと一緒に使ったりする。( -laとか)

  • オプション-r

   ⇨逆の順番で表示してくれる。

3.実装したい内容

  • オプションなし

   ⇨横に最大3列を維持して表示。  ※下記参照

    (ファイルの並び順は列ごとに辞書式順序にソートされる)

   ⇨カレントディレクトリの内容を表示。

  • オプション-a

   ⇨ファイル名の先頭に.があるファイルも含めて表示。

  • オプション-l

   ⇨1行目にディレクトリ内の各ファイルのブロック数の合計を表示(total 数値)

   ⇨2行目以降に各ファイルのロングフォーマットを表示。

  • オプション-r

   ⇨逆順での表示。

※ ファイルの並び順。

# OKパターン
0 4 8
1 5 9
2 6 
3 7

# NGパターン
0 1 2
3 4 5
6 7 8
9

また、以下の機能は実装の対象外。

  • 引数にファイルやディレクトリを指定可能にする。

  • 半角英数字以外のファイル名(ひらがなや漢字など)を持つファイルがあっても表示が崩れない。

  • mac拡張属性(@マークで表示される)に対応。

4.ロングフォーマットについて

オプションの-lを指定した時に

totalの下(2行目以降)に 表示される(例)のような形式をロングフォーマットという。 (例)

drwxr-xr-x  14  name   staff  448  1  24  16:10  dir

ロングフォーマットの情報(詳細)は以下の7個。

①ファイルタイプとファイルモード

(例)の中ではdrwxr-xr-xこの部分に当たる。

10桁あり、1桁目がファイルタイプで、2桁目〜がファイルモード。

(この詳細はここで書くととてつもなく長くなるので 別のタイミングでブログにまた書きたいと思う。)

②ハードリンク数

(例)の中で14の部分。

ファイルのハードリンク数を表示 (シンボリックリンクはカウントされない)

③所有者名

(例)の中でnameの部分。

ファイルの所有者名を表示。

④グループ名

(例)の中でstaffの部分。

ファイルの所有グループ名を表示。

⑤ファイルサイズ

(例)の中で448の部分。

ファイルサイズをバイト単位で表示。

(ただし、ファイルがキャラクタデバイスまたはブロックデバイスの場は

ファイルサイズの代わりにデバイス番号を16進数で表示する。)

⑥タイムスタンプ

(例)の中で1 24 16:10の部分。

ファイルの最終更新時刻を表示。

表示形式は、デフォルトだと<月> <日> <時間>だが

最終更新時刻が6ヶ月以上前または未来の日付の場合は <月> <日> <年> と表示する。

⑦ファイル名

(例)の中でdirの部分。

ファイル名を表示。

もし、ファイルがシンボリックリンクの場合は、リンク先のパスも表示する。


ただのつぶやき

前回から日にち結構あいてた。 なかなか続けて書けていないのはよくないな。

まぁ、でもこれも慣れ、ということで

そういえば、これを書いてたら あーこうだったな〜とすごく辛かった時期を思い出して (一番最初のオプションなしもだいぶ辛かったし、オプションの-lも辛かった) 嫌になったw

けど、それを乗り越えられたから完成できたのもある。

時間はかかったけどね。

いつか、サクサクっとコーディングできる時が来るのだろうか。。。。