GNU/Linux >> Znalost Linux >  >> Linux

Jak vyčistit výstup příkazu linux 'script'

Pokud si chcete soubor prohlédnout, můžete výstup odeslat přes col -bp; to interpretuje řídicí znaky. Pak můžete procházet méně potrubím, pokud chcete.

col -bp typescript | less -R

Na některých systémech col by nepřijal argument názvu souboru, použijte místo toho tuto syntaxi:

col -bp <typescript | less -R

cat typescript | perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' | col -b > typescript-processed

zde je nějaká interpretace vstupu řetězce do perl :

  • s/pattern//g znamená provést substituci jako celek (g volba znamená udělat celou věc namísto zastavení na prvním náhradním) vstupním řetězci

zde je nějaká interpretace vzoru regulárního výrazu:

  • \e odpovídat speciálnímu „únikovému“ řídicímu znaku (ASCII 0x1A)
  • ( a ) jsou začátkem a koncem skupiny
  • | znamená, že skupina může odpovídat jednomu z N vzorů. kde je N vzorů
    • [^\[\]] nebo
    • \[.*?[a-zA-Z] nebo
    • \].*?\a
  • [^\[\]] znamená
    • odpovídají sadě znaků NOT, kde znaky not jsou [ a ]
  • \[.*?[a-zA-Z] znamená
    • přiřaďte řetězec začínající [ pak proveďte nezištný .*? až do prvního alfa znaku
  • \].*?\a znamená
    • odpovídají řetězci, který začíná ] pak proveďte nezištnou .*? dokud nenarazíte na speciální ovládací znak zvaný „znak výstrahy (zvonku)“

Pro velké množství script výstup, hackoval bych perlový skript iterativně. Jinak upravujte ručně pomocí dobrého editoru.

Je nepravděpodobné, že by existovala automatizovaná metoda odstraňování řídicích znaků z script výstup způsobem, který reprodukuje to, co bylo zobrazeno na obrazovce v určitých důležitých okamžicích (například když na to hostitel čekal poprvé charakter nějakého uživatelského vstupu).

Obrazovka může být například prázdná kromě Andrew $ , pokud jste pak zadali rm /* a dvanáctkrát stisknete backspace (mnohem více, než je potřeba), to, co se zobrazí na obrazovce na konci, závisí na tom, jaký shell byl spuštěn, jaká je vaše aktuální stty nastavení jsou (která můžete změnit v průběhu relace) a pravděpodobně také některé další faktory.

Výše uvedené platí pro jakoukoli automatizovanou metodu kontinuálního zachycování vstupu a výstupu. Hlavní alternativou je pořizování „snímků obrazovky“ nebo vyjmutí a vložení obrazovky ve vhodnou dobu během relace (což dělám pro uživatelské příručky, poznámky pro denní deník atd.).


Linux
  1. Jak uložit výstup příkazu do souboru v Linuxu

  2. Jak používat Su Command v Linuxu

  3. Jak vytvořit skript příkazu Linux

  1. Jak zachytit terminálové relace a výstup pomocí příkazu skriptu Linux

  2. Jak provést příkaz před přihlášením uživatele v systému Linux?

  3. Jak zjistit, zda je výstup příkazového nebo shellového skriptu Stdout nebo Stderr?

  1. Jak přiřadit výstup příkazu Linux k proměnné

  2. Jak přejmenovat soubory v Linuxu

  3. Jak vytisknout výstup příkazu Linuxu do souboru?