Následující jeden může být užitečný pro změnu výstupu:
ss -ltunp | column -t
Co se týče proč atd.
ss
, která je součástí iproute2 kolekce nástrojů v jádře Linuxu používá ioctl() požadavek na získání aktuální šířky terminálu.
Nicméně; celá šířka se použije pro «ostatní» pole a procesní pole se stlačí na další řádek.
Můžete to zobrazit například (pokud máte omezený s on terminál):
script ss.txt
ss -nlup4
exit
Poté rozšiřte okno terminálu a cat ss.txt
.
Důvod proč
ss -nulp4 | cat -A
«funguje» je to proto, že nástroj rozpozná, zda zapisuje do tty nebo ne:
if (isatty(STDOUT_FILENO)) {
}
Jak můžete vidět z předchozího řádku ve zdrojovém kódu, výchozí šířka je nastavena na 80. Pokud má tedy váš terminál řekněme 130 sloupců a vy:
ss -nulp4 | cat
rozpozná, že výstup není do tty (ale do roury) a ostatní pole jsou nacpaná do 80 sloupců, zatímco pole procesu se píše za těmito 80 sloupci. Ale protože váš terminál je širší pak 80 sloupců a má místo pro záznam procesu, zobrazí se na jednom řádku.
Totéž platí například pro:
ss -nulp4 > ss.txt
Pokud jde o to, jak «dosáhnout svého preferovaného formátování» jeden pravděpodobně nevhodný způsob je udělat něco ve směru (v závislosti na terminálu):
stty cols 100
ss -nlup4