Skip to content

Redirecting Output

Redirection Operators

Now that you know how to run a few basic commands and programs, it is a good time to teach you how we can redirect their output. The default behaviour is to display their output to the standard output stdout so that we can see it. However, we are also able to redirect the output to a file. To do this we use the > operator followed by the file we want to store the output in. Note, the echo command just outputs what you put in to it.

% echo "Wow! This guide has been super helpful for me :)" > tootrue.txt

% cat tootrue.txt
Wow! This guide has been super helpful for me :)

Another operator is >>. This operator will append the output to a file. That is, if it already exists! If it doesn't, then it beahves the the same as >, which overwrites/creates instead of appends.

% echo "I agree!" >> tootrue.txt

% cat tootrue.txt
Wow! This guide has been super helpful for me :)
I agree!

The last kind of redirect operator is the pipe | operator, which redirects the output between programs/commands.

% ls -l /
total 108
drwxr-xr-x   2 root root  4096 Sep 11 06:37 bin
drwxr-xr-x   4 root root  4096 Sep 19 06:59 boot
drwxr-xr-x  19 root root  4000 Sep  4 15:07 dev
drwxr-xr-x 186 root root 12288 Sep 19 06:56 etc
drwxr-xr-x  43 root root  4096 Sep  4 15:33 home
lrwxrwxrwx   1 root root    33 Sep 19 06:58 initrd.img -> boot/initrd.img-4.15.0-64-generic
lrwxrwxrwx   1 root root    33 Sep 19 06:58 initrd.img.old -> boot/initrd.img-4.15.0-62-generic
drwxr-xr-x  25 root root  4096 Sep  4 16:09 lib
drwxr-xr-x   2 root root  4096 Sep  4 16:09 lib32
drwxr-xr-x   2 root root  4096 Jul 25  2018 lib64
drwx------   2 root root 16384 Sep  4 13:21 lost+found
drwxr-xr-x   2 root root  4096 Jul 25  2018 media
drwxr-xr-x   2 root root  4096 Jul 25  2018 mnt
drwxr-xr-x   6 root root  4096 Sep 18 16:47 opt
dr-xr-xr-x 259 root root     0 Sep  4 14:13 proc
drwx------   5 root root  4096 Sep 10 15:55 root
drwxr-xr-x  41 root root  2420 Sep 19 15:14 run
drwxr-xr-x   2 root root 12288 Sep 19 06:56 sbin
drwxr-xr-x   4 root root  4096 Sep  4 13:28 snap
drwxr-xr-x   2 root root  4096 Jul 25  2018 srv
dr-xr-xr-x  13 root root     0 Sep  4 20:10 sys
drwxrwxrwt  80 root root 12288 Sep 19 15:09 tmp
drwxr-xr-x  12 root root  4096 Sep  4 16:09 usr
drwxr-xr-x  19 root root  4096 Sep  4 15:05 var
lrwxrwxrwx   1 root root    30 Sep 19 06:58 vmlinuz -> boot/vmlinuz-4.15.0-64-generic
lrwxrwxrwx   1 root root    30 Sep 19 06:58 vmlinuz.old -> boot/vmlinuz-4.15.0-62-generic

% ls -l / | grep lib
drwxr-xr-x  25 root root  4096 Sep  4 16:09 lib
drwxr-xr-x   2 root root  4096 Sep  4 16:09 lib32
drwxr-xr-x   2 root root  4096 Jul 25  2018 lib64

Here, we redirected the output of the ls command into the grep command, where grep restricts the output only to lines that contain the given pattern, in this case "lib".