Differences between revisions 1 and 7 (spanning 6 versions)
Revision 1 as of 2008-10-03 18:21:30
Size: 590
Editor: redondos
Comment: page creation
Revision 7 as of 2009-09-11 16:46:15
Size: 795
Editor: NeilMoore
Comment: fix up debug trap, add another version with $BASH_COMMAND
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
[[Anchor(faq93)]]
== How can I see a progress bar when copying/moving files? ==

You can't with cp(1), but you can either:
 * build one yourself with tools such as [http://www.ivarch.com/programs/pv.shtml pv] or [http://clpbar.sourceforge.net/ clpbar];
 * use some other tool, e.g. [http://members.iinet.net.au/~lynx/vcp/ vcp].

You may want to use pv(1) since it's packaged for many systems. In that case, it's convenient if you create a function or script to wrap it.

For example:
<<Anchor(faq93)>>
== How can I set the contents of my terminal's title bar? ==
If you have a terminal that understands `xterm`-compatible escape sequences, and you just want to set the title one time, you can use a function like this:
Line 13: Line 6:
pv "$1" > "$2/${1##*/}" settitle() { printf '\e]2;%s\a' "$*"; }
Line 16: Line 9:
This lacks error checking and support for moving files. If you want to set the title bar to the currently-running command line every time you type a command, then this solution approximates it:

{{{
trap 'printf "\e]2;%s\a" "$(HISTTIMEFORMAT='' history 1)" > /dev/tty' DEBUG
}}}

However, it leaves the command history number in place, and it doesn't trigger on explicit subshells like `(cd foo && make)`.

Or to use just the name and arguments of the current simple command:

{{{
trap 'printf "\e]2;%s\a" "$BASH_COMMAND" > /dev/tty' DEBUG
}}}

How can I set the contents of my terminal's title bar?

If you have a terminal that understands xterm-compatible escape sequences, and you just want to set the title one time, you can use a function like this:

settitle() { printf '\e]2;%s\a' "$*"; }

If you want to set the title bar to the currently-running command line every time you type a command, then this solution approximates it:

trap 'printf "\e]2;%s\a" "$(HISTTIMEFORMAT='' history 1)" > /dev/tty' DEBUG

However, it leaves the command history number in place, and it doesn't trigger on explicit subshells like (cd foo && make).

Or to use just the name and arguments of the current simple command:

trap 'printf "\e]2;%s\a" "$BASH_COMMAND" > /dev/tty' DEBUG

BashFAQ/093 (last edited 2016-10-22 16:49:46 by politkovskaja)