Skip to content

Instantly share code, notes, and snippets.

@khakimov
Created August 31, 2012 19:49
Show Gist options
  • Select an option

  • Save khakimov/3558086 to your computer and use it in GitHub Desktop.

Select an option

Save khakimov/3558086 to your computer and use it in GitHub Desktop.
Matrix Effect in you terminal
echo -e "\e[1;40m" ; clear ; while :; do echo $LINES $COLUMNS $(( $RANDOM % $COLUMNS)) $(( $RANDOM % 72 )) ;sleep 0.05; done|awk '{ letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%^&*()"; c=$4; letter=substr(letters,c,1);a[$3]=0;for (x in a) {o=a[x];a[x]=a[x]+1; printf "\033[%s;%sH\033[2;32m%s",o,x,letter; printf "\033[%s;%sH\033[1;37m%s\033[0;0H",a[x],x,letter;if (a[x] >= $1) { a[x]=0; } }}'
@khakimov
Copy link
Copy Markdown
Author

like this

@e-fu
Copy link
Copy Markdown

e-fu commented Apr 19, 2014

nice!

@bqbtoan
Copy link
Copy Markdown

bqbtoan commented May 29, 2014

+1

@breim
Copy link
Copy Markdown

breim commented Jun 20, 2014

+1

@jezstephens
Copy link
Copy Markdown

Cool :)

Here's a deobfuscated version for the curious: https://gist.github.com/jezstephens/c34b3b803928a22631df

@c4po187
Copy link
Copy Markdown

c4po187 commented Jul 11, 2016

Nifty 👍

@JohnathonSpies
Copy link
Copy Markdown

I love this

@davidreyburn
Copy link
Copy Markdown

Cool command! I'd like to change the characters printed to terminal, but any change I make to the string in 'letters' returns the error "awk: illegal statement at source line 1 - 5 missing ]'s". Anyone know what all I need to change for that?

@dhaiducek
Copy link
Copy Markdown

dhaiducek commented Apr 20, 2018

This is sweet. Thanks! I've created an updated version that clears columns from above and exits and clears the screen upon a key press: https://gist.github.com/dhaiducek/174cdb04a5a51f016c6ca69ece721b17
(I changed it to show only zeros and ones since I couldn't get it to change to a foreign alphabet without changing my system settings.)

@HaidarSellami
Copy link
Copy Markdown

<3

@anderskitson
Copy link
Copy Markdown

@rpranshu
Copy link
Copy Markdown

How to put custom text in this?

@nguyenmanhhien
Copy link
Copy Markdown

Nice! Thank you.

@xiaotianhu
Copy link
Copy Markdown

Really cool! Love it

@rullinoiz
Copy link
Copy Markdown

real good computer heater

@yangjiang3973
Copy link
Copy Markdown

+1

@OlaoluwaM
Copy link
Copy Markdown

That's crazy man!

@iksana98
Copy link
Copy Markdown

Love it its awesome

@coolnumber9
Copy link
Copy Markdown

Thanks, @khakimov. Just in time for #TheMatrix4 #TheMatrixResurrections .
https://www.instagram.com/p/CTCXoCbJvJ4/?utm_source=ig_web_copy_link

@WuglyakBolgoink
Copy link
Copy Markdown

WuglyakBolgoink commented Sep 20, 2021

memory killer...

better use this https://sharadchhetri.com/ubuntu-linux-get-matrix-effect-terminal/

or on macOS -> brew install cmatrix

@jaagut123
Copy link
Copy Markdown

Made fork which erases the columns when its full.
https://github.com/jaagut123/bash_matrix

@StepanPetei
Copy link
Copy Markdown

#!/bin/env sh

lines=$(tput lines)
cols=$(tput cols)

awkscript='
  {
    letters="ァアィイゥウェエォオカガキギクグケゲコゴサコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ーヽヾabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%^&*()"

    lines=$1
    random_col=$3

    c=$4
    letter=substr(letters,c,1)

    cols[random_col]=0;

    for (col in cols) {
      line=cols[col];
      cols[col]=cols[col]+1;

      printf "\033[%s;%sH\033[2;32m%s", line, col, letter;
      printf "\033[%s;%sH\033[1;37m%s\033[0;0H", cols[col], col, letter;

      if (cols[col] >= lines) {
        cols[col]=0;
      }
    }
  }
'

echo -e "\e[1;40m"
clear

while :; do
  echo $lines $cols $(( $RANDOM % $cols)) $(( $RANDOM % 72 ))
  sleep 0.05
done | awk "$awkscript"

@avdaredevil
Copy link
Copy Markdown

Here's a cross platform powershell script that runs in iTerm / WindowsTerminal or a basic ASCII terminal as well! (Progressive in unix mode, and basic in windows mode)

https://github.com/avdaredevil/matrix/?tab=readme-ov-file#demo

Hope it brings a smile to y'all's faces :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment