Score:0

Why does the tree command print NBSP on Ubuntu 22.04

cn flag

I installed tree v 2.0.2 and in the terminal it displays the output properly but when I send to output to a .txt file it includes a bunch of NBSP ruining the display. It also happens when copying the terminal output.

This didn't happen before. Is this a new "feature" in version 2? How do I get it to display normal spaces instead of NBSP (which is for HTML)?

Edit: Output from tree ./ | xxd

$ tree ./ | xxd
00000000: 2e2f 0ae2 949c e294 80e2 9480 2063 6830  ./.......... ch0
00000010: 332e 696d 6c0a e294 9ce2 9480 e294 8020  3.iml.......... 
00000020: 646f 630a e294 82c2 a0c2 a020 e294 9ce2  doc........ ....
00000030: 9480 e294 8020 6375 726c 2e74 7874 0ae2  ..... curl.txt..
00000040: 9482 c2a0 c2a0 20e2 949c e294 80e2 9480  ...... .........
00000050: 2064 6966 662e 7478 740a e294 82c2 a0c2   diff.txt.......
00000060: a020 e294 9ce2 9480 e294 8020 7265 6164  . ......... read
00000070: 6d65 2e74 7874 0ae2 9482 c2a0 c2a0 20e2  me.txt........ .
00000080: 949c e294 80e2 9480 2074 7265 652e 6874  ........ tree.ht
00000090: 6d6c 0ae2 9482 c2a0 c2a0 20e2 9494 e294  ml........ .....
000000a0: 80e2 9480 2074 7265 652e 7478 740a e294  .... tree.txt...
000000b0: 9ce2 9480 e294 8020 676f 2e6d 6f64 0ae2  ....... go.mod..
000000c0: 949c e294 80e2 9480 2067 6f2e 7375 6d0a  ........ go.sum.
000000d0: e294 9ce2 9480 e294 8020 6d65 7461 6461  ......... metada
000000e0: 7461 0ae2 9482 c2a0 c2a0 20e2 949c e294  ta........ .....
000000f0: 80e2 9480 2063 6d64 0ae2 9482 c2a0 c2a0  .... cmd........
00000100: 20e2 9482 c2a0 c2a0 20e2 9494 e294 80e2   ....... .......
00000110: 9480 206d 6169 6e2e 676f 0ae2 9482 c2a0  .. main.go......
00000120: c2a0 20e2 949c e294 80e2 9480 2069 6e74  .. ......... int
00000130: 6572 6e61 6c0a e294 82c2 a0c2 a020 e294  ernal........ ..
00000140: 82c2 a0c2 a020 e294 9ce2 9480 e294 8020  ..... ......... 
00000150: 636f 6e74 726f 6c6c 6572 0ae2 9482 c2a0  controller......
00000160: c2a0 20e2 9482 c2a0 c2a0 20e2 9482 c2a0  .. ....... .....
00000170: c2a0 20e2 9494 e294 80e2 9480 206d 6574  .. ......... met
00000180: 6164 6174 610a e294 82c2 a0c2 a020 e294  adata........ ..
00000190: 82c2 a0c2 a020 e294 82c2 a0c2 a020 2020  ..... .......   
000001a0: 2020 e294 94e2 9480 e294 8020 636f 6e74    ......... cont
000001b0: 726f 6c6c 6572 2e67 6f0a e294 82c2 a0c2  roller.go.......
000001c0: a020 e294 82c2 a0c2 a020 e294 9ce2 9480  . ....... ......
000001d0: e294 8020 6861 6e64 6c65 720a e294 82c2  ... handler.....
000001e0: a0c2 a020 e294 82c2 a0c2 a020 e294 82c2  ... ....... ....
000001f0: a0c2 a020 e294 94e2 9480 e294 8020 6874  ... ......... ht
00000200: 7470 0ae2 9482 c2a0 c2a0 20e2 9482 c2a0  tp........ .....
00000210: c2a0 20e2 9482 c2a0 c2a0 2020 2020 20e2  .. .......     .
00000220: 9494 e294 80e2 9480 2068 7474 702e 676f  ........ http.go
00000230: 0ae2 9482 c2a0 c2a0 20e2 9482 c2a0 c2a0  ........ .......
00000240: 20e2 9494 e294 80e2 9480 2072 6570 6f73   ......... repos
00000250: 6974 6f72 790a e294 82c2 a0c2 a020 e294  itory........ ..
00000260: 82c2 a0c2 a020 2020 2020 e294 9ce2 9480  .....     ......
00000270: e294 8020 6572 726f 722e 676f 0ae2 9482  ... error.go....
00000280: c2a0 c2a0 20e2 9482 c2a0 c2a0 2020 2020  .... .......    
00000290: 20e2 9494 e294 80e2 9480 206d 656d 6f72   ......... memor
000002a0: 790a e294 82c2 a0c2 a020 e294 82c2 a0c2  y........ ......
000002b0: a020 2020 2020 2020 2020 e294 94e2 9480  .         ......
000002c0: e294 8020 6d65 6d6f 7279 2e67 6f0a e294  ... memory.go...
000002d0: 82c2 a0c2 a020 e294 94e2 9480 e294 8020  ..... ......... 
000002e0: 706b 670a e294 82c2 a0c2 a020 2020 2020  pkg........     
000002f0: e294 94e2 9480 e294 8020 6d6f 6465 6c0a  ......... model.
00000300: e294 82c2 a0c2 a020 2020 2020 2020 2020  .......         
00000310: e294 94e2 9480 e294 8020 6d65 7461 6461  ......... metada
00000320: 7461 2e67 6f0a e294 9ce2 9480 e294 8020  ta.go.......... 
00000330: 6d6f 7669 650a e294 82c2 a0c2 a020 e294  movie........ ..
00000340: 9ce2 9480 e294 8020 636d 640a e294 82c2  ....... cmd.....
00000350: a0c2 a020 e294 82c2 a0c2 a020 e294 94e2  ... ....... ....
00000360: 9480 e294 8020 6d61 696e 2e67 6f0a e294  ..... main.go...
00000370: 82c2 a0c2 a020 e294 9ce2 9480 e294 8020  ..... ......... 
00000380: 696e 7465 726e 616c 0ae2 9482 c2a0 c2a0  internal........
00000390: 20e2 9482 c2a0 c2a0 20e2 949c e294 80e2   ....... .......
000003a0: 9480 2063 6f6e 7472 6f6c 6c65 720a e294  .. controller...
000003b0: 82c2 a0c2 a020 e294 82c2 a0c2 a020 e294  ..... ....... ..
000003c0: 82c2 a0c2 a020 e294 94e2 9480 e294 8020  ..... ......... 
000003d0: 6d6f 7669 650a e294 82c2 a0c2 a020 e294  movie........ ..
000003e0: 82c2 a0c2 a020 e294 82c2 a0c2 a020 2020  ..... .......   
000003f0: 2020 e294 94e2 9480 e294 8020 636f 6e74    ......... cont
00000400: 726f 6c6c 6572 2e67 6f0a e294 82c2 a0c2  roller.go.......
00000410: a020 e294 82c2 a0c2 a020 e294 9ce2 9480  . ....... ......
00000420: e294 8020 6761 7465 7761 790a e294 82c2  ... gateway.....
00000430: a0c2 a020 e294 82c2 a0c2 a020 e294 82c2  ... ....... ....
00000440: a0c2 a020 e294 9ce2 9480 e294 8020 6572  ... ......... er
00000450: 726f 722e 676f 0ae2 9482 c2a0 c2a0 20e2  ror.go........ .
00000460: 9482 c2a0 c2a0 20e2 9482 c2a0 c2a0 20e2  ...... ....... .
00000470: 949c e294 80e2 9480 206d 6574 6164 6174  ........ metadat
00000480: 610a e294 82c2 a0c2 a020 e294 82c2 a0c2  a........ ......
00000490: a020 e294 82c2 a0c2 a020 e294 82c2 a0c2  . ....... ......
000004a0: a020 e294 94e2 9480 e294 8020 6874 7470  . ......... http
000004b0: 0ae2 9482 c2a0 c2a0 20e2 9482 c2a0 c2a0  ........ .......
000004c0: 20e2 9482 c2a0 c2a0 20e2 9482 c2a0 c2a0   ....... .......
000004d0: 2020 2020 20e2 9494 e294 80e2 9480 206d       ......... m
000004e0: 6574 6164 6174 612e 676f 0ae2 9482 c2a0  etadata.go......
000004f0: c2a0 20e2 9482 c2a0 c2a0 20e2 9482 c2a0  .. ....... .....
00000500: c2a0 20e2 9494 e294 80e2 9480 2072 6174  .. ......... rat
00000510: 696e 670a e294 82c2 a0c2 a020 e294 82c2  ing........ ....
00000520: a0c2 a020 e294 82c2 a0c2 a020 2020 2020  ... .......     
00000530: e294 94e2 9480 e294 8020 6874 7470 0ae2  ......... http..
00000540: 9482 c2a0 c2a0 20e2 9482 c2a0 c2a0 20e2  ...... ....... .
00000550: 9482 c2a0 c2a0 2020 2020 2020 2020 20e2  ......         .
00000560: 9494 e294 80e2 9480 2072 6174 696e 672e  ........ rating.
00000570: 676f 0ae2 9482 c2a0 c2a0 20e2 9482 c2a0  go........ .....
00000580: c2a0 20e2 9494 e294 80e2 9480 2068 616e  .. ......... han
00000590: 646c 6572 0ae2 9482 c2a0 c2a0 20e2 9482  dler........ ...
000005a0: c2a0 c2a0 2020 2020 20e2 9494 e294 80e2  ....     .......
000005b0: 9480 2068 7474 700a e294 82c2 a0c2 a020  .. http........ 
000005c0: e294 82c2 a0c2 a020 2020 2020 2020 2020  .......         
000005d0: e294 94e2 9480 e294 8020 6874 7470 2e67  ......... http.g
000005e0: 6f0a e294 82c2 a0c2 a020 e294 94e2 9480  o........ ......
000005f0: e294 8020 706b 670a e294 82c2 a0c2 a020  ... pkg........ 
00000600: 2020 2020 e294 94e2 9480 e294 8020 6d6f      ......... mo
00000610: 6465 6c0a e294 82c2 a0c2 a020 2020 2020  del........     
00000620: 2020 2020 e294 94e2 9480 e294 8020 6d6f      ......... mo
00000630: 7669 652e 676f 0ae2 949c e294 80e2 9480  vie.go..........
00000640: 2070 6b67 0ae2 9482 c2a0 c2a0 20e2 9494   pkg........ ...
00000650: e294 80e2 9480 2064 6973 636f 7665 7279  ...... discovery
00000660: 0ae2 9482 c2a0 c2a0 2020 2020 20e2 949c  ........     ...
00000670: e294 80e2 9480 2063 6f6e 7375 6c0a e294  ...... consul...
00000680: 82c2 a0c2 a020 2020 2020 e294 82c2 a0c2  .....     ......
00000690: a020 e294 94e2 9480 e294 8020 636f 6e73  . ......... cons
000006a0: 756c 2e67 6f0a e294 82c2 a0c2 a020 2020  ul.go........   
000006b0: 2020 e294 9ce2 9480 e294 8020 6469 7363    ......... disc
000006c0: 6f76 6572 792e 676f 0ae2 9482 c2a0 c2a0  overy.go........
000006d0: 2020 2020 20e2 9494 e294 80e2 9480 206d       ......... m
000006e0: 656d 6f72 790a e294 82c2 a0c2 a020 2020  emory........   
000006f0: 2020 2020 2020 e294 94e2 9480 e294 8020        ......... 
00000700: 6d65 6d6f 7279 2e67 6f0a e294 94e2 9480  memory.go.......
00000710: e294 8020 7261 7469 6e67 0a20 2020 20e2  ... rating.    .
00000720: 949c e294 80e2 9480 2063 6d64 0a20 2020  ........ cmd.   
00000730: 20e2 9482 c2a0 c2a0 20e2 9494 e294 80e2   ....... .......
00000740: 9480 206d 6169 6e2e 676f 0a20 2020 20e2  .. main.go.    .
00000750: 949c e294 80e2 9480 2069 6e74 6572 6e61  ........ interna
00000760: 6c0a 2020 2020 e294 82c2 a0c2 a020 e294  l.    ....... ..
00000770: 9ce2 9480 e294 8020 636f 6e74 726f 6c6c  ....... controll
00000780: 6572 0a20 2020 20e2 9482 c2a0 c2a0 20e2  er.    ....... .
00000790: 9482 c2a0 c2a0 20e2 9494 e294 80e2 9480  ...... .........
000007a0: 2072 6174 696e 670a 2020 2020 e294 82c2   rating.    ....
000007b0: a0c2 a020 e294 82c2 a0c2 a020 2020 2020  ... .......     
000007c0: e294 94e2 9480 e294 8020 636f 6e74 726f  ......... contro
000007d0: 6c6c 6572 2e67 6f0a 2020 2020 e294 82c2  ller.go.    ....
000007e0: a0c2 a020 e294 9ce2 9480 e294 8020 6861  ... ......... ha
000007f0: 6e64 6c65 720a 2020 2020 e294 82c2 a0c2  ndler.    ......
00000800: a020 e294 82c2 a0c2 a020 e294 94e2 9480  . ....... ......
00000810: e294 8020 6874 7470 0a20 2020 20e2 9482  ... http.    ...
00000820: c2a0 c2a0 20e2 9482 c2a0 c2a0 2020 2020  .... .......    
00000830: 20e2 9494 e294 80e2 9480 2068 7474 702e   ......... http.
00000840: 676f 0a20 2020 20e2 9482 c2a0 c2a0 20e2  go.    ....... .
00000850: 9494 e294 80e2 9480 2072 6570 6f73 6974  ........ reposit
00000860: 6f72 790a 2020 2020 e294 82c2 a0c2 a020  ory.    ....... 
00000870: 2020 2020 e294 9ce2 9480 e294 8020 6572      ......... er
00000880: 726f 722e 676f 0a20 2020 20e2 9482 c2a0  ror.go.    .....
00000890: c2a0 2020 2020 20e2 9494 e294 80e2 9480  ..     .........
000008a0: 206d 656d 6f72 790a 2020 2020 e294 82c2   memory.    ....
000008b0: a0c2 a020 2020 2020 2020 2020 e294 94e2  ...         ....
000008c0: 9480 e294 8020 6d65 6d6f 7279 2e67 6f0a  ..... memory.go.
000008d0: 2020 2020 e294 94e2 9480 e294 8020 706b      ......... pk
000008e0: 670a 2020 2020 2020 2020 e294 94e2 9480  g.        ......
000008f0: e294 8020 6d6f 6465 6c0a 2020 2020 2020  ... model.      
00000900: 2020 2020 2020 e294 94e2 9480 e294 8020        ......... 
00000910: 7261 7469 6e67 2e67 6f0a 0a34 3120 6469  rating.go..41 di
00000920: 7265 6374 6f72 6965 732c 2033 3020 6669  rectories, 30 fi
00000930: 6c65 730a                                les.
cn flag
It's 22.04. Fixed in the title.
cn flag
Yes, installed with `sudo apt install tree`.
muru avatar
us flag
I tested on an 18.04 docker image and it does output NBSP there as well (`tree` v1.7.0)
Score:1
cn flag

