Nedávno jsem četl článek Scotta Nesbitta „Using less to view text files on the Linux command line“ a inspiroval mě ke sdílení dalších tipů a triků, které používám s less
.
MÉNĚ env var
Pokud máte proměnnou prostředí LESS
definované (např. ve vašem .bashrc
), less
zachází s ním jako se seznamem možností, jako by byl předán na příkazovém řádku.
Používám toto:
LESS='-C -M -I -j 10 -# 4'
To znamená:
-C
– Zrychlete přetisky na celou obrazovku tím, že nebudete posouvat zespodu.-M
– Zobrazit další informace z posledního (stavového) řádku. Zobrazované informace můžete upravit pomocí-PM
, ale obvykle se neobtěžuji.-I
– Ignorujte při vyhledávání velká/malá písmena.-j 10
– Zobrazit výsledky hledání na řádku 10 terminálu namísto prvního řádku. Tímto způsobem máte 10 řádků kontextu pokaždé, když stiskneten
(neboN
) pro skok na další (nebo předchozí) zápas.-# 4
– Stisknutím šipky doprava nebo doleva přeskočíte o čtyři znaky doprava nebo doleva. Výchozí nastavení je přeskočit polovinu obrazovky, což mi obvykle připadá příliš. Obecně řečeno,less
se zdá být (alespoň částečně) optimalizován pro prostředí, ve kterém byl původně vyvinut, s pomalými modemy a připojením k internetu s nízkou šířkou pásma, kdy dávalo smysl přeskočit půl obrazovky.
Var. prostředí PAGER
Mnoho programů zobrazuje informace pomocí příkazu nastaveného v PAGER
proměnná prostředí (pokud je nastavena). Můžete tedy nastavit PAGER=less
ve vašem .bashrc
a nechte váš program běžet less
. Zkontrolujte manuálovou stránku environ(7) (man 7 environ
) pro další takové proměnné.
-S
Programování a vývoj
- Blog vývojářů Red Hat
- Programování cheatů
- Vyzkoušejte zdarma:Předplatné Red Hat Learning
- eKniha:Úvod do programování pomocí Bash
- Bash Shell Scripting Cheat Sheet
- Elektronická kniha:Modernizace podnikové Java
Možnost příkazového řádku -S
říká less
k sekání dlouhých čar místo jejich balení. Zřídka to potřebuji, pokud (a dokud) nezačnu prohlížet soubor. Naštěstí můžete všechny možnosti příkazového řádku zadat do less
jako by to byly příkazy z klávesnice. Takže pokud chci sekat dlouhé řádky, když už jsem v souboru, stačí napsat -S
.
Zde je příklad, který často používám:
su - postgres
export PAGER=less # Because I didn't bother editing postgres' .bashrc on all the machines I use it on
psql
Někdy, když si později prohlížím výstup SELECT
příkaz s velmi širokým výstupem, píšu -S
takže bude pěkně naformátovaný. Pokud po stisknutí šipky vpravo vyskočí příliš daleko, abych viděl více (protože jsem nenastavil -#
), mohu zadat -#8
, pak každé stisknutí šipky doprava posune o osm znaků doprava.
Někdy po zadání -S
příliš mnohokrát ukončím psql a spustím jej znovu po zadání:
export LESS=-S
F
Příkaz F
dělá less
fungovat jako tail -f
—před zobrazením souboru čeká na přidání dalších dat. Má to jednu výhodu oproti tail -f
je, že zvýrazňování shod vyhledávání stále funguje. Můžete tedy zadat less /var/log/logfile
, vyhledejte něco – což zvýrazní všechny jeho výskyty (pokud jste nepoužili -g
) – a poté stiskněte F
. Když je do protokolu zapsáno více dat, less
zobrazí a zvýrazní nové shody.
Po stisknutí F
, můžete stisknout Ctrl+C
zabránit mu v hledání nových dat (nezabije ho to); vrátit se do souboru a zobrazit starší věci, hledat další věci atd.; a poté stiskněte F
znovu, abyste se podívali na další nová data.
Vyhledávání
Vyhledávání používá knihovnu regulárních výrazů systému, což obvykle znamená, že můžete použít rozšířené regulární výrazy. Zejména hledání one|two|three
najde a zvýrazní všechny výskyty jednoho, dvou nebo tří.
Dalším vzorem, který často používám, zejména u širokých čar loga (např. těch, které se klenou přes více než jeden koncový řádek), je .*something.*
, který zvýrazní celý řádek. Díky tomuto vzoru je mnohem snazší vidět, kde čára začíná a končí. Také je kombinuji, jako například:.*one thing.*|.*another thing.*
, nebo key: .*|.*marker.*
zobrazíte obsah key
(např. v souboru protokolu s výpisem nějakého slovníku/hash) a zvýrazněte příslušné řádky značek (abych měl kontext), nebo dokonce, pokud vím, že je hodnota obklopena uvozovkami:
key: '[^']*'|.*marker.*
less
udržuje historii vašich hledaných položek a ukládá je na disk pro budoucí vyvolání. Když stisknete /
(nebo ?
), můžete procházet touto historií pomocí šipky Nahoru nebo Dolů (stejně jako provádět základní úpravy čar).
Při procházení less
jsem narazil na to, co se zdá být velmi užitečnou funkcí manuálová stránka při psaní tohoto článku:přeskakování nezajímavých řádků pomocí &!pattern
. Například při hledání něčeho v /var/log/messages
, procházel jsem tímto seznamem příkazů:
cat /var/log/messages | egrep -v 'systemd: Started Session' | less
cat /var/log/messages | egrep -v 'systemd: Started Session|systemd: Starting Session' | less
cat /var/log/messages | egrep -v 'systemd: Started Session|systemd: Starting Session|User Slice' | less
cat /var/log/messages | egrep -v 'systemd: Started Session|systemd: Starting Session|User Slice|dbus' | less
cat /var/log/messages | egrep -v 'systemd: Started Session|systemd: Starting Session|User Slice|dbus|PackageKit Daemon' | less
Ale teď už vím, jak udělat to samé v rámci less
. Mohu například napsat &!systemd: Started Session
, pak se rozhodnu, že se chci zbavit systemd: Starting Session
, takže jej přidám zadáním &!
a pomocí šipky nahoru získáte předchozí vyhledávání z historie. Poté napíšu |systemd: Starting Session
a stiskněte Enter
, pokračuji v přidávání dalších položek stejným způsobem, dokud nevyfiltruji tolik, abych viděl zajímavější věci.
=
Příkaz =
zobrazuje více informací o souboru a umístění, dokonce více než -M
. Pokud je soubor velmi dlouhý a počítá se =
trvá příliš dlouho, můžete stisknout Ctrl+C
a přestane to zkoušet.
Pokud obsah, který si prohlížíte, pochází z kanálu, nikoli ze souboru, =
(a -M
) neukáže to, co nezná, včetně počtu řádků a bajtů v souboru. Chcete-li tato data zobrazit, pokud znáte tento command
skončí rychle, můžete přeskočit na konec pomocí G
a poté less
začne zobrazovat tyto informace.
Pokud stisknete G
a zápis příkazu do roury trvá déle, než se očekávalo, můžete stisknout Ctrl+C
a příkaz bude zabit. Stiskněte Ctrl+C
zabije to, i když jste nestiskli G
, takže dávejte pozor, abyste nestiskli Ctrl+C
náhodou, pokud to nehodláte zabít. Z tohoto důvodu, pokud příkaz něco dělá (to znamená, že nezobrazuje pouze informace), je obvykle bezpečnější zapsat jeho výstup do souboru a zobrazit soubor v samostatném terminálu namísto použití roury.
Proč potřebujete méně
less
je velmi výkonný program a na rozdíl od novějších uchazečů v tomto prostoru, jako je most
a moar
, pravděpodobně jej najdete téměř na všech systémech, které používáte, stejně jako vi
. Takže i když používáte prohlížeče nebo editory GUI, vyplatí se investovat nějaký čas a projít si less
manuálovou stránku, alespoň abyste získali představu o tom, co je k dispozici. Tímto způsobem, když potřebujete udělat něco, co by mohlo být pokryto stávajícími funkcemi, budete vědět, že máte hledat na manuálové stránce nebo na internetu, abyste našli to, co potřebujete.
Pro více informací navštivte domovskou stránku méně. Stránka má pěkné FAQ s dalšími tipy a triky.