GNU/Linux >> Znalost Linux >  >> Linux

Jak nainstalovat a používat příkaz Ack v Linuxu s příklady

Operační systém Linux umožňuje vyhledávat v adresářových strukturách i v adresářových souborech konkrétní shody textových řetězců. Běžným nástrojem, který nám pomáhá při dosahování těchto vyhledávání v adresáři, je grep (tisk globálního regulárního výrazu ) příkaz. Použití regulárních výrazů v grepu umožňuje zahájit vyhledávání libovolného vzoru řetězců směrem k odpovídajícímu textovému výstupu na příkazovém řádku.

[ Také by se vám mohlo líbit:Ripgrep – nejrychlejší nástroj pro vyhledávání příkazového řádku pro Linux ]

Nevýhody grep jsou ve své rychlosti a neflexibilních funkcích. Toto je místo ack nástroj převezme. Poskytuje rychlé vyhledávání, které se rozšíří na vyhledávání adresářů zdrojového kódu, a zároveň dává uživateli Linuxu flexibilitu vyloučení určitých výstupů z výsledků vyhledávání.

Jak nainstalovat Ack v Linuxu

Ack dokáže přijmout jakákoli platforma podporovaná Perlem vyhledávací nástroj. Nainstalujeme jej odkazem na jeho hlavní balíček, ack-grep .

