Date: Mon, 3 Feb 2014 18:54:03 +0000 (UTC) From: Tom Rhodes <trhodes@FreeBSD.org> To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r43736 - head/en_US.ISO8859-1/books/handbook/basics Message-ID: <201402031854.s13Is3vb011810@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: trhodes Date: Mon Feb 3 18:54:03 2014 New Revision: 43736 URL: http://svnweb.freebsd.org/changeset/doc/43736 Log: Add a small section on shell redirection and piping. Fix two sentences to not start with a lower case command. Reviewed by: bcr, wblock Modified: head/en_US.ISO8859-1/books/handbook/basics/chapter.xml Modified: head/en_US.ISO8859-1/books/handbook/basics/chapter.xml ============================================================================== --- head/en_US.ISO8859-1/books/handbook/basics/chapter.xml Mon Feb 3 17:35:21 2014 (r43735) +++ head/en_US.ISO8859-1/books/handbook/basics/chapter.xml Mon Feb 3 18:54:03 2014 (r43736) @@ -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 > 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 < 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 < directory_listing.txt > 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">
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201402031854.s13Is3vb011810>