Seguerne uno potrebbe essere utile per modificare l'output:
ss -ltunp | column -t
Quanto al perché ecc.
ss
, parte di iproute2 raccolta di utilità nel kernel Linux, utilizza un ioctl() richiesta per ottenere la larghezza corrente del terminale.
Tuttavia; l'intera larghezza viene utilizzata per «altro» campi e il campo del processo vengono inseriti nella riga successiva.
Puoi visualizzarlo ad esempio (quando hai un limitato with sul terminale):
script ss.txt
ss -nlup4
exit
Quindi allarga la finestra del tuo terminale e cat ss.txt
.
Il motivo perché
ss -nulp4 | cat -A
«funziona» è perché l'utilità riconosce se scrive su un tty o no:
if (isatty(STDOUT_FILENO)) {
}
Come puoi vedere dalla riga precedente nel codice sorgente, la larghezza predefinita è impostata su 80. Quindi, se il tuo terminale è a 130 colonne e tu fai:
ss -nulp4 | cat
riconosce che l'output non è verso una tty (ma verso una pipe) e l'altro i campi sono stipati in 80 colonne, mentre il campo di elaborazione è scritto dopo queste 80 colonne. Ma poiché il tuo terminale è più ampio quindi 80 colonne e ha spazio per la voce del processo viene visualizzato in una riga.
Lo stesso vale per esempio:
ss -nulp4 > ss.txt
Quanto a come «ottenere la mia formattazione preferita» un modo probabilmente non adatto è fare qualcosa nella direzione di (a seconda del terminale):
stty cols 100
ss -nlup4