Come produrre output costante in una finestra Terminale?


5

Come quando lo fai brew install wgeto mysqld restartvoglio che alcune righe di informazioni scorrano costantemente attraverso la mia finestra del terminale. C'è forse qualcosa che posso monitorare o qualsiasi flusso di informazioni in cui posso saltare? È forse possibile guardare i processi di monitoraggio delle attività nel terminale?

Perché dovrei volerlo? Perché sembra fantastico quando hai quel codice simile a Matrix in esecuzione sul tuo monitor. E potrei averne bisogno per alcune scene di film domestici.


Matrix-like (aka top down) o simile a brew (in orizzontale) sono due cose diverse, cosa stai cercando esattamente? E hai già chiesto una risposta al potente Google?
Nohillside

Abbastanza diverso, hai ragione! Ora che l'ho rivisto, Matrix-like sembra molto più un giocattolo o uno screensaver che uno strumento produttivo in esecuzione. In stile homebrew sarebbe molto meglio. Ho trovato alcuni tutorial per bambini su YouTube su come far correre numeri casuali attraverso il terminale ma non sembra molto professionale.
leymannx,

Scarica il codice sorgente di un programma importante e compilarlo nel tuo terminale, che "sembrerebbe" professionale , qualsiasi altra cosa è praticamente solo rumore a meno che non sia utile come guardare alcuni registri (come suggerisce @Matteo). Naturalmente, la compilazione richiede anche risorse importanti.
nerdwaller,


Risposte:


7

Trarre idee da questo unix.stackexchange.com Domande e risposte sulla generazione di output terminali in stile "hollywood" .

Il tipo lento

Questo script produce la digitazione ritardata come l'effetto che vedi nei film. Dove il computer stampa le cose nel terminale a un ritmo davvero orribile e lento.

Salvare quanto segue in un file denominato hollywood:

#!/bin/bash

while IFS= read -r line; do
    length="${#line}"
    bol=1
    for (( offset = 0 ; offset < length ; offset++ )); do
        char="${line:offset:1}"
        printf '%s' "$char"
        if (( bol )) && [[ "$char" == " " ]]; then
            continue
        fi
        bol=0
        sleep 0.05
    done

    if (( length == 0 )); then
        sleep 0.$(( RANDOM % 3 + 2 ))
    else
        sleep 0.$(( RANDOM % 7 + 3 ))
    fi

    printf '\n'
done

Impostare le autorizzazioni di esecuzione sul file hollywood:

chmod +x hollywood

E poi reindirizza l'output da dmesgper dargli un grosso pezzo di testo dall'aspetto sgargiante da stampare lentamente sullo schermo:

dmesg | hollywood

The Hex Dump

Questo scarica i dati esadecimali sullo schermo. Sembra impressionante ma è in gran parte incomprensibile per le masse.

hexdump -C /dev/urandom | GREP_COLOR='1;32' grep --color=auto 'ca fe'

La matrice

Numeri. Numeri dappertutto.

LC_CTYPE=C tr -c "[:digit:]" " " < /dev/urandom | dd cbs=$COLUMNS conv=unblock | GREP_COLOR="1;32" grep --color "[^ ]"

Sfortunatamente, con quello non c'è un buon modo per controllare la velocità.

Esiste una versione migliore di questa vista disponibile Homebrew chiamata cmatrix . Puoi installarlo ed eseguirlo con:

brew install cmatrix
cmatrix

Ottima soluzione Tuttavia, la linea Hex Dump dovrebbe terminare ". Ho provato a modificarlo ma Stackexchange si aspetta che vengano modificati almeno 6 caratteri. Perché? —Purtroppo "tr -c" [: digit:] "" "</ dev / urandom" produce un errore "tr: ​​sequenza di byte illegali" per me su OS X 10.11.6.
Alex Ixeras,

@AlexIxeras buona cattura. fisso.
Ian C.

Grazie. Qualche idea sul perché "tr -c" [: digit:] "" "</ dev / urandom" genera un errore "tr: ​​sequenza di byte illegali"?
Alex Ixeras,

@AlexIxeras ah, sì. /dev/urandomsta emettendo caratteri non ASCII. Ho corretto la riga di esempio, quindi trignora solo i caratteri non ASCII e non mi lamento.
Ian C.

5

Se hai alcuni file in crescita, puoi usarli tail -f. Per esempio

 $ tail -f /var/log/system.log

Esistono diversi strumenti terminali simili al monitor delle attività, ad esempio top (fornito con OS X) e htop (dovrai installarlo con MacPorts o Homebrew).

È inoltre possibile scaricare i sorgenti di un pacchetto software di grandi dimensioni (ad esempio, gcc, OpenOffice) e quindi compilarlo. Questo di solito genererà un sacco di output sulla console.

Potresti anche generare enormi elenchi di directory

$ ls -lRt

oppure find(la seconda ritarderà ogni riga di un secondo)

$ find .
$ find . -print -exec sleep 1 \;

topè abbastanza carino, alcuni personaggi cambiano costantemente. Ma non ha righe che corrono sullo schermo. Scaricando le fonti, trovo che siano troppi dati solo per divertimento.
leymannx,

1
Combina a cat /var/log/system.logcon una pipe allo script di tipo lento qui sotto e otterrai un flusso piacevole e continuo di output Terminale.
Ian C.

3

Il matrix command:

od -c /dev/random

Leggi attentamente, in un determinato momento vedrai la chiave segreta.


2

Qualcosa di simile a

while sleep 1; do
    t=$(( RANDOM % 80 ))
    for ((i=0; i < $t; i++)); do
        echo -n '*'
        sleep 1
    done
    echo
done

potrebbe fare il trucco. Modifica la lunghezza dei posti letto per velocità diverse e sostituisci *con quello che desideri (anche $(( RANDOM % 10 ))per numeri diversi).


0

Puoi provare tcpdumpnel Terminale. Elenca le connessioni che il tuo computer stabilisce tramite le interfacce di rete attive. Quando si svolgono attività di rete, verranno visualizzati i dati in esecuzione sullo schermo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.