I run a linux compat term that allows setting the tab size.
Since most of my usage is using tabsize=2, I set the term's
tabsize to such when it comes up.

Programs that can display tabs in output like
'ls', 'diff', 'less(or more)', to name a few, have some type of
"expand-tabs" or "-[tT]" option to expand tabs on output
(or input to line up input columns).

Ex:

ls:
       -T, --tabsize=COLS
              assume tab stops at each COLS instead of 8
diff:
       -t, --expand-tabs
              expand tabs to spaces in output
       -T, --initial-tab
              make tabs line up by prepending a tab
       --tabsize=NUM
              tab stops every NUM (default 8) print columns
(etc..).

I propose 'du' gain a "-T" option like 'ls' to allow for
formatted output:

So instead of :

20K My layouts/linda-default.fcl
20K My layouts/new-default.fcl
0 My layouts/foo.fcl
2.2M  autobackup/autobackup.20141103-042819.zip
2.3M  autobackup/bak
12K configuration/Core.cfg
12K playlists/00000106.fpl
24K playlists/index.dat
2.1M  pygrabber/libs
28K pygrabber/scripts
1.3M  user-components/foo_AdvancedControls

I could see:

20K     My layouts/linda-default.fcl
20K     My layouts/new-default.fcl
0       My layouts/foo.fcl
2.2M    autobackup/autobackup.20141103-042819.zip
2.3M    autobackup/bak
12K     configuration/Core.cfg
12K     playlists/00000106.fpl
24K     playlists/index.dat
2.1M    pygrabber/libs
28K     pygrabber/scripts
1.3M    user-components/foo_AdvancedControls


----

Two other readability examples from different programs
follow and a description of the attachment.

Of note, 'ls' defaults to explanding tabs to spaces, so
it doesn't have the problem of variable expansion, but
if one tells it to use '8 space/tab (example pruned from /tmp):

4.0K 0bPwr3N_7s         4.0K cyg2lin.env        4.0K prereqs.txt
4.0K 1             16K diff         4.0K rmdirs
4.0K 2            4.0K dirs            0 ssh-Y3YzuDAD5w/
   0 3173-f1.txt        4.0K do_diffs*           0 ssh-a9nNm0VQ2c/
4.0K 5QXcX6apwV         4.0K done            0 ssh-oszB2InjXA/
   0 CPAN-Reporter-lib-1WVP/  4.0K fZuwIWpHXO          0 ssh-pOlsxOkr0U/
   0 CPAN-Reporter-lib-wDln/  4.0K files           0 ssh-vSPNXq8i3I/
4.0K HUk8j_zP_d         4.0K fq22uj4fYU          0 t1
4.0K all          4.0K lnx.txt           0 veKj4PS/
4.0K awstest.out        456K log             0 vq0XVTv/
104K boot-cons.msg        4.0K lt.h          40K x.log
   0 boot.msgs/         4.0K meterlist         24K x.txt

vs. ls' -CFhsT2:

4.0K 0bPwr3N_7s               4.0K cyg2lin.env        4.0K prereqs.txt
4.0K 1                         16K diff               4.0K rmdirs
4.0K 2                        4.0K dirs                  0 ssh-Y3YzuDAD5w/
   0 3173-f1.txt              4.0K do_diffs*             0 ssh-a9nNm0VQ2c/
4.0K 5QXcX6apwV               4.0K done                  0 ssh-oszB2InjXA/
   0 CPAN-Reporter-lib-1WVP/  4.0K fZuwIWpHXO            0 ssh-pOlsxOkr0U/
   0 CPAN-Reporter-lib-wDln/  4.0K files                 0 ssh-vSPNXq8i3I/
4.0K HUk8j_zP_d               4.0K fq22uj4fYU            0 t1
4.0K all                      4.0K lnx.txt               0 veKj4PS/
4.0K awstest.out              456K log                   0 vq0XVTv/
104K boot-cons.msg            4.0K lt.h                40K x.log
   0 boot.msgs/               4.0K meterlist           24K x.txt


----
As a final short example -- something I use to print a shortened
version of my current directory in my prompt:

w/default -8 tabs in less:
>  less -x8 spwd

#!/bin/bash

