GNU/Linux >> Znalost Linux >  >> Linux

Přidání tail chování, kde enter přidá prázdné řádky na méně

Tohle ve skutečnosti není tail Chování uživatele -- je to terminál. Tail právě posílá proud výstupu do stdout, který jde do vašeho terminálu, a vy vkládáte prázdné řádky doprostřed tohoto výstupu stisknutím klávesy Enter. Samotný Tail ve skutečnosti od vás vůbec nepřijímá vstup. Můžete napsat, cokoli jiného chcete, a to se také zobrazí.

less , je však konzolová aplikace a přebírá vstup a zpracovává jej. Je to správa konzoly pomocí ovládacích sekvencí terminálu, což je způsob, jak můžete posouvat. Umožnění vkládání libovolných znaků do streamu by zkazilo zobrazení a stejně tak méně využívá váš vstup k ovládání programu.

Bohužel se zdá, že nemá jak vizuálně označit aktuální pozici. To však není tak hrozný požadavek na funkci, a méně dělá stále čas od času získávat nové funkce.


Našel jsem vaši otázku, když jsem pro sebe hledal stejnou odpověď.

Zklamán přijatou odpovědí jsem přišel s řešením. Není to ideální, ale umožňuje mi to označit svou pozici v protokolu, který sleduji, less , což je celá podstata.

Vytvořil jsem malý spustitelný skript (nazval jsem ho marklog ) s následujícím obsahem a vložte jej do cesty:

#!/bin/sh
echo >> $1
echo >> $1
echo >> $1
echo `date` ---------------------------------------------------------------------- >> $1
echo >> $1
echo >> $1

Samozřejmě to funguje pouze v případě, že máte přístup k zápisu do souboru protokolu – což může být v mnoha situacích překážkou. Vytvořil jsem také tuto verzi, kterou používám k zápisu do souborů protokolu, které nevlastním (ale ke kterým mám sudo přístup):

#!/bin/sh
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo `date` ------------------------------------------------------------------------- >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"

Tyto skripty poskytují přesně ten druh vizuální přestávky, kterou jsem hledal. Existují alespoň 3 způsoby, jak je můžete použít:

  1. V místě, kde byste normálně při použití tail -f několikrát stisknuli enter , místo toho spusťte marklog z jiného terminálu (s uvedením cesty k souboru protokolu jako argumentu).

  2. Použijte Ctrl Z pozastavit less takže skript můžete spustit ve stejném okně terminálu, ale když přepnete less (pomocí fg , samozřejmě), již nebude v režimu 'sledovat', takže budete muset stisknout Shift F znovu...

  3. Konečně – a to může být nejpohodlnější způsob, protože nemusíte zadávat cestu k souboru protokolu:Spustit marklog přímo z less zadáním !marklog % . Less nahradí aktuální název souboru za % . Nicméně less nebude reagovat na! když je v režimu 'následovat', takže budete muset stisknout Ctrl C pro ukončení režimu sledování nejprve spusťte !marklog % a poté Shift F znovu.

S metodou 3 také získáte další bonus z historie příkazů Lesse:Stačí stisknout ! a poté pomocí šipky nahoru vyberte nejnovější příkaz (pro mě je to vždy marklog ).

Doufám, že to někomu pomůže stejně jako už pomohlo mně.


Linux
  1. Debian – Kam mám vložit Sudo do tohoto příkazu?

  2. Rozdíl, kde jsou čáry většinou stejné, ale mimo pořadí?

  3. Ukončení ocasu -f po tisku N řádků?

  1. Simulace stisknutí klávesy ENTER ve skriptu bash

  2. Přidávání uživatelů do sudoers pomocí skriptu shellu

  3. Přidání znaků nového řádku do proměnných unixového shellu

  1. Existuje nějaký způsob, jak zachovat text předaný na hlavu, konec, méně atd., aby byl vybarven?

  2. Přidání řádku do souboru hosts, získání oprávnění odepřeno při použití sudo - Mac

  3. Použití ocasu ke sledování souboru bez zobrazení nejnovějších řádků