$ sudo apt-get install ack-grep      [On Debian, Ubuntu and Mint]
$ sudo yum install ack-grep         [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo emerge -a sys-apps/ack-grep  [On Gentoo Linux]
$ sudo pacman -S ack-grep           [On Arch Linux]
$ sudo zypper install ack-grep      [On OpenSUSE]    

Potvrdit hledání v adresáři

Od ack je přisuzován orientaci na zdrojový kód, můžeme demonstrovat jeho schopnost vyhledávat řetězcové vzory prostřednictvím adresáře zdrojového kódu. Github je renomovaným zdrojem pro tisíce adresářů zdrojového kódu. Ideálním adresářem zdrojového kódu projektu pro tento článek je projekt neovim.

Nainstalujte Git v Linuxu

$ sudo apt-get install git     [On Debian, Ubuntu and Mint]
$ sudo yum install git         [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo emerge -a sys-apps/git  [On Gentoo Linux]
$ sudo pacman -S git           [On Arch Linux]
$ sudo zypper install git      [On OpenSUSE]    

Klonovat projekt Neovim

Mnoho různých typů souborů v tomto projektu textového editoru neovim je nezbytných pro našeho průvodce článkem.

$ git clone https://github.com/neovim/neovim.git

Přejděte na neovim klonovaný adresář, abyste mohli spustit náš tutoriál.

$ cd neovim && ls

Uvedený adresář nejvyšší úrovně odhaluje markdown soubory (.md) , textové soubory (.txt) a soubor YAML.

Implementace jednoduchých příkazů Ack Search

Protože většina vyhledávacích dotazů z okna linuxového terminálu vede k nekontrolovatelnému posouvání kvůli nekonečným výstupům, můžeme tyto výsledky vyhledávání převést na „méně ” pro instance výsledků, které přesahují běžnou velikost okna terminálu.

$ echo '--pager=less -RFX' >> ~/.ackrc

Výše uvedené potvrzení konfigurační příkaz inteligentně zpracovává přetékající výstupy výsledků.

Zjištění celkového počtu souborů v adresáři

Tento první příklad příkazu nám pomáhá rozlišit logickou účinnost ack hledat z grep Vyhledávání. Prostřednictvím grep , můžeme zjistit celkový počet souborů na klonovaném neovim projekt pomocí následujícího příkazu:

$ find . | wc -l

Potvrdit bude počítat pouze soubory, které považuje za logicky relevantní, a proto bude jeho výstup jiný.

$ ack -f | wc -l

Výše uvedených 7 % (2984-2772 ) ignorované soubory jsou ignorovány všemi akcemi vyhledávací dotazy.

Nalezení specifické varianty vzoru řetězce z adresáře

Zkusme se zeptat na okamžité výskyty vzoru řetězce „omezit “.

$ ack restrict

Výše uvedené výstupy ukazují na přesná čísla řádků v souborech obsahujících shodu se vzorem řetězce. Výsledkem výstupního vzoru obrazovky je „omezit “ jsou také části slov jako omezeno a omezení .

Nalezení konkrétního slova se vzorem řetězce z adresáře

Pokud vás nezajímá, aby se výsledek vyhledávání objevil jako varianta, ale jako celé slovo, budete muset vzory vyhledávacích řetězců implementovat jinak.

$ ack -w restrict 

Jak můžete vidět, vzor vyhledávacího řetězce hledá „omezit ” jako úplné slovo a není součástí žádného jiného výskytu slova.

Nalezení specifického vzoru řetězce z konkrétního typu souboru

Možná chcete, aby vaše vyhledávání vzorů řetězců cílilo na konkrétní soubor, jako je Python (--python) soubor, c (--c) soubor, vim (--vim) soubor nebo jakýkoli jiný typ souboru, váš dotaz na vzor řetězce by měl odkazovat na typ souboru, který hledáte.

$ ack -w --python restrict

Výše uvedený výstup příkazu ukazuje na výskyt slova „omezit “ na řádku 110 uvnitř souboru Python „src/clint.py “.

Zjištění celkového výskytu vyhledávání vzoru řetězců v každém souboru

Od klonovaného neovim adresář, který používáme, má různé typy souborů, tento příkaz počítá výskyt konkrétního hledání vzoru řetězce (omezit ) v každém z těchto typů souborů.

$ ack -c restrict  

Řízení výstupu vyhledávání vzoru řetězce

Výše uvedený výstup příkazu obsahuje soubory s nulovými shodami vzoru řetězců pro zadaný vstup řetězce. Abyste se jim vyhnuli, následující příkaz vytiskne celkové řádky souboru, které odpovídají zadanému zadání vzoru řetězce.

$ ack -ch restrict

Výše uvedený výstup můžeme zmenšit a zpřesnit tím, že požádáme, aby výstup vyhledávání zohledňoval pouze celá slova a nikoli varianty slov.

$ ack -ch -w restrict 

Můžeme také zúžit výše uvedený výsledek příkazu tak, aby zohlednil pouze soubory Pythonu:

$ ack -ch -w --python restrict

Můžeme také použít čas příkaz pro sledování rychlosti našeho vyhledávání:

$ time ack -ch restrict

Tím, že budeme konkrétnější v kritériích vyhledávacího vzoru, získáme rychlejší výstup, jak je ukázáno níže, ve srovnání s výše uvedenými výsledky.

$ time ack -ch -w --python restrict

Mohli bychom také vytisknout skutečné názvy souborů, které odpovídají vyhledávacímu vzoru.

$ ack -f --python

Vzor vyhledávání ack by se také mohl zaměřit na konvenci pojmenování souboru. Jakékoli C soubor s „log ” lze spojit s následujícím příkazem:

$ ack -g log --cc

Potvrzení vyhledávací nástroj je velmi flexibilní, když se s ním zachází v adresáři zdrojového kódu. Stále můžete přijmout jeho použití pro soubory ve vašem prostředí Linuxu. Je rozšiřitelný a rychlý. Použijte man ack k nalezení dalších možností pro prozkoumání tohoto rychlého a lehkého nástroje.


Linux
  1. Jak používat Linux Hexdump Command s praktickými příklady

  2. Jak používat Pipes a Named Pipes v Linuxu (s příklady)

  3. Jak používat Linux Shutdown and Reboot Command s příklady

  1. Jak používat příkaz IP v Linuxu s příklady

  2. Příkaz SCP v Linuxu:Jak jej používat, s příklady

  3. Jak používat příkaz Rmmod v systému Linux s příklady

  1. Jak používat Linux Cat Command (s příklady)

  2. Jak používat příkaz spánku Linux s příklady

  3. Jak používat příkaz who v Linuxu s příklady