Taking a look at tree's source, it looks like it supports multiple character sets including UTF-8, and in UTF-8 mode printing NBSP characters has been the behavior for almost 20 years now.

Here's the first version of the software that seems to obviously contain NBSP: https://gitlab.com/OldManProgrammer/unix-tree/-/blob/1ac08f9fbd9f2175605a43110108917f62579d6d/tree.c#L1665

{ utf8,        "\342\224\202\302\240\302\240",
               "\342\224\234\342\224\200", "\342\224\224\342\224\200", "\302\251" },

whereas \302\240 is the UTF-8 encoding of NBSP, described in octal notation for each byte.

This piece of source code has changed slightly a few times, and moved to a different file, but it looks to me it's always used \302\240 since then and not a regular space.

Are you definitely sure that this didn't happen before, and it's not that you just discovered this behavior now? Maybe the default charset (either built in to the source, or via an env variable) changed recently. Maybe some Ubuntu-specific patch changed, I haven't checked those. Maybe I'm missing something.

Score:-1
cn flag

chatGPT to the rescue (first response was incorrect, the second response worked). Here is how to replace NBSP with regular spaces:

tree | sed 's/\xc2\xa0/ /g' > output.txt

The NBSPs only show up in some editors (SublimeText, Intellij), but not in TextEditor.

cn flag
Why did someone down vote a solution to this problem? Did you even try it?
I sit in a Tesla and translated this thread with Ai:

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.