Tri veci pri práci s adresármi v termináli, ktoré robíte zle

2019/01/08

Trojica ls, find a grep sa v linuxovom termináli používa každý deň. Nie vždy sú však pohodlné, veď poniektoré nástroje majú azda aj 50 rokov. Ukážme si moderné alternatívy pre nové milénium!

Všetky nástroje fungujú krížom cez linuxové distribúcie i na MacOS.

exa - výpis adresára pre moderných ľudí

brew install exa

Príkaz exa

Príkaz exa je ako ls, ibaže je

V jednoduchých prípadoch sa exa tvári ako ls:

> exa
1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt  10.txt

Okrem toho podporuje klasické kombinácie z ls:

> exa -la
drwxr-xr-x  - novotnyr  7 Jan 16:17 .git
.rw-r--r-- 11 novotnyr  7 Jan 17:17 1.txt
.rw-r--r--  0 novotnyr  7 Jan 16:15 2.txt
.rw-r--r--  0 novotnyr  7 Jan 16:15 3.txt
.rw-r--r-- 32 novotnyr  7 Jan 17:17 4.txt

Okrem toho podporuje exa aj špeci stĺpček pre git:

> exa -l --git
.rw-r--r-- 11 novotnyr  7 Jan 17:17 -M 1.txt
.rw-r--r--  0 novotnyr  7 Jan 16:15 -- 2.txt
.rw-r--r--  0 novotnyr  7 Jan 16:15 -- 3.txt
.rw-r--r-- 32 novotnyr  7 Jan 17:17 -M 4.txt

Vidíme, že súbory 1.txt a 4.txt sú zmodifikované, ale nekomitnuté.

Stromy

exa podporuje aj stromový výpis:

> exa --tree
.
├── 1.txt
├── 2.txt
├── 3.txt
├── 4.txt
└── children
   ├── one.txt
   └── two.twt

Ďalšie vlastnosti

K dispozícíi sú estetické vlastnosti:

> exa -lag --git -h --time-style=full-iso
Permissions Size User     Group Date Modified                       Git Name
drwxr-xr-x     - novotnyr wheel 2019-01-07 16:17:31.996454614 +0100  -- .git
.rw-r--r--    11 novotnyr wheel 2019-01-07 17:17:25.458001899 +0100  -M 1.txt
.rw-r--r--     0 novotnyr wheel 2019-01-07 16:15:36.535003675 +0100  -- 2.txt
.rw-r--r--     0 novotnyr wheel 2019-01-07 16:15:36.536635284 +0100  -- 3.txt
.rw-r--r--    32 novotnyr wheel 2019-01-07 17:17:34.563047197 +0100  -M 4.txt
drwxr-xr-x     - novotnyr wheel 2019-01-07 17:27:39.019907496 +0100  -N children

Okrem toho môžeme filtrovať a triediť podľa ľubovoľnej vlastnosti súboru (napr. podľa prípony), či prezerať skryté atribúty súborov (xattr).

fd - vyhľadávanie súborov pre 21. storočie

brew install fd

fd je find, ale

Príkaz fd

fd pre všetko

Jednoduchý fd vypíše celý podstrom adresárov a súborov:

> fd
1.txt
2.txt
3.txt
4.txt
children
children/one.txt
children/two.txt
children/1.txt
children/2.txt

fd a vyhľadávanie

fd` automaticky hľadá podľa regulárneho výrazu:

> fd 1.txt
1.txt
children/1.txt

Ba dokonca podľa poriadného regulárneho výrazu:

> fd '^[12]'
1.txt
2.txt
children/1.txt
children/2.txt

Vyhľadávanie:

Obľúbené parametre sú:

fd a spracovanie súborov

find/exec a find / xargs sú zbytočné!

Spočítanie riadkov vo všetkých texťákoch je jednoduché:

fd -e txt -x wc -l

fd automaticky spustí wc pre každý nájdený súbor. Cestu pre každý súbor použije ako argument spúšťaného príkazu. Mňam!

Spracovávanie beží automaticky na viacerých vláknach, presne ako v GNU Parallel!

Prevod súborov na HTML cez pandoc?

fd -e txt -x pandoc {} -o {.}.html

Nájdené súbory sa ocitnú v špeciálnych premenných:

ag — hľadanie v súboroch rýchlosťou blesku

brew install the_silver_searcher

ag vyhľadáva v obsahoch súborov. Oproti find / exec / grep má:

Príkaz ag

> ag hello
4.txt
1:Chapter 4: Hello World Revisited

1.txt
1:Hello World

hello.markdown
3:    echo hello-world

ag hľadal a našiel tri výskyty reťazca hello a všetky farebne zvýraznil! Vyhľadávanie automaticky zapína, či vypína VEĽKÉ a malé písmená a podporuje regulárne výrazy:

Hľadanie na začiatku riadku?

ag '^hello'

Vyhľadávať sa dá aj v konkrétnom adresári:

ag hello ./children

Podpora existuje aj pre vyhľadávanie súborov, ktoré obsahujú reťazec a namiesto zvýrazneného obsahu stačí vypísať ich názvy:

ag -l hello

ag podporuje aj vyhľadávanie v sadách súborov! Hľadanie v markdownoch?

ag hello --markdown
>> Home