g | x | w | all
Bytes Lang Time Link
114Python 3.8 prerelease240803T220319ZJakque
012Tcl180415T154637Zjimmy230
004dc180307T210202Zbrhfl
002DipDup180307T105200Zalephalp
032JavaScript180202T120122ZShaggy
004Underload180202T111404ZKevin Cr
046JavaScript Node.js180202T112424ZDELETE_M
016Jelly180202T120426ZDELETE_M

Python 3.8 (pre-release), 114 bytes

for x in[a:='for x in[a:=%r,~(i:=-1)]:##\\',~(i:=-1)]:##\
 exec(b:="x or input(a%a*i+'\\n exec(b:=%r)'%b*i);i+=1")

Try it online!

Try it Try it online!online!

Try it Try it Try it online!online!online!

Tcl, 12 bytes

puts {}     

Try it online!

It's just another language that also has this.

dc, 4 bytes

 []p

Similar to some other answers, since strings in dc have start ([) and end (]) delimiters (that is, " doesn't perform both duties, etc.), they're nestable without any real effort. p to print.

N=1: Try it online!

N=2: Try it nested!

N=3: Try it nesteder!

DipDup, 2 bytes

[]

It pushes the list onto the stack, and prints it without the outmost brackets.

N = 1: Try it online!

N = 2: Try it online!

N = 3: Try it online!

JavaScript, 36 32 bytes

Takes advantage of the fact that Function.prototype.toString() takes no arguments and will therefore ignore any that are passed to it.

Partly inspired by user202729's solution.

f=_=>f.toString( ).slice(14,-16)

Try it

o.innerHTML=["<span>Five</span>",(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16) ).slice(14,-16) ).slice(14,-16) ).slice(14,-16))(),"<span>Four</span>",(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16) ).slice(14,-16) ).slice(14,-16))(),"<span>Three</span>",(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16) ).slice(14,-16))(),"<span>Two</span>",(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16))(),"<span>One</span>",(f=_=>f.toString( ).slice(14,-16))(),"<span>Thunderbirds Are Go!</span>"].join`\n`
span{font-weight:bold;font-size:16px;line-height:1.5em;text-transform:uppercase;}span:last-child{font-size:8px;}
<pre id=o></pre>

Underload, 4 bytes

N=1: Try it online.

 ()S

N=2: Try it online.

 ( ()S)S

N=3: Try it online.

 ( ( ()S)S)S

Explanation:

Self-explanatory, but I add it anyway.

JavaScript (Node.js), 46 bytes

Full program. So console.log is necessary.

Use an idea from this answer to save some bytes.

l=console.log;   g=_=>{};l((''+g).slice(4,-1))

Try it online! Try it online twice! Try it online, three times!


My approach is similar to that used in Kevin Cruijssen's answer, find a nestable structure (a function in this case).

Jelly, 16 bytes

Ṿḣ-9Ḋð}“““““““““

Try it online!

Doubled: Try it online!

Tripled: Try it online!


Jelly doesn't have any nestable structure, but its string literals are auto-terminated.


Ṿḣ-9Ḋ    First chain. (monadic)
Ṿ        Uneal. (to string)
 ḣ-9     Take the ead, ends at the -9'th character.
    Ḋ    equeue, remove the first character.

     ð             Terminate the first chain, start a new one.
      }            Convert the last monadic chain to a dyadic one.
       “““““““““   String literal.
                   This matches the pattern <dyad> <nilad>, so applies
                   the the corresponding rules. This way a link can take data
                   to the right of it.

Will try different approaches to see if they can be shorter.