Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Indenting terminal/shell output

I've customized the look/feel of my terminal prompt extensively so that it outputs the following (for development work):

== [~/current/path] (git_branch_name) $

I use the == to help identify the prompt lines when I'm looking at a big blog of text.

However, after using this for a few months, I find it's difficult to easily glance at the terminal and know what's what.

I had the idea that indenting all the output would help with that. I know I can change the color as well, but wanted to play with both solutions.

But I have no idea how to indent all output that gets sent to the terminal. MAN pages didn't help me and I couldn't find much on Google.

What I am trying to do

$ some_command_that_outputs_text All lines of output are indented 2 spaces... All lines of output are indented 2 spaces... All lines of output are indented 2 spaces... All lines of output are indented 2 spaces... $ another_terminal_prompt More lines are indented 2 spaces... More lines are indented 2 spaces... More lines are indented 2 spaces... More lines are indented 2 spaces...

Updated: 2014-10-24

Note that I have already customized my color scheme for my terminal as well as the prompt itself. I found that the color scheme wasn't enough for me personally to locate my commands as much of the text itself has similar coloring as my prompt itself.

like image 336
Dan L Avatar asked Jun 10 '26 00:06

Dan L


1 Answers

In your current bash you can do the following:

exec 1> >(sed -r 's/^(.*)/  \1/g')

Or use that if your sed implementation does not support the -r flag:

exec 1> >(sed 's/^/ /')

That redirects the standard output file descriptor (stdout) to sed, that adds two newline to every line of the outout. Try it with:

$ ls -l
  total 0
  drwxr-xr-x 2 root root 40 Oct 22 16:35 dir
  -rw-r--r-- 1 root root  0 Oct 22 16:59 file
$
like image 53
chaos Avatar answered Jun 13 '26 07:06

chaos