Add a small section on shell redirection and piping.

Fix two sentences to not start with a lower case command.

Reviewed by:	bcr, wblock
This commit is contained in:
Tom Rhodes 2014-02-03 18:54:03 +00:00
parent e11c3356e5
commit 202f060596
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=43736

View file

@ -917,8 +917,8 @@ Other information:</screen>
</example>
<note>
<para>&man.chfn.1; and &man.chsh.1; are links to
&man.chpass.1;, as are &man.ypchpass.1;, &man.ypchfn.1;,
<para>The commands &man.chfn.1; and &man.chsh.1; are links
to &man.chpass.1;, as are &man.ypchpass.1;, &man.ypchfn.1;,
and &man.ypchsh.1;. Since <acronym>NIS</acronym> support
is automatic, specifying the <literal>yp</literal> before
the command is not necessary. How to configure NIS is
@ -987,7 +987,7 @@ passwd: done</screen>
<primary><command>pw</command></primary>
</indexterm>
<para>&man.pw.8; is a command line utility to create, remove,
<para>The &man.pw.8; utility can create, remove,
modify, and display users and groups. It functions as a
front end to the system user and group files. &man.pw.8;
has a very powerful set of command line options that make it
@ -3432,6 +3432,80 @@ Swap: 2048M Total, 2048M Free
<para>Then, rerun &man.chsh.1;.</para>
</note>
</sect2>
<sect2>
<info>
<title>Advanced Shell Techniques</title>
<authorgroup>
<author>
<personname>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
</personname>
<contrib>Written by </contrib>
</author>
</authorgroup>
</info>
<para>The &unix; shell is not just a command interpreter, it
acts as a powerful tool which allows users to execute commands,
redirect their output, redirect their input and chain commands
together to improve the final command output. When this functionality
is mixed with built in commands, the user is provided with
an environment that can maximize efficiency.</para>
<para>Shell redirection is the action of sending the output
or the input of a command into another command or into a
file. To capture the output of the &man.ls.1; command, for
example, into a file, simply redirect the output:</para>
<screen>&prompt.user; <userinput>ls &gt; directory_listing.txt</userinput></screen>
<para>The <filename>directory_listing.txt</filename> file will
now contain the directory contents. Some commands allow you
to read input in a similar one, such as &man.sort.1;. To sort
this listing, redirect the input:</para>
<screen>&prompt.user; <userinput>sort &lt; directory_listing.txt</userinput></screen>
<para>The input will be sorted and placed on the screen. To
redirect that input into another file, one could redirect
the output of &man.sort.1; by mixing the direction:</para>
<screen>&prompt.user; <userinput>sort &lt; directory_listing.txt &gt; sorted.txt</userinput></screen>
<para>In all of the previous examples, the commands are performing
redirection using file descriptors. Every unix system has file
descriptors; however, here we will focus on three, so named as
Standard Input, Standard Output, and Standard Error. Each one
has a purpose, where input could be a keyboard or a mouse,
something that provides input. Output could be a screen or
paper in a printer for example. And error would be anything
that is used for diagnostic or error messages. All three
are considered <acronym>I/O</acronym> based file descriptors
and sometimes considered streams.</para>
<para>Through the use of these descriptors, short named
stdin, stdout, and stderr, the shell allows output and
input to be passed around through various commands and
redirected to or from a file. Another method of redirection
is the pipe operator.</para>
<para>The &unix; pipe operator, <quote>|</quote> allows the
output of one command to be directly passed, or directed
to another program. Basically a pipe will allow the
standard output of a command to be passed as standard
input to another command, for example:</para>
<screen>&prompt.user; <userinput>cat directory_listing.txt | sort | less</userinput></screen>
<para>In that example, the contents of
<filename>directory_listing.txt</filename> will be sorted and
the output passed to &man.less.1;. This allows the user
to scroll through the output at their own pace and prevent
it from scrolling off the screen.</para>
</sect2>
</sect1>
<sect1 xml:id="editors">