Linuxオペレーティングシステムでは、ディレクトリ構造とディレクトリファイルの両方で特定のテキスト文字列の一致を検索できます。これらのディレクトリ検索を実行するのに役立つ一般的なツールは、 grepです。 (グローバル正規表現の印刷 ) 指図。 grepで正規表現を使用すると、コマンドラインで一致するテキスト出力に向けて文字列パターン検索を開始できます。
[次のこともお勧めします:Ripgrep –Linux用の最速のコマンドライン検索ツール]
ただし、 grepの欠点 その速度と柔軟性のない機能にあります。ここがack ツールが引き継ぎます。 Linuxユーザーに検索結果から特定の出力を除外する柔軟性を提供しながら、ソースコードディレクトリ検索にまで及ぶ迅速な検索を提供します。
LinuxにAckをインストールする方法
Perlがサポートするプラットフォームならどれでもackに対応できます 検索ツール。メインパッケージであるack-grepを参照してインストールします。 。
$ sudo apt-get install ack-grep [ Debian、Ubuntu、Mint ] $ sudo yum install ack-grep [ RHEL / CentOS/Fedoraで およびRockyLinux / AlmaLinux ] $ sudo Emerge -a sys-apps / ack-grep [GentooLinuxの場合 ] $ sudo pacman -S ack-grep [ Arch Linux ] $ sudo zypper install ack-grep [ OpenSUSEで ]
ディレクトリ検索を確認する
ack以降 ソースコード指向であるとされているので、ソースコードディレクトリを介してその文字列パターン検索の腕前を示すことができます。 Github は、何千ものソースコードディレクトリの有名なリソースです。この記事ガイドの理想的なプロジェクトソースコードディレクトリは、neovimプロジェクトです。
LinuxにGitをインストールする
$ sudo apt-get install git [ Debian、Ubuntu、Mint ] $ sudo yum install git [ RHEL / CentOS/Fedoraで およびRockyLinux / AlmaLinux ] $ sudo Emerge -a sys-apps / git [GentooLinuxの場合 ] $ sudo pacman -S git [ Arch Linux ] $ sudo zypper install git [ OpenSUSEで ]
クローンNeovimプロジェクト
このneovimテキストエディタプロジェクトのさまざまなファイルタイプは、記事ガイドに必要です。
$ git clone https://github.com/neovim/neovim.git
neovimに移動します チュートリアルを開始するためのクローンディレクトリ。
$ cd neovim &&ls
リストされたトップレベルディレクトリは、マークダウンファイル(.md)
を公開します 、テキストファイル(.txt)
、およびYAMLファイル。
単純なAck検索コマンドの実装
Linuxターミナルウィンドウからのほとんどの検索クエリは、出力が無限であるために制御できないスクロールにつながるため、これらの検索結果を「少ない」にパイプすることができます。 」は、通常のターミナルウィンドウサイズを超える結果インスタンスの場合です。
$ echo'--pager =less -RFX'>>〜/ .ackrc
上記のack 構成コマンドは、オーバーフローした結果出力をインテリジェントに処理します。
ディレクトリ内のファイルの総数を見つける
この最初のコマンド例は、 ackの論理効率を区別するのに役立ちます grepから検索 探す。 grepを介して 、クローンされた neovim上のファイルの総数を確認できます 次のコマンドで投影します:
$find。 | wc -l </ pre>確認 論理的に関連があると思われるファイルのみをカウントするため、出力は異なります。
$ ack -f | wc -l </ pre>上記の7% ( 2984-2772 )無視されたファイルはすべての ackから無視されます 検索クエリ。
ディレクトリから特定の文字列パターンのバリエーションを見つける
文字列パターン「restrict」の瞬間的な出現をクエリしてみましょう 」。
$ack制限上記の出力は、文字列パターンマッチを含むファイルの正確な行番号を示しています。出力された画面パターンは「制限」になります 」は、制限付きなどの単語の一部でもあります および制限 。
ディレクトリから特定の文字列パターンの単語を検索する
バリエーションとしてではなく完全な単語として発生する検索結果に関心がない場合は、検索文字列パターンを別の方法で実装する必要があります。
$ ack -w limitご覧のとおり、検索文字列パターンは「制限」を検索します 」は完全な単語であり、他の単語の一部ではありません。
特定のファイルタイプから特定の文字列パターンを見つける
文字列パターンの検索で、 Pythonなどの特定のファイルをターゲットにする場合があります。
(--python)
ファイル、c(--c)
ファイル、vim(--vim)
ファイルまたはその他のファイルタイプの場合、文字列パターンクエリは目的のファイルタイプを参照する必要があります。$ ack -w--pythonrestrict上記のコマンド出力は、「制限」という単語の出現を示しています。 」の行110 Pythonファイル「src/ clint.py 」。
各ファイルでの文字列パターン検索の合計発生数の検索
クローンされたneovim以降 使用しているディレクトリにはさまざまなファイルタイプがあります。このコマンドは、特定の文字列パターン検索の発生をカウントします(制限 )これらの各ファイルタイプで。
$ ack -c limit文字列パターン検索の出力の制御
上記のコマンド出力には、指定された文字列入力に対して文字列パターンが一致しないファイルが含まれています。それらを回避するために、次のコマンドは、指定された文字列パターン入力に一致するファイル行の合計を出力します。
$ ack -ch limit検索出力に完全な単語のみを考慮し、単語の変形は考慮しないように要求することで、上記の出力をより小さく正確にすることができます。
$ ack -ch -w limit上記のコマンド結果を絞り込んで、Pythonファイルのみを考慮することもできます。
$ ack -ch -w--pythonrestrict時間も使用できます 検索の速度を監視するコマンド:
$ time ack -ch limit検索パターンの基準をより具体的にすることで、上記の結果と比較して、以下に示すように、より高速な出力が得られます。
$ time ack -ch -w--pythonrestrict検索パターンに一致する実際のファイル名を出力することもできます。
$ ack -f --pythonack検索パターンは、ファイルの命名規則をターゲットにすることもできます。 C 「ログ」を含むファイル 」は次のコマンドと一致させることができます:
$ ack -g log --ccack 検索ツールは、ソースコードディレクトリで処理する場合に非常に柔軟性があります。 Linux環境内のファイルに引き続きその使用を採用できます。それは拡張可能で高速です。
man ack
を使用する この高速で軽量なツールを探索するためのその他のオプションを見つけるためのコマンド。
Linux