ls
フロントエンド


このフロントエンドからは、UNIX起源のファイルリスト表示プログラムのlslistの略だと言われています)を実行できます。PCK版のlsは、cygwinツール版をモデルにしているものの、Windowsでは無意味に思われるいくつかのオプションを省略するとともに、Windows用に必要だと思われるオプションを追加し、-lオプションで表示される内容をWindows向きに変え、ファイル名を比較するときに大文字と小文字を区別しないように変更してあります。また、cygwinlsは、2バイト目が\になる全角文字を含むディレクトリ、ファイルを処理できません(たとえば、ソ連結構.txtというようなファイルを使って試してみてください。「」と「」の2バイト目は\です)。一方、UNIXはルートディレクトリにも... ディレクトリがあり(ルートの..はルートを指します)、必要以上に../../を続けてもルートディレクトリに達することができるようになっていますが、Windowsのルートディレクトリには..どころか.さえありません。cygwinlsUNIXの動作を忠実に再現していますが、PCKlsWindowsに合わせてルートディレクトリの..を参照することができません。

lsは、Windowscommand.com/cmd.exedir内部コマンドと似ていると言えば似ていますが、大きな違いもあります。lsが生まれたUNIXでは、*?などの特殊文字はシェル(プログラムを起動するプログラム。Windowsではcommand.comcmd.exeやエクスプローラですが、UNIXでは、shcshやこれらの拡張版が使われています)が展開してプログラムに渡しますが、Windowsやその前身のMS-DOSでは、プログラム自身が解釈しなければなりません。lsWindowsにやってきてもlsなので、まず特殊文字(Windowsではワイルドカードと呼ぶことが多いです)を展開して、特殊文字のないファイルの集合を作ってから処理します。ですから、ls *.cpp *.hというようなコマンド行を実行したときには、拡張子が.cppのファイルと.hのファイルが入り乱れて表示されます。それに対し、dir *.cpp *.hを実行すると、まず拡張子.cppのファイルが表示されてから、拡張子.hのファイルが表示されます。

また、lsはこのように特殊文字を展開したあとの「ファイル」が純正のファイルなのか、特殊ファイルであるディレクトリなのかを区別します(-dオプションを指定しない場合)。ディレクトリであれば、ディレクトリ自身の情報ではなく、ディレクトリに格納されているファイルについての情報を表示します。特に表示対象を指定しなければ、「.」(カレントディレクトリ)が指定されたのと同じように動作します。ls .というコマンド行は、「.」がディレクトリなので、カレントディレクトリに含まれているすべてのファイル、ディレクトリ(ただし隠し属性が指定されているものを除く)を表示しようとします。それに対し、ls *というコマンド行は、*を展開してディレクトリ以外のファイルを表示してから、サブディレクトリの内容を表示します。ですから、サブディレクトリを持つディレクトリでは、lsls *の実行結果は異なります。

 

通常のウィンドウ

のメインダイアログから起動したときのウィンドウ

表示対象

lsコマンドは、コマンド行引数としてファイル、ディレクトリ名を受け付けますが、 ファイルの内容を読み出すわけではありませんので、それらのファイル、ディレクトリ名を入力と呼ぶことはできないでしょう。そこで、表示対象という言葉を使っています。しかし、他の大多数のGUIフロントエンドの「入力ファイル」ダイアログと同じものを使っています。ただし、このプログラムの「表示するディレクトリ、ファイル」ダイアログボックスには、「stdin追加」ボタンはなく、「ディレクトリ」ボタンがあります。

 

ファイル、ディレクトリ      このボタンをクリックすると、「表示するディレクトリ、ファイル」ダイアログボックスがオープンされます。

 

ファイル、ディレクトリの指定方法の詳細については、「入力の指定」も参照してください。

オプション

出力

この部分の選択を変えると、出力の形が大きく変わります。

 

 

-C 次のように上から下に進み、右に移ってさらに上から下に進む段組形式です。GUIフロントエンドからではなく、MS-DOS/コマンドプロンプトウィンドウで標準出力をリダイレクトせずに実行したときのデフォルトです。

 

_default.pif                                Offline Web Pages

Active Setup Log.BAK                        ot32.INI

Active Setup Log.txt                        ot32ext.dll

 

-l 小文字のエルです。次のように冒頭でディレクトリ内のファイルサイズの合計(単位はセクタ数。--kilobytesが指定されていれば単位は1KB)を表示してから、個々のファイルについて属性、サイズ、日時(--timeの設定によって作成、変更、アクセスのどの日時情報を表示するかが変わります)、ファイル名を表示します。属性フィールドは、左からディレクトリ(ディレクトリならdそうでなければ-)、アーカイブ(アーカイブ属性がセットされていたらaそうでなければ-)、ディレクトリ(ディレクトリならdそうでなければ-)、インデックスサービス(インデックスサービスの対象になっているか、インデックスサービスが実装されていなければI、対象になっていなければ-)、システム(システム属性がセットされていたらsそうでなければ-)、隠し(隠し属性がセットされていたらhそうでなければ-)、圧縮(圧縮されていたらcそうでなければ-)、暗号(暗号化されていたらeそうでなければ-)、読み書き(読み出し専用ならo読み書き両用ならw)を表しています。

 

