IDEとしてのUnix:ファイル

IDEの重要な機能の1つは、統合ファイル管理システムです。 名前変更、削除、移動などの基本機能と、開発固有の機能(コンパイルと構文チェック)の両方を含める必要があります。 さらに、ファイルのグループを操作して、サイズ、拡張子、またはマスクで検索すると便利です。 この最初の記事では、Linuxユーザーが使い慣れたツールを使用してプロジェクト内のファイルのグループを操作するためのいくつかのオプションを紹介します。





ファイルリスト



管理者は、 lsコマンドを使用して、ディレクトリの内容の簡単なリストを表示する最初のコマンドの 1つに精通しています。 多くの管理者は、 -aおよび-lスイッチを使用して、 '.'



を含むすべてのファイルをリストする方法も知っています'.'



および'..'



、および列ごとに詳細なファイル情報をそれぞれ表示します。



lsにはさらにいくつかのキーがありますが、これらはやや一般的ではありませんが、プログラミングの目的には非常に便利です。





ファイルのリストはプレーンテキストなので、ストリームをvimに送信し 、各ファイルに説明を追加してから、テキストをインベントリとして保存するか、READMEに追加できます。



 $ ls -XR | vim -
      
      







このようなことは、多くの労力をかけずにmakeで自動化することもできます。これについては、このシリーズの別の記事で説明します。



ファイル検索



奇妙なことに、引数なしで「 find 」と入力するだけで、相対パスを含むファイルの完全なリストを取得できますが、通常はsortで順番に並べるのが最善です:



 $ find | sort . ./Makefile ./README ./build ./client.c ./client.h ./common.h ./project.c ./server.c ./server.h ./tests ./tests/suite1.pl ./tests/suite2.pl ./tests/suite3.pl ./tests/suite4.pl
      
      







lsなどのファイルを一覧表示する場合は、 -lsを追加できます。



 $ find -ls | sort -k 11 1155096 4 drwxr-xr-x 4 tom tom 4096 Feb 10 09:37 . 1155152 4 drwxr-xr-x 2 tom tom 4096 Feb 10 09:17 ./build 1155155 4 -rw-r--r-- 1 tom tom 2290 Jan 11 07:21 ./client.c 1155157 4 -rw-r--r-- 1 tom tom 1871 Jan 11 16:41 ./client.h 1155159 32 -rw-r--r-- 1 tom tom 30390 Jan 10 15:29 ./common.h 1155153 24 -rw-r--r-- 1 tom tom 21170 Jan 11 05:43 ./Makefile 1155154 16 -rw-r--r-- 1 tom tom 13966 Jan 14 07:39 ./project.c 1155080 28 -rw-r--r-- 1 tom tom 25840 Jan 15 22:28 ./README 1155156 32 -rw-r--r-- 1 tom tom 31124 Jan 11 02:34 ./server.c 1155158 4 -rw-r--r-- 1 tom tom 3599 Jan 16 05:27 ./server.h 1155160 4 drwxr-xr-x 2 tom tom 4096 Feb 10 09:29 ./tests 1155161 4 -rw-r--r-- 1 tom tom 288 Jan 13 03:04 ./tests/suite1.pl 1155162 4 -rw-r--r-- 1 tom tom 1792 Jan 13 10:06 ./tests/suite2.pl 1155163 4 -rw-r--r-- 1 tom tom 112 Jan 9 23:42 ./tests/suite3.pl 1155164 4 -rw-r--r-- 1 tom tom 144 Jan 15 02:10 ./tests/suite4.pl
      
      







この場合、11番目の出力列、つまりファイル名でソートする順序を指定する必要がありました。 これには-kスイッチが使用されます。



Findには 、インラインフィルター用のかなり複雑な構文があります。 次の例は、必要なファイルのリストを取得するために使用できる最も便利なものの一部を示しています。





上記のすべてを組み合わせることができます。 たとえば、過去2日間に編集されたCソースコードを見つけるには、次のように記述します。



 $ find -name '*.c' -mtime -2
      
      





Findは、見つかったファイルに対してさまざまなアクションを実行できます。 デフォルトでは、これによりリストは標準出力に送られますが、他にもいくつかのオプションがあります。





その他のファイル検索





それでも、多くの場合、外部属性よりも、その内容に基づいてファイルを検索する必要があります。ここでは、 grep 、特にgrep -Rが急いで駆けつけます。 このコマンドは、指定されたテキストに一致するものを現在のディレクトリで再帰的に検索します。



 $ grep -FR 'someVar' .
      
      







grepはデフォルトで大文字と小文字を区別するため、大文字と小文字を区別しないフラグを忘れないでください。



 $ grep -iR 'somevar' .
      
      







grep -l



を使用して、行自体が一致しない一致を含むファイルをリストすることもできます。 これも、テキストエディターでさらに編集するためにファイルのリストを作成するときに便利です。



 $ vim -O $(grep -lR 'somevar' .)
      
      







プロジェクトがバージョン管理を使用している場合、すべてのメタデータは通常.svn



.git



または.hg



含まれてい.hg



。 固定文字列( grep -F



)と比較することで、不要な要素を簡単に削除( grep -v



)できます。

 $ grep -R 'someVar' . | grep -vF '.svn'
      
      





ackと呼ばれる非常に人気のあるgrepの代替手段があります。これはデフォルトで、すべての類似した殻を除去します。 Ackでは、Perl互換の正規表現(PCRE)を使用することもできるため、多くのハッカーに愛されています。 彼女には、ソースコードを操作する非常に便利な手段があります。 古き良きgrepには問題がないという事実にもかかわらず、それは常に手元にあるので、可能であればAckをインストールすることを強くお勧めします。 すべての一般的なUnixシステムには、標準リポジトリに対応するパッケージがあります。



基本的なUnixファンは、このような比較的新しいgrepの代替手段、さらにはPerlスクリプトの形での言及に動揺する可能性が高いです。 ただし、Unixの哲学、特にUnixをIDEとして使用するという考えは、必ずしも現在の問題を解決できる現代的な代替案をあきらめることを意味するとは思わないでしょう。



ファイルのメタデータ





ファイルユーティリティは、拡張子、ヘッダー、およびその他の属性に基づいて、ファイルに関する概要情報を1行で表示します。 これは、なじみのないファイルのグループを検索するためfindおよびxargsと共に使用する場合に非常に便利です。

 $ find | xargs file .: directory ./hanoi: Perl script, ASCII text executable ./.hanoi.swp: Vim swap file, version 7.3 ./factorial: Perl script, ASCII text executable ./bits.c: C source, ASCII text ./bits: ELF 32-bit LSB executable, Intel 80386, version ...
      
      





パターン検索



このメモを締めくくるために、テンプレートによる検索とBashブラケットの開示について詳しく調べることをお勧めします。 これは私の別々の記事の主題です。



上記のすべてが、プログラムを作成するときにUnixシェルに非常に強力なファイル管理ツールを提供します。



続行するには...



IDEとしてのUnix:はじめに

IDEとしてのUnix:ファイル

IDEとしてのUnix:テキストの操作

IDEとしてのUnix:コンパイル



All Articles