cols() {
        declare size="$(stty size </dev/tty)"
        echo "${size#* }"
}
export -f cols
shopt -s expand_aliases
alias int=declare\ -i _e=echo _pf=printf exp=export ret=return
exp __dpf__='local -a PF=(
                                                                
"/$1/$2/$3/../\${$[$#-1]}/\${$#}"
                                                                
"/$1/$2/../\${$[$#-1]}/\${$#}"
                                                                
"/$1/../\${$[$#-1]}/\${$#}"
                                                                
"/$1/../\${$#}"
                                                                ".../\${$#}"
                                                                "..." )'
function spwd () {      \
        (($#)) || { _e "spwd called with null arg"; ret 1; }; \
        int 
w=${COLUMNS:-$(cols)}/2                                                                                                     
;\
        ( _pf -v _p "%s" "$1" ; exp IFS=/                               ;\
                set $_p; shift; unset 
IFS                                                       ;\
                
t="${_p#${HOME%${USER}}}"                                                       
;\
                int 
tl=${#t}                                                                                                    
;\
                if (($#<=6 && tl<w));then ((tl<=2)) && \
                        { _e -En "${_p}";ret 0; 
}                                               ;\
                
else                                                                                                                                     
\
                        eval 
"$__dpf__"                                                                                 
;\
                        int i 
pfl=${#PF[*]}                                                                     
;\
                        for ((i=0; i<pfl; ++i)); do     eval             \
                                "_pf -v _pa %s 
\"${PF[i]}\""                    ;\
                                _p="$(eval "_pf %s \"$_pa\"")"          ;\
                                ((${#_p}<w)) && break;  
done                    ;\
                
fi                                                                                                                                              
;\
                _e -En "${_p#${HOME%${USER}}}" )               
}

exp -f spwd

[[ ${0##*/} == spwd ]] && if (($#)) ; then spwd "$@" ; else spwd "$PWD" ; fi

------------------
But using tabsize = 2:

#!/bin/bash

cols() {
  declare size="$(stty size </dev/tty)"
  echo "${size#* }"
}
export -f cols
shopt -s expand_aliases
alias int=declare\ -i _e=echo _pf=printf exp=export ret=return
exp __dpf__='local -a PF=(
                "/$1/$2/$3/../\${$[$#-1]}/\${$#}"
                "/$1/$2/../\${$[$#-1]}/\${$#}"
                "/$1/../\${$[$#-1]}/\${$#}"
                "/$1/../\${$#}"
                ".../\${$#}"
                "..." )'
function spwd () {  \
  (($#)) || { _e "spwd called with null arg"; ret 1; }; \
  int w=${COLUMNS:-$(cols)}/2                         ;\
  ( _pf -v _p "%s" "$1" ; exp IFS=/       ;\
    set $_p; shift; unset IFS             ;\
    t="${_p#${HOME%${USER}}}"             ;\
    int tl=${#t}                          ;\
    if (($#<=6 && tl<w));then ((tl<=2)) && \
      { _e -En "${_p}";ret 0; }           ;\
    else                                   \
      eval "$__dpf__"                     ;\
      int i pfl=${#PF[*]}                 ;\
      for ((i=0; i<pfl; ++i)); do eval     \
        "_pf -v _pa %s \"${PF[i]}\""      ;\
        _p="$(eval "_pf %s \"$_pa\"")"    ;\
        ((${#_p}<w)) && break;  done      ;\
    fi                                    ;\
    _e -En "${_p#${HOME%${USER}}}" )   
}

exp -f spwd

[[ ${0##*/} == spwd ]] && if (($#)) ; then spwd "$@" ; else spwd "$PWD" ; fi

---------------

The attachment is a shell script shell script that
allows one to display and/or set current tab settings
on compatible terminals -- if you want to see what
programs look like with various tab settings, it
might be useful.

The script assumes if it cannot read the current tab
settings, then the term likely doesn't support setting
them either.

The script is a bit of a hack, in that if the
user types input while it it trying to measure or set
your tabs, it may just give up and not set them, but I have
it run as part of my login script and it's rarely a problem
(even works w/cygwin on windows!). (Hard to block the user's
TTY input when the program requires talking to the TTY
apart from the user).

Thanks,
Linda