https://de.wikipedia.org/w/api.php?action=feedcontributions&feedformat=atom&user=Unixguy Wikipedia - Benutzerbeiträge [de] 2025-04-18T01:47:52Z Benutzerbeiträge MediaWiki 1.44.0-wmf.25 https://de.wikipedia.org/w/index.php?title=Pipeline_(Unix)&diff=180301462 Pipeline (Unix) 2007-07-13T15:13:50Z <p>Unixguy: /* Example */ clarify grep &#039;[a-z]&#039; to remove double negative (inludes lines with lowercase letters, excludes blank lines)</p> <hr /> <div>[[Image:Pipeline.svg|thumb|A pipeline of three programs run on a text terminal]]<br /> In [[Unix-like]] computer [[operating system]]s, a '''pipeline''' is the original ''[[pipeline (software)|software pipeline]]'': a set of [[process (computing)|process]]es chained by their [[standard streams]], so that the output of each process (''[[stdout]]'') feeds directly as input (''[[stdin]]'') of the next one. Each connection is implemented by an [[anonymous pipe]]. [[Filter (Unix)|Filter program]]s are often used in this configuration. The concept was invented by [[Douglas McIlroy]] for [[Unix shell]]s and it was named by analogy to a physical [[pipeline transport|pipeline]].<br /> <br /> ==Example==<br /> <br /> Below is an example of a pipeline that implements a kind of [[spell checker]] for the [[World Wide Web|web]] resource indicated by a [[Uniform Resource Locator|URL]]. An explanation of what it does follows. (Some machines have /usr/share/dict/words instead.)<br /> <br /> [[CURL|curl]] &lt;nowiki&gt;&quot;http://en.wikipedia.org/wiki/Pipeline_(Unix)&quot;&lt;/nowiki&gt; | \<br /> [[sed]] 's/[^a-zA-Z ]/ /g' | \<br /> [[tr (program)|tr]] 'A-Z ' 'a-z\n' | \<br /> [[grep]] '[a-z]' | \<br /> [[Sort (Unix)|sort]] -u | \<br /> [[comm (Unix)|comm]] -23 - /usr/dict/words<br /> <br /> *First, '''&lt;tt&gt;curl&lt;/tt&gt;''' obtains the [[HTML]] contents of a web page (could use &lt;tt&gt;wget&lt;/tt&gt; on some systems).<br /> *Second, '''&lt;tt&gt;sed&lt;/tt&gt;''' this expression removes all characters which are not spaces or letters from the web page's content, replacing them with spaces.<br /> *Third, '''&lt;tt&gt;tr&lt;/tt&gt;''' changes all of the uppercase letters into lowercase and converts the spaces in the lines of text to newlines (each 'word' is now on a separate line).<br /> *Fourth, '''&lt;tt&gt;grep&lt;/tt&gt;''' includes only lines that contain at least one lowercase [[alphabetical]] character (removing any blank lines).<br /> *Fifth, '''&lt;tt&gt;sort&lt;/tt&gt;''' sorts the list of 'words' into alphabetical order, and the &lt;tt&gt;-u&lt;/tt&gt; switch removes duplicates.<br /> *Finally, '''&lt;tt&gt;comm&lt;/tt&gt;''' finds lines in common between two files, &lt;tt&gt;-23&lt;/tt&gt; suppresses lines unique to the second file, and those which are common to both, leaving only those which are found only in the first file named. The &lt;tt&gt;-&lt;/tt&gt; in place of a filename causes &lt;tt&gt;comm&lt;/tt&gt; to use its standard input (from the pipe line in this case). This results in a list of &quot;words&quot; (lines) which are not found in /usr/dict/words.<br /> *The special character &quot;|&quot; tells the operating system to pipe the output from the previous command in the line into the next command in the line. That is, the output of the &lt;tt&gt;curl&lt;/tt&gt; command is given as the input of the &lt;tt&gt;sed&lt;/tt&gt; command. <br /> *The character &quot;\&quot; is used to place all five lines into a single command line.<br /> <br /> == Pipelines in command line interfaces ==<br /> Most [[Unix shell]]s have a special syntax construct for the creation of pipelines. Typically, one simply writes the filter commands in sequence, separated by the [[ASCII]] [[vertical bar]] character &quot;|&quot; (which, for this reason, is often called &quot;pipe character&quot; by Unix users). The shell starts the processes and arranges for the necessary connections between their standard streams (including some amount of [[Buffer (computer science)|buffer]] storage). &lt;!-- Shouldn't this be in the shell article? As with all shell commands, a command line can be extended over multiple physical lines by using a '\' character before the newline. --&gt;<br /> <br /> ===Error stream===<br /> By default, the standard error streams (&quot;[[stderr]]&quot;) of the processes in a pipeline are not passed on through the pipe; instead, they are merged and directed to the [[computer console|console]]. However, many shells have additional syntax for changing this behaviour. In the [[C shell|csh]] shell, for instance, using &quot;|&amp;&quot; instead of &quot;| &quot; signifies that the [[standard error]] stream too should be merged with the standard output and fed to the next process. The [[Bourne Shell]] can also merge standard error, using &lt;tt&gt;2&gt;&amp;1&lt;/tt&gt;, as well as redirect it to a different file.<br /> <br /> === Pipemill ===<br /> In the most commonly used simple pipelines the shell connects a series of sub-processes via pipes, and executes external commands within each sub-process. Thus the shell itself is doing no direct processing of the data flowing through the pipeline.<br /> <br /> However, it's possible for the shell to perform processing directly. This construct generally looks something like:<br /> <br /> command | while read var1 var2 ...; do<br /> # process each line, using variables as parsed into var1, var2, etc<br /> done<br /> <br /> ... which is referred to as a &quot;pipemill&quot; (since the &lt;tt&gt;while&lt;/tt&gt; is &quot;milling&quot; over the results from the initial command.<br /> <br /> '''Example:'''<br /> <br /> find / /usr /var -mount -user foo -printf &quot;%m %p\n&quot; | while read mode filename; do<br /> chown $NEWOWNER &quot;$filename&quot;<br /> chmod $MODE &quot;$filename&quot;<br /> done<br /> <br /> (This example will traverse file directory trees changing the ownership of all files while preserving all permissions, including those that are often stripped off by many versions of the &lt;tt&gt;chown&lt;/tt&gt; command).<br /> <br /> There are a number of variations of the pipemill construct including:<br /> <br /> ps lax | { read x; while read x owner pid parent x x x x x stat x; do<br /> [ &quot;$owner&quot;=&quot;foo&quot; -a &quot;$stat&quot;=&quot;Z&quot; ] &amp;&amp; kill &quot;$parent&quot;<br /> done<br /> }<br /> <br /> (This example kills the parent processes for zombies owned/created by the user &quot;foo&quot;).<br /> <br /> Here the &lt;tt&gt;while&lt;/tt&gt; loop is enclosed in a command group (the braces); and preceded by a &lt;tt&gt;read&lt;/tt&gt; command which effectively &quot;throws away&quot; the first line from the &lt;tt&gt;ps&lt;/tt&gt; command. (Of course, in this particular example it would be harmless to process the header line, as it wouldn't match the &quot;$owner&quot;= test). Note that the other references to the &quot;x&quot; variable are simply being used as placeholders for &quot;throwing away&quot; irrelevant fields from each line.<br /> <br /> The defining characteristics of a &quot;pipemill&quot; are: some command or series of commands feeds data into a pipe from which a shell &lt;tt&gt;while&lt;/tt&gt; loop reads and processes it.<br /> <br /> ==Creating pipelines programmatically==<br /> <br /> Pipelines can be created under program control.<br /> The &lt;code&gt;pipe()&lt;/code&gt; [[system call]] asks the operating system to construct a new [[anonymous pipe]] object.<br /> This results in two new, opened file descriptors in the process: the read-only end of the pipe, and the write-only end.<br /> The pipe ends appear to be normal, anonymous [[file descriptor]]s, except that they have no ability to seek.<br /> <br /> To avoid [[deadlock]] and exploit parallelism, the process with one or more new pipes will then, generally, call<br /> &lt;code&gt;[[fork (computing)|fork()]]&lt;/code&gt; to create new<br /> processes. Each process will then close the end(s) of<br /> the pipe that it will not be using before producing or consuming any data.<br /> Alternatively, a process might create a new [[pthreads|thread]] and use the pipe to communicate between them.<br /> <br /> ''[[Named pipe]]s'' may also be created using &lt;code&gt;mkfifo()&lt;/code&gt; or &lt;code&gt;mknod()&lt;/code&gt; and then presented as the input or output file to programs as they are invoked. They allow multi-path pipes to be created, and are especially effective when combined with standard error redirection, or with [[tee (Unix)|tee]].<br /> <br /> ==Implementation==<br /> <br /> In most Unix-like systems, all processes of a pipeline are started at the same time, with their streams appropriately connected&lt;!--details please: buffering--&gt;, and managed by the [[scheduler]] together with all other processes running on the machine. &lt;!--death of a process, broken pipes, signal handling, etc.--&gt; An important aspect of this, setting Unix pipes apart from other pipe implementations, is the concept of [[Buffer (computer science)|buffering]]: a sending program may produce 5000 [[bytes]] per [[second]], and a receiving program may only be able to accept 100 bytes per second, but no data are lost. Instead, the output of the sending program is held in a buffer, or [[Queue (data structure)|queue]]. When the receiving program is ready to read data, the operating system sends it data from the buffer, then removes that data from the buffer. If the buffer fills up, the sending program is suspended (blocked) until the receiving program has had a chance to read some data and make room in the buffer.<br /> <br /> === Network pipes ===<br /> Tools like [[netcat]] and [[socat]] can connect pipes to TCP/IP [[socket]]s, following the Unix philosophy of &quot;[[everything is a file]]&quot;.<br /> <br /> == History==<br /> [[Image: Automator_Icon.png|thumb|75px|right|Apple Automator logo]] <br /> The pipeline concept and the vertical-bar notation was invented by [[Douglas McIlroy]], one of the authors of the early [[Unix shell|command shells]], after he noticed that much of the time they were processing the output of one program as the input to another. The idea was eventually ported to other operating systems, such as [[DOS]], [[OS/2]], [[Windows NT]], and [[BeOS]], often with the same notation. <br /> <br /> The robot in the icon for [[Apple Computer|Apple]]'s [[Automator (software)|Automator]], which also uses a pipeline concept to chain repetitive commands together, holds a pipe as recognition of the application's Unix heritage.&lt;ref name=&quot;automator&quot;/&gt;<br /> <br /> === Other operating systems ===<br /> {{main|pipeline (software)}}<br /> <br /> This feature of [[Unix]] was borrowed by other operating systems, such as [[Taos operating system|Taos]] and [[MS-DOS]], and eventually became the [[pipeline (software)|pipes and filters design pattern]] of [[software engineering]].<br /> <br /> == See also ==<br /> * [[Tee (Unix)]] for fitting together two pipes<br /> * [[Pipeline (software)]] for the general software engineering concept.<br /> * [[Pipeline (computer)]] for other computer-related pipelines.<br /> * [[Hartmann pipeline]]<br /> * [[Anonymous pipe]] a [[FIFO]] structure used for [[interprocess communication]]<br /> * [[Named pipe]] persistent pipes used for interprocess communication<br /> * [[XML pipeline]] for processing of XML files<br /> <br /> ==External links==<br /> *[http://www.linfo.org/pipe.html Pipes: A Brief Introduction] by The Linux Information Project (LINFO)<br /> *[http://www.softpanorama.org/Scripting/pipes.shtml] Unix Pipes -- powerful and elegant programming paradigm (Softpanorama)<br /> *[http://en.wikibooks.org/w/index.php?title=Ad_Hoc_Data_Analysis_From_The_Unix_Command_Line ''Ad Hoc Data Analysis From The Unix Command Line'' at Wikibooks] shows how to use pipelines composed of simple filters to do complex data analysis.<br /> *[http://www.pixelbeat.org/programming/stdio_buffering/ stdio buffering]<br /> *[http://www.debian-administration.org/articles/145 Use And Abuse Of Pipes With Audio Data] gives an introduction to using and abusing pipes with netcat, nettee and fifos to play audio across a network.<br /> *[http://www.codecrazy.net/hitting-pipe-sunday.html hitting the pipe] A program that forks two processes that communicate with each other using pipes.<br /> <br /> ==References==<br /> * [[Sal Soghoian]] on [[MacBreak]] Episode 5 &quot;Enter the Automatrix&quot;<br /> <br /> [[Category:Inter-process communication]]<br /> [[Category:Unix]]<br /> <br /> [[it:Pipeline (Unix)]]<br /> [[ja:パイプ (コンピュータ)]]<br /> [[pt:Pipeline (Unix)]]<br /> [[uk:Конвеєр (Юнікс)]]<br /> [[zh:Pipe]]</div> Unixguy https://de.wikipedia.org/w/index.php?title=Yes_(Unix)&diff=179300878 Yes (Unix) 2006-05-10T13:15:14Z <p>Unixguy: /* Description */ clarify, single CPU systems only</p> <hr /> <div>{{lowercase|title=yes}} <br /> <br /> '''&lt;tt&gt;yes&lt;/tt&gt;''' is a [[Unix]] command.<br /> <br /> ==Purpose==<br /> <br /> Outputs an affirmative response or a string of text continuously until killed.<br /> <br /> ==Syntax==<br /> <br /> yes [ STRING ]<br /> yes OPTION<br /> <br /> ===Options===<br /> <br /> --help<br /> <br /> Displays help and exits<br /> <br /> --version<br /> <br /> Outputs version information and exits<br /> <br /> ==Description==<br /> <br /> By itself, the &lt;tt&gt;yes&lt;/tt&gt; command outputs 'y' or whatever is specified as the STRING argument (above), followed by a [[newline]], until stopped by the user or otherwise [[kill]]ed; when piped into a command, it will continue until the pipe breaks (i.e., the program completes its execution).<br /> <br /> It can also be used to test how well a system handles high loads, as using &lt;tt&gt;yes&lt;/tt&gt; results in 100% processor usage, for systems with a single processor. This, for example, can be useful for investigating whether a system's cooling system will be effective when the processor is running at 100%<br /> <br /> ==Uses==<br /> <br /> &lt;tt&gt;yes&lt;/tt&gt; can be used to send an affirmative response to any command that would otherwise request one, and thereby causing the command to run non-interactively. <br /> <br /> (Note, this may be deprecated - the vast majority of commands that would request response from the user have either a 'force' option (e.g., '[[rm]] -f') or an 'assume-yes' option (e.g., '[[apt-get]] -y' in [[Debian]]).)<br /> <br /> ==Example==<br /> <br /> To display the word first to the screen, type:<br /> <br /> yes first<br /> <br /> This statement displays the word, once per line, until killed.<br /> <br /> <br /> [[Category:Unix software]]</div> Unixguy https://de.wikipedia.org/w/index.php?title=Sleep_(Kommandozeilenbefehl)&diff=179961079 Sleep (Kommandozeilenbefehl) 2006-04-24T12:17:43Z <p>Unixguy: rm {{stub}} looks pretty complete to me</p> <hr /> <div>{{lowercase|title=sleep}}<br /> <br /> '''sleep''' is an instruction for a [[computer]] that delays execution for a specified period of time.<br /> <br /> The sleep instruction will pause for a number of seconds (the default), minutes, hours or days. <br /> <br /> ==Usage==<br /> sleep '''number'''[suffix]...<br /> or:<br /> sleep option<br /> <br /> Where '''number''' is a required floating point number, and suffix is an optional suffix to indicate the time period.<br /> <br /> ===Suffix===<br /> '''s''' (seconds)<br /> '''m''' (minutes)<br /> '''h''' (hours)<br /> '''d''' (days)<br /> <br /> ===Options===<br /> '''--help''' display this help and exit<br /> '''--version''' output version information and exit<br /> <br /> ==Examples==<br /> sleep 5 <br /> Causes the current terminal session to wait 5 seconds. The default unit is seconds.<br /> <br /> sleep 5h<br /> Causes the current terminal session to wait 5 hours<br /> <br /> <br /> Note that '''&lt;tt&gt;sleep 5h30m&lt;/tt&gt;''' and '''&lt;tt&gt;sleep 5h 30m&lt;/tt&gt;''' are illegal since sleep takes only one value and unit as argument.<br /> <br /> Possible uses for &lt;tt&gt;sleep&lt;/tt&gt; include scheduling tasks and delaying execution to allow a process to start.<br /> <br /> <br /> [[Category:Unix software]]</div> Unixguy https://de.wikipedia.org/w/index.php?title=Sleep_(Kommandozeilenbefehl)&diff=179961078 Sleep (Kommandozeilenbefehl) 2006-04-23T17:56:39Z <p>Unixguy: correct lowercase template to be &#039;sleep&#039;, not &#039;file&#039;</p> <hr /> <div>{{lowercase|title=sleep}}<br /> <br /> '''sleep''' is an instruction for a [[computer]] that delays execution for a specified period of time.<br /> <br /> The sleep instruction will pause for a number of seconds (the default), minutes, hours or days. <br /> <br /> ==Usage==<br /> sleep '''number'''[suffix]...<br /> or:<br /> sleep option<br /> <br /> Where '''number''' is a required floating point number, and suffix is an optional suffix to indicate the time period.<br /> <br /> ===Suffix===<br /> '''s''' (seconds)<br /> '''m''' (minutes)<br /> '''h''' (hours)<br /> '''d''' (days)<br /> <br /> ===Options===<br /> '''--help''' display this help and exit<br /> '''--version''' output version information and exit<br /> <br /> ==Examples==<br /> sleep 5 <br /> Causes the current terminal session to wait 5 seconds. The default unit is seconds.<br /> <br /> sleep 5h<br /> Causes the current terminal session to wait 5 hours<br /> <br /> <br /> Note that '''&lt;tt&gt;sleep 5h30m&lt;/tt&gt;''' and '''&lt;tt&gt;sleep 5h 30m&lt;/tt&gt;''' are illegal since sleep takes only one value and unit as argument.<br /> <br /> Possible uses for &lt;tt&gt;sleep&lt;/tt&gt; include scheduling tasks and delaying execution to allow a process to start.<br /> <br /> <br /> {{Compu-lang-stub}}<br /> <br /> [[Category:Unix software]]</div> Unixguy https://de.wikipedia.org/w/index.php?title=Sleep_(Kommandozeilenbefehl)&diff=179961077 Sleep (Kommandozeilenbefehl) 2006-04-23T17:52:51Z <p>Unixguy: add {{lowercase|title=file}}</p> <hr /> <div>{{lowercase|title=file}}<br /> <br /> '''sleep''' is an instruction for a [[computer]] that delays execution for a specified period of time.<br /> <br /> The sleep instruction will pause for a number of seconds (the default), minutes, hours or days. <br /> <br /> ==Usage==<br /> sleep '''number'''[suffix]...<br /> or:<br /> sleep option<br /> <br /> Where '''number''' is a required floating point number, and suffix is an optional suffix to indicate the time period.<br /> <br /> ===Suffix===<br /> '''s''' (seconds)<br /> '''m''' (minutes)<br /> '''h''' (hours)<br /> '''d''' (days)<br /> <br /> ===Options===<br /> '''--help''' display this help and exit<br /> '''--version''' output version information and exit<br /> <br /> ==Examples==<br /> sleep 5 <br /> Causes the current terminal session to wait 5 seconds. The default unit is seconds.<br /> <br /> sleep 5h<br /> Causes the current terminal session to wait 5 hours<br /> <br /> <br /> Note that '''&lt;tt&gt;sleep 5h30m&lt;/tt&gt;''' and '''&lt;tt&gt;sleep 5h 30m&lt;/tt&gt;''' are illegal since sleep takes only one value and unit as argument.<br /> <br /> Possible uses for &lt;tt&gt;sleep&lt;/tt&gt; include scheduling tasks and delaying execution to allow a process to start.<br /> <br /> <br /> {{Compu-lang-stub}}<br /> <br /> [[Category:Unix software]]</div> Unixguy https://de.wikipedia.org/w/index.php?title=Sleep_(Kommandozeilenbefehl)&diff=179961076 Sleep (Kommandozeilenbefehl) 2006-04-21T11:44:19Z <p>Unixguy: article overhaul, complete format edit, remove {{move to wikisource}} template, add Category:Unix software</p> <hr /> <div>:''For [[The Beatles]] song, see [[Wait (song)]]''<br /> <br /> '''wait''' is an instruction for a [[computer]] that delays execution for a specified period of time.<br /> <br /> The wait instruction will pause for a number of seconds (the default), minutes, hours or days. <br /> <br /> ==Usage==<br /> sleep '''number'''[suffix]...<br /> or:<br /> sleep option<br /> <br /> Where '''number''' is a required floating point number, and suffix is an optional suffix to indicate the time period.<br /> <br /> ===Suffix===<br /> '''s''' (seconds)<br /> '''m''' (minutes)<br /> '''h''' (hours)<br /> '''d''' (days)<br /> <br /> ===Options===<br /> '''--help''' display this help and exit<br /> '''--version''' output version information and exit<br /> <br /> ==Examples==<br /> sleep 5 <br /> Causes the current terminal session to wait 5 seconds. The default unit is seconds.<br /> <br /> sleep 5h<br /> Causes the current terminal session to wait 5 hours<br /> <br /> <br /> Note that '''&lt;tt&gt;sleep 5h30m&lt;/tt&gt;''' and '''&lt;tt&gt;sleep 5h 30m&lt;/tt&gt;''' are illegal since sleep takes only one value and unit as argument.<br /> <br /> Possible uses for &lt;tt&gt;wait&lt;/tt&gt; include scheduling tasks and delaying execution to allow a process to start.<br /> <br /> <br /> {{Compu-lang-stub}}<br /> <br /> [[Category:Unix software]]</div> Unixguy https://de.wikipedia.org/w/index.php?title=Yes_(Unix)&diff=179300875 Yes (Unix) 2006-04-05T11:57:00Z <p>Unixguy: add &lt;tt&gt; tags to command name &quot;yes&quot;</p> <hr /> <div>{{lowercase|title=yes}} <br /> <br /> '''&lt;tt&gt;yes&lt;/tt&gt;''' is a [[Unix]] command.<br /> <br /> ==Purpose==<br /> <br /> Outputs an affirmative response or a string of text continuously until killed.<br /> <br /> ==Syntax==<br /> <br /> yes [ STRING ]<br /> yes OPTION<br /> <br /> ===Options===<br /> <br /> --help<br /> <br /> Displays help and exits<br /> <br /> --version<br /> <br /> Outputs version information and exits<br /> <br /> ==Description==<br /> <br /> By itself, the &lt;tt&gt;yes&lt;/tt&gt; command outputs 'y' or whatever is specified as the STRING argument (above), followed by a [[newline]], until stopped by the user or otherwise [[kill]]ed; when piped into a command, it will continue until the pipe breaks (i.e., the program completes its execution). <br /> <br /> ==Uses==<br /> <br /> &lt;tt&gt;yes&lt;/tt&gt; can be used to send an affirmative response to any command that would otherwise request one, and thereby causing the command to run non-interactively. <br /> <br /> (Note, this may be deprecated - the vast majority of commands that would request response from the user have either a 'force' option (e.g., '[[rm]] -f') or an 'assume-yes' option (e.g., '[[apt-get] -y' in [[Debian]]).)<br /> <br /> ==Example==<br /> <br /> To display the word first to the screen, type:<br /> <br /> yes first<br /> <br /> This statement displays the word, once per line, until killed.<br /> <br /> <br /> [[Category:Unix software]]</div> Unixguy https://de.wikipedia.org/w/index.php?title=Yes_(Unix)&diff=179300874 Yes (Unix) 2006-04-05T11:52:57Z <p>Unixguy: /* File */ rm section</p> <hr /> <div>{{lowercase|title=yes}} <br /> <br /> '''yes''' is a [[Unix]] command.<br /> <br /> ==Purpose==<br /> <br /> Outputs an affirmative response or a string of text continuously until killed.<br /> <br /> ==Syntax==<br /> <br /> yes [ STRING ]<br /> yes OPTION<br /> <br /> ===Options===<br /> <br /> --help<br /> <br /> Displays help and exits<br /> <br /> --version<br /> <br /> Outputs version information and exits<br /> <br /> ==Description==<br /> <br /> By itself, the yes command outputs 'y' or whatever is specified as the STRING argument (above), followed by a [[newline]], until stopped by the user or otherwise [[kill]]ed; when piped into a command, it will continue until the pipe breaks (i.e., the program completes its execution). <br /> <br /> ==Uses==<br /> <br /> yes can be used to send an affirmative response to any command that would otherwise request one, and thereby causing the command to run non-interactively. <br /> <br /> (Note, this may be deprecated - the vast majority of commands that would request response from the user have either a 'force' option (e.g., '[[rm]] -f') or an 'assume-yes' option (e.g., '[[apt-get] -y' in [[Debian]]).)<br /> <br /> ==Example==<br /> <br /> To display the word first to the screen, type:<br /> <br /> yes first<br /> <br /> This statement displays the word, once per line, until killed.<br /> <br /> <br /> [[Category:Unix software]]</div> Unixguy