/go-ls

My golang learning

Primary LanguageGo

go-ls

ls コマンドを作ってみる

機能

目標は Posix。

  • -C : ファイルを複数列でリスト表示する。垂直方向にソートする。
  • -F : ディレクトリ名の後に /' を、FIFO の名前の後に |' を、 実行可能なファイル名の後に `*' をそれぞれ付加する。
  • -R : サブディレクトリがあれば、再帰的にリスト表示する。
  • -a : `.' で始まる名前のファイルをリスト表示に含める。
  • -c : ソート (-t) やリスト表示 (-l) のとき、 修正時刻ではなく状態変更時刻を使う。
  • -d : ディレクトリの中身を表示せず、 他のファイルと同じようにディレクトリ名をリスト表示する。
  • -i : ファイルのシリアル番号 (i-node 番号) をファイル名の出力の前に置く。
  • -l : ファイルのモード・リンクの数・所有者名・グループ名・ (バイト単位の) サイズ・タイムスタンプ・名前を (1 列形式で) 書き出す。 デフォルトでは、表示されるタイムスタンプは最終修正時刻である。 オプション -c と -u のときは、他の 2 つのタイムスタンプを選択する。 デバイススペシャルファイルの場合、通例として、サイズを表示する場所が デバイスのメジャー番号とマイナー番号に置き換えられる。
  • -q : ファイル名の中の非表示文字をクエスチョンマークで出力する。 (端末への出力では、このオプションをデフォルトにすることが許されている。)
  • -r : ソートの順序を逆にする。
  • -t : 表示されるタイムスタンプでソートする。
  • -u : ソート (-t) やリスト表示 (-l) のとき、 修正時刻ではなく最終アクセス時刻を使う。
  • -1 : 出力を 1 列にする。

最短目標

  1. ディレクトリ・ファイル一覧表示
  2. -a オプション
  3. -l オプション(Permission/link count/owner/group name/byte size/timestamp/name)