6
The awesome application tree
, which I installed in Debian with apt-get install tree
, has the option of drawing its output using ANSI graphics. Its output looks like this now:
. tqq node_modules x tqq coffee-script x tqq eco x tqq express x tqq forever x mqq stylus tqq package.json mqq src mqq daemontest.coffee
This is obviously wrong. These are my LANG=en_GB.UTF-8 UTF-8
and LC_ALL=C
env variables. PuTTY is set to expect UTF-8 as well. If I change PuTTY to "Use font encoding" then tree -A
looks right, however npm list
will then break and look like this:
├── coffee-script@1.2.0 ├─┬ eco@1.1.0-rc-3 │ └── strscan@1.0.1 ├─┬ express@2.5.5 │ ├─┬ connect@1.8.5 │ │ └── formidable@1.0.8 │ ├── mime@1.2.4 │ ├── mkdirp@0.0.7 │ └── qs@0.4.0 ...
All of this stuff should work correctly, so I'm guessing my settings are wrong somewhere. Could anyone help me tune in on exactly where?
EDIT: My env
now looks like this. Problem is still there
root@chu:~# env TERM=putty SHELL=/bin/bash SSH_CLIENT=**Censored** SSH_TTY=/dev/pts/1 USER=root LS_COLORS=rs=**Removed because wall of text** PYTHONBREW_ROOT=/usr/local/pythonbrew MAIL=/var/mail/root PATH=/usr/local/pythonbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PWD=/root LANG=en_GB.UTF-8 SHLVL=1 HOME=/root LANGUAGE=en_US:en LS_OPTIONS=--color=auto PYTHONPATH=:/root/pymodules LOGNAME=root SSH_CONNECTION=**Censored** _=/usr/bin/env
Hey thanks for a brilliant answer, but I have a few problems with it. First of all, I've never touched the LC_ALL or LANG variables. I don't know where they're set and I don't know how to unset them or change them. Could you elaborate just a bit on that? Thanks! – Hubro – 2012-01-13T20:34:02.993
@Codemonkey: Check your shell startup scripts first. If you are using bash, then
grep LC_ALL ~/.profile ~/.bash_profile ~/.bash_login ~/.bashrc /etc/profile /etc/profile.d/* /etc/*bashrc /etc/environ* /etc/default/locale
-- copy/paste that :) – user1686 – 2012-01-13T20:39:13.650Yeah I found the LC_ALL declaration as well at the LANG one. I removed the LC_ALL and edited LANG. The env output is edited into my question, because tree still just writes "tqq" and "mqq" instead of ANSI graphics – Hubro – 2012-01-13T20:41:34.150
@Codemonkey: 1) Are you running
tree
ortree -A
? Do not use the ANSI mode; just runtree
and let it use Unicode instead. 2) Doeslocale -a
showen_GB.UTF-8
in the list? – user1686 – 2012-01-13T20:58:16.067locale -a
: http://pastebin.com/Kzttvgm2. But why can't I use the ANSI characters?npm
can use them, why can't tree? – Hubro – 2012-01-14T01:52:08.740@Codemonkey: You need to generate the locale data, then; in Debian
sudo dpkg-reconfigure locales
should work, or you can manually uncomment the "en_GB.UTF-8 UTF-8
" line in /etc/locale.gen, then runsudo locale-gen
. And like I already said: **npm
does not use ANSI graphics. It uses their Unicode (UTF-8) equivalents, and only that.** – user1686 – 2012-01-14T03:38:47.490Note that PuTTY is somewhat unusual in not supporting the ANSI/VT100 graphics in UTF-8 mode. Xterm and others such as Cygwin's mintty do support both at the same time.
– ak2 – 2012-01-14T10:16:22.533So to summarize, the problem is with
tree
because it can't display UTF-8 ANSI-looking graphics likenpm
can? – Hubro – 2012-01-14T18:14:41.650@Codemonkey:
tree
can display UTF-8 graphics, but you're telling it not to. 1) Make sure you have your locale settings correct; "locale -a
" must haveen_GB.utf8
in the list. 2) Set your $LANG toen_GB.UTF-8
. (Yes, $LANG must end withUTF-8
, notutf8
.) 3) Do not run "tree -A
"; just "tree
" will suffice. – user1686 – 2012-01-14T18:18:10.573Here is my working setup: http://sprunge.us/VSSc
– user1686 – 2012-01-14T18:25:34.603Here is my not working setup. Technically all your requirements are being met, but I do have some errors popping up. Notice that
tree
is using ASCII symbols only, not pretty UTF-8 graphics. Can you see why? – Hubro – 2012-01-14T18:36:27.960@Codemonkey: The errors are saying that
en_GB.UTF-8
does not exist on your system. I already told you how to add it -- either a) runsudo dpkg-reconfigure locales
and enable the locale, or b) manually edit/etc/locale.gen
, uncomment the required line, then runsudo locale-gen
. – user1686 – 2012-01-14T18:49:46.623Oh god, my bad. I thought I had already done that, but I had the en_US locale installed, not the en_GB. It works now. Thanks a lot for your help – Hubro – 2012-01-14T18:54:04.657