total 5732

-aI----w          707 Dec 17 1999 21:00 _default.pif

-aI----w         1063 Apr  6 2001 13:33 Active Setup Log.BAK

-aI----w         1065 Apr  6 2001 13:34 Active Setup Log.txt

 

-1 数字のです。次のように1行に1つずつファイル名を出力します。標準出力をリダイレクトしたときのデフォルトです。

 

_default.pif

Active Setup Log.BAK

Active Setup Log.txt

 

-x 次のように左から右に進み、1行下に移ってまた左から右に進む段組形式です。

 

_default.pif                                Active Setup Log.BAK

Active Setup Log.txt                        addins

AppPatch                           Ascd_tmp.ini

 

-m 次のようにファイル名をカンマで区切って、行に詰め込めるだけ詰め込む表示形式です。

 

_default.pif, Active Setup Log.BAK, Active Setup Log.txt, addins, AppPatch,

Ascd_tmp.ini, autorun.INI, CBK1250.CLP, CBK8820.CLP, cd32.exe,

 

-Q 次のようにファイル名を""で囲んで表示します

 

"_default.pif"                     "Offline Web Pages"

"Active Setup Log.BAK"                      "ot32.INI"

"Active Setup Log.txt"                      "ot32ext.dll"

 

-s ファイル名の左側にファイルサイズ情報(単位はセクタ数。--kilobytesが指定されていれば単位は1KB)を表示します。

 

total 5732

   1 _default.pif

   2 Active Setup Log.BAK

   2 Active Setup Log.txt

 

-e –lの表示を次のように変えます(秒の情報が追加されます)。

 

total 5732

-aI----w          707 Fri Dec 17 1999 21:00:00 _default.pif

-aI----w         1063 Fri Apr  6 2001 13:33:09 Active Setup Log.BAK

-aI----w         1065 Fri Apr  6 2001 13:34:30 Active Setup Log.txt

 

-F ディレクトリにはファイル名の横に/-zが指定されていたら\)、実行可能ファイルにはファイル名の横に*を付加します。

 

Registration/

REGLOCS.OLD

REGTLIB.EXE*

 

-z PCK版のみのオプションです。ディレクトリ区切り子をUNIX風の/ではなく、Windows風の\にします。

 

\winnt\system32:

$disp.sys                                   MSBIND.DEP

$ias.sys                           MSBIND.DLL

 

Registration\

REGLOCS.OLD

REGTLIB.EXE*

 

-M PCK版のみのオプションです。 16ビットプログラムも認識できるMS-DOS時代の8.3形式のファイル名を表示します。

 

_default.pif      DRIVER~1          msdfmap.ini       setup.log         vb.ini

ACTIVE~1.BAK      explorer.exe      MSO97.ACL         setupact.log      vbaddin.ini

ACTIVE~1.TXT      explorer.scf      mww32             setupapi.log      vmmreg32.dll

ソート、時間、表示対象

このページは、ファイルリストの並び順、-lで表示される時間情報、表示されるファイルの基準を指定します。

 

 

-S ファイルサイズが大きいものから順に表示します

-c 作成日時が新しいものから順に表示します。

-t 変更日時が新しいものから順に表示します。

-u アクセス日時が新しいものから順に表示します。

-c 作成時間が新しいものから順に表示します。

-U 特に並び替えを行いません。その分、おそらく高速に実行されます。

-X 拡張子のアルファベット順に並び替えます。

これらのオプションを指定しなければ、ファイル名のアルファベット順に並び替えます。-rを指定すると、逆順になります。

 

--time=ctime –lを指定したときに、時間情報として作成日時を表示します。

--time=atime –lを指定したときに、時間情報としてアクセス日時を表示します。

特に指定しなければ変更日時が表示されます。

 

-a cygwin版では、ファイル名の先頭がピリオドになっているファイルも表示するというオプションですが、Windowsでは、ファイル名の先頭がピリオドになっているかどうかにUNIXのような意味はありませんので、PCK版では隠し属性がセットされているファイルも表示するオプションになっています(「通常」)を選択すると、隠し属性を持つファイルは表示されません)。

-A cygwinPCK版とも、.(カレントディレクトリ)、..(親ディレクトリ)エントリを表示しないことを除けば、-aと同じです。

無視パターン

このページを操作すると、ディレクトリを指定したときのディレクトリ内ファイルリストから一部を取り除くことができます。

 

 

たとえば、無視パターンを指定しなければ次のように表示されるディレクトリがあったとします。

 

data

Debug/

ls.cpp

ls.dsp

ls.dsw

ls.h

ls.ncb

ls.opt

ls.plg

ReadMe.txt

Release/

StdAfx.cpp

StdAfx.h

 

ここで-I ls.*を指定すると、次のようになります。

 

data

Debug/

ReadMe.txt

Release/

StdAfx.cpp

StdAfx.h

 

また、-I ls.* -I *.txtを指定すると、次のようになります(このように複数指定することができます)。

 

