For single files or monitoring other pipe based operations (like network transfers) pv [1] is also a useful tool.
gcp() {
cat "$1" | pv | cat > "$2"
} pv < "$1" > "$2" pv "$1" > "$2" <"$1" pv >"$2"mysqldump -u user dbname | pv | mysql -u user -h some_remote server dbname
tar c SOURCE_DIR | pv | tar xv -C DEST_DIR
or # on source computer
tar c SOURCE_DIR | pv > /dev/tcp/192.168.1.2/4567
# on destination computer computer
nc -l -p 4567 | pv | tar xv -C DEST_DIR Bash handles several filenames specially when they are used in
redirections, as described in the following table:
/dev/fd/fd
If fd is a valid integer, file descriptor fd is
duplicated.
/dev/stdin
File descriptor 0 is duplicated.
/dev/stdout
File descriptor 1 is duplicated.
/dev/stderr
File descriptor 2 is duplicated.
/dev/tcp/host/port
If host is a valid hostname or Internet address,
and port is an integer port number or service
name, bash attempts to open a TCP connection to
the corresponding socket.
/dev/udp/host/port
If host is a valid hostname or Internet address,
and port is an integer port number or service
name, bash attempts to open a UDP connection to
the corresponding socket.pv foo.sql | mysql