data

Debug/

Release/

StdAfx.cpp

StdAfx.h

 

追加」ボタンを押すと、次のようなダイアログボックスが表示されますので、たとえば「ls.*」と入力すれば、-Iオプションが追加されます。

 

 

リスト内のアイテムを選択して「変更」ボタンを押すか、アイテムをダブルクリックしたときにも上記のダイアログボックスが表示されます。内容を書き換えて「OK」ボタンを押せば、リスト内の表示も書き換えた内容を反映したものになります。

リスト内のアイテムを選択して「削除」ボタンを押すか、[Delete]キーを押すと、そのアイテムはリストから削除されます。

その他

このページには、主としてPCK版ではサポートしていないオプションがまとめられています。PCK版がサポートしているのは、--kilobytes-sで表示されるファイルサイズ情報の単位をKBにする)、--helpls.exeのヘルプ情報を表示する)、--versionls.exeのバージョン情報を表示する)だけです。

 

 

タブの外のオプション

-R サブディレクトリを見つけると、そのサブディレクトリの中身を表示し、そのなかにサブディレクトリがあれば、さらにそのサブディレクトリも表示するということを繰り返します。

-d 通常、コマンド行パラメータとしてディレクトリ名を指定すると、そのディレクトリの内容を表示しますが、このオプションを指定すると、ディレクトリ自体の情報を表示します。たとえば、ls –l c:\winntを実行すると、次のようになりますが、

 

total 11415

-aI----w          707 Dec 17 1999 21:00 _default.pif

-aI----w         1063 Apr  6 2001 13:33 Active Setup Log.BAK

-aI----w         1065 Apr  6 2001 13:34 Active Setup Log.txt

(以下100行ほど省略)

 

  ls –dl c:\winntを実行すると、次のようになります。

 

total 0

daI----w            0 Sep 20 2001 18:40 c:\WINNT

 

-T –C-xを指定したとき、指定された数字ごとにタブストップがあるものとしてタブ文字を挿入し、行を整形します。特に指定しなければ、タブストップは8字(1バイト文字で。漢字、ひらがななどの2バイト文字で数えると4字分)ごとに置かれているものとして処理されます。

-w 1行の幅が指定された数字だということを前提として出力を整形します。特に指定しなければ1行の幅は80字と見なされます。

出力

通常、出力ファイル名を指定する必要はありません。指定しなければ、出力は一時ファイルに書き込まれ、その一時ファイルが指定されたテキストエディタによってオープンされます。しかし、ファイル名を指定すれば、出力はそのファイルにリダイレクトされ、テキストエディタにもそのファイルが渡されます。また、中央のエディットボックスにファイル名が表示され、その下の「追加」チェックボックスをチェックできるようになります。「追加」チェックオックスをチェックすると、そのファイルの元の内容の末尾に出力を書き足します。出力の指定方法の詳細は、「出力の指定」を参照してください。

コマンド行

出力グループボックスの下の行には、組み立てたコマンド行が表示されます。(pipeline)の「編集」ボタンで起動したときを除き、コマンド行の左側の四角形をマウスでクリックしてドラッグしていくと、他のcmdline)にドロップできます。また、「コピー」ボタンを押すと、コマンド行情報がクリップボードにセットされます。クリップボードにコマンド行情報がセットされているときに、マウスの右ボタンをクリックし、コンテキストメニューから「貼り付け」を選択すると、クリップボードのコマンド行情報が反映されます。ドラッグアンドドロップとコピーアンドペーストの詳細は、「ドラッグアンドドロップとコピーアンドペースト」を参照してください。エキスポート、インポートされるときのコマンド行情報の形式については、「コマンド行情報のやり取りの仕組み」を参照してください。さらに、ダイアログボックス上でマウスの右ボタンを押したときに表示されるコンテキストメニューの「.batロード」、「.bat保存」コマンドを使えば、同じ形式のコマンド行情報を.batファイルとして保存し、あとでロードすることができます。このロード、保存機能の詳細は、「.batファイルのロードと保存」を参照してください。

作業ディレクトリの設定

マイコンピュータ、エクスプローラなどからフォルダを1つだけドロップすると、そのディレクトリの内容を表示するか、作業ディレクトリを変更するかを選択できます。作業ディレクトリは、作業ディレクトリ表示行の直接編集や「ChDir」ボタンでも設定できます。作業ディレクトリを設定すると、表示対象のディレクトリやファイルを指定しなければ、その作業ディレクトリの内容が表示されます。詳しくは、「作業ディレクトリ」を参照してください。

設定

設定」ボタンを押すと、「設定」ダイアログボックスが表示されます。このダイアログボックスでは、

 

*出力の表示に使うテキストエディタ

*エクスプローラなどからファイルをドロップしたときの確認メッセージの有無

*出力の末尾に実行したコマンド行、実行時間などを付加するかどうか

 

を指定できます。詳しくは、「設定ダイアログボックス」を参照してください。

opt保存

opt保存」ボタンを押すと、「オプション」グループボックス内の設定が保存されます。詳しくは「オプション保存」を参照してください。