<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; Объединение команд и обработка выходных данных в shell]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=38619</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=38619&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Объединение команд и обработка выходных данных в shell».]]></description>
		<lastBuildDate>Tue, 18 Apr 2017 06:23:21 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Объединение команд и обработка выходных данных в shell]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=454468#p454468</link>
			<description><![CDATA[<div class="quotebox"><cite>DiabloPC пишет:</cite><blockquote><div class="quotebox"><cite>Olej пишет:</cite><blockquote><p>touch `uname -r`</p></blockquote></div><div class="quotebox"><cite>Olej пишет:</cite><blockquote><p>xxx 2&gt;home.txt<br />$ xxx 2&gt;&amp;1 &gt;home.txt</p></blockquote></div><p>Закинул наверх</p></blockquote></div><p>На самом деле для отправки stdout и stderr в файл достаточно<br /><div class="termtitle" style="font-family: sans-serif; position:relative; height:auto; width:auto; background:#3A4061; color:#FFFFFF; padding: 1px;"><b> Консоль:</b></div>
<div class="termcont" style="font-family: Terminus; position:relative; height:auto; width:auto; overflow-x:scroll; white-space: nowrap ; overflow-y:auto;background:#000000; color:#4EF44E; line-height:1.2; padding: 3px; font-size: 1rem; max-height: 60vh">$ xxx &amp;&gt;home.txt</div></p>]]></description>
			<author><![CDATA[null@example.com (Vascom)]]></author>
			<pubDate>Tue, 18 Apr 2017 06:23:21 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=454468#p454468</guid>
		</item>
		<item>
			<title><![CDATA[Re: Объединение команд и обработка выходных данных в shell]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=453630#p453630</link>
			<description><![CDATA[<div class="quotebox"><cite>Olej пишет:</cite><blockquote><p>touch `uname -r`</p></blockquote></div><div class="quotebox"><cite>Olej пишет:</cite><blockquote><p>xxx 2&gt;home.txt<br />$ xxx 2&gt;&amp;1 &gt;home.txt</p></blockquote></div><p>Закинул наверх</p>]]></description>
			<author><![CDATA[null@example.com (DiabloPC)]]></author>
			<pubDate>Sat, 18 Mar 2017 16:28:42 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=453630#p453630</guid>
		</item>
		<item>
			<title><![CDATA[Re: Объединение команд и обработка выходных данных в shell]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=453378#p453378</link>
			<description><![CDATA[<div class="quotebox"><cite>Olej пишет:</cite><blockquote><p>В теримнологии shell &amp; UNIX такие вещи как process (программа, утилита, ...) и job - это принципиально разные вещи.</p></blockquote></div><p>Да это и так понятно, одно следует из другого. это я про процессы и задания.</p>]]></description>
			<author><![CDATA[null@example.com (i2ks)]]></author>
			<pubDate>Wed, 15 Mar 2017 12:17:47 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=453378#p453378</guid>
		</item>
		<item>
			<title><![CDATA[Re: Объединение команд и обработка выходных данных в shell]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=453376#p453376</link>
			<description><![CDATA[<div class="quotebox"><cite>i2ks пишет:</cite><blockquote><p>я к тому, то что можно посмотреть как там это реализованно.</p></blockquote></div><p>Зачем? (посмотреть) <img src="https://linuxforum.ru/img/smilies/ap.gif" alt="ap" /> <br />Мне, как и всякому, кто минимально знает программирование C, POSIX API, fork() и т.д. - это и так абсолютно прозрачно. <br />А тем, кто не знает C-программирование и POSIX ... остаётся только поверить на слово. <img src="https://linuxforum.ru/img/smilies/aw.gif" alt="aw" /> </p><div class="quotebox"><blockquote><p>GNU parallel is a shell tool for executing <strong>jobs</strong> in parallel using one or more computers.</p></blockquote></div><p>В теримнологии shell &amp; UNIX такие вещи как <strong>process</strong> (программа, утилита, ...) и <strong>job</strong> - это принципиально разные вещи.</p>]]></description>
			<author><![CDATA[null@example.com (Olej)]]></author>
			<pubDate>Wed, 15 Mar 2017 12:05:33 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=453376#p453376</guid>
		</item>
		<item>
			<title><![CDATA[Re: Объединение команд и обработка выходных данных в shell]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=453375#p453375</link>
			<description><![CDATA[<div class="quotebox"><cite>Olej пишет:</cite><blockquote><p>Да нет - это совершенно о другом:</p></blockquote></div><p>я к тому, то что можно посмотреть как там это реализованно.<br />Там же все на перле на скольо я вижу.</p>]]></description>
			<author><![CDATA[null@example.com (i2ks)]]></author>
			<pubDate>Wed, 15 Mar 2017 11:49:40 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=453375#p453375</guid>
		</item>
		<item>
			<title><![CDATA[Re: Объединение команд и обработка выходных данных в shell]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=453374#p453374</link>
			<description><![CDATA[<div class="quotebox"><cite>i2ks пишет:</cite><blockquote><div class="quotebox"><cite>DiabloPC пишет:</cite><blockquote><p>Вот, придумал как сделать более наглядный пример параллельности:</p></blockquote></div><p><a href="http://www.gnu.org/software/parallel/">http://www.gnu.org/software/parallel/</a> наглядней не бывает :-)</p></blockquote></div><p>Да нет - это <strong>совершенно о другом</strong>:<br /></p><div class="quotebox"><blockquote><p>GNU parallel is a shell tool for executing jobs in parallel ...</p></blockquote></div><p> <br />Это об отдельной частной утилите, <strong>никакого</strong> отношения к обсуждаемой теме не имеющей.</p>]]></description>
			<author><![CDATA[null@example.com (Olej)]]></author>
			<pubDate>Wed, 15 Mar 2017 11:36:09 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=453374#p453374</guid>
		</item>
		<item>
			<title><![CDATA[Re: Объединение команд и обработка выходных данных в shell]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=453373#p453373</link>
			<description><![CDATA[<div class="quotebox"><cite>DiabloPC пишет:</cite><blockquote><p>Вот, придумал как сделать более наглядный пример параллельности:</p></blockquote></div><p><a href="http://www.gnu.org/software/parallel/">http://www.gnu.org/software/parallel/</a> наглядней не бывает :-)</p>]]></description>
			<author><![CDATA[null@example.com (i2ks)]]></author>
			<pubDate>Wed, 15 Mar 2017 11:00:33 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=453373#p453373</guid>
		</item>
		<item>
			<title><![CDATA[Re: Объединение команд и обработка выходных данных в shell]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=453368#p453368</link>
			<description><![CDATA[<div class="quotebox"><cite>Olej пишет:</cite><blockquote><p>Пример, по-моему, как-раз был хорош.</p></blockquote></div><p>Неособо.... Там, если вдуматься в логику работы получается немного не то... <br /><div class="termtitle" style="font-family: sans-serif; position:relative; height:auto; width:auto; background:#3A4061; color:#FFFFFF; padding: 1px;"><b> Консоль:</b></div>
<div class="termcont" style="font-family: Terminus; position:relative; height:auto; width:auto; overflow-x:scroll; white-space: nowrap ; overflow-y:auto;background:#000000; color:#4EF44E; line-height:1.2; padding: 3px; font-size: 1rem; max-height: 60vh">echo $i | grep -E [0-9] &amp;&amp; sleep1</div> Здесь получается pipe, затем, после успешного выполнения одного прохода, он завершается и выполняется <strong>sleep</strong>, а затем создается новый конвеер....<br />...по идее так....<br /><strong>*** Добавлено: 15th Mar 2017 11:35:37 am ***</strong></p><div class="quotebox"><cite>Olej пишет:</cite><blockquote><p> непонятно что писать в контекст поиска</p></blockquote></div><p>вотЬ вотЬ, собственно из-за этого у меня минут 20 и занял поиск того что в шапке&nbsp; <img src="https://linuxforum.ru/img/smilies/be.gif" alt="be" /><br /><strong>*** Добавлено: 15th Mar 2017 11:41:40 am ***</strong></p><div class="quotebox"><cite>Olej пишет:</cite><blockquote><p>Как легко видеть, это скопировано из выполняющихся терминалов ... а не пересказано от большого ума.</p></blockquote></div><p>Вот, придумал как сделать более наглядный пример параллельности в цикле:<br /><div class="termtitle" style="font-family: sans-serif; position:relative; height:auto; width:auto; background:#3A4061; color:#FFFFFF; padding: 1px;"><b> Консоль:</b></div>
<div class="termcont" style="font-family: Terminus; position:relative; height:auto; width:auto; overflow-x:scroll; white-space: nowrap ; overflow-y:auto;background:#000000; color:#4EF44E; line-height:1.2; padding: 3px; font-size: 1rem; max-height: 60vh">for i in 1 2 3 4 5; do $(echo echo $i; sleep 1) | grep -E [0-9]; done</div></p>]]></description>
			<author><![CDATA[null@example.com (DiabloPC)]]></author>
			<pubDate>Wed, 15 Mar 2017 09:41:40 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=453368#p453368</guid>
		</item>
		<item>
			<title><![CDATA[Re: Объединение команд и обработка выходных данных в shell]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=453367#p453367</link>
			<description><![CDATA[<div class="quotebox"><cite>DiabloPC пишет:</cite><blockquote><p>Походу прийдется =)</p></blockquote></div><p>Зачем же вы удалили приводимый вами пример?<br />Пример, по-моему, как-раз был хорош.</p><p>P.S. Как-раз <strong>синтаксис</strong> командной <strong>строки</strong> shell/bash стоило бы упорядочить и свести в краткую внятную справку, потому что это вещь хуже всего описанная по учебникам, и по которой трудно найти справку в поисковиках ... потому что непонятно что писать в контекст поиска.</p>]]></description>
			<author><![CDATA[null@example.com (Olej)]]></author>
			<pubDate>Wed, 15 Mar 2017 09:27:45 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=453367#p453367</guid>
		</item>
		<item>
			<title><![CDATA[Re: Объединение команд и обработка выходных данных в shell]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=453366#p453366</link>
			<description><![CDATA[<div class="quotebox"><cite>Olej пишет:</cite><blockquote><p>Учи матчасть!</p></blockquote></div><p>Походу прийдется =)</p>]]></description>
			<author><![CDATA[null@example.com (DiabloPC)]]></author>
			<pubDate>Wed, 15 Mar 2017 09:09:06 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=453366#p453366</guid>
		</item>
		<item>
			<title><![CDATA[Re: Объединение команд и обработка выходных данных в shell]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=453363#p453363</link>
			<description><![CDATA[<div class="quotebox"><cite>DiabloPC пишет:</cite><blockquote><p>В конвеере они выполняются последавательно, передавая STDOUT, на STDIN следующей програмы.</p></blockquote></div><p>Ну как же так? <img src="https://linuxforum.ru/img/smilies/ai.gif" alt="ai" /> <br />Вы таки сами себе так сильно противоречите (как сказали бы в Одессе):<br />- если бы <strong>процессы</strong> выполнялись последовательно...<br />- то при выполнении предыдущей - <strong>ещё</strong> нет никакого STDIN последующей ... некуда ничего <strong>передавать</strong>...<br />- а после завершения предыдущей - <strong>уже</strong> нет никакого STDOUT, он уже закрыт и ликвидирован ... откуда <strong>передавать</strong>.</p><p>Конвейеры в коде реализуются через POSIX API pipe, который может работать только между родственными <strong>параллельными</strong> процессами.<br /><strong>*** Добавлено: 15.03.2017 11:21:03 ***</strong></p><div class="quotebox"><cite>DiabloPC пишет:</cite><blockquote><p>Olej,</p></blockquote></div><p>Учи матчасть! <img src="https://linuxforum.ru/extensions/bbcode_smiles/img/bd.gif" alt="bd" /></p><p><strong>*** Добавлено: 15.03.2017 11:23:16 ***</strong></p><div class="quotebox"><cite>DiabloPC пишет:</cite><blockquote><p>В конвеере они выполняются последавательно, передавая STDOUT, на STDIN следующей програмы.</p></blockquote></div><p>А та глупость, которую вы имеете в виду, записывалась бы так:<br /><div class="termtitle" style="font-family: sans-serif; position:relative; height:auto; width:auto; background:#3A4061; color:#FFFFFF; padding: 1px;"><b> Консоль:</b></div>
<div class="termcont" style="font-family: Terminus; position:relative; height:auto; width:auto; overflow-x:scroll; white-space: nowrap ; overflow-y:auto;background:#000000; color:#4EF44E; line-height:1.2; padding: 3px; font-size: 1rem; max-height: 60vh"><br />$ prog1 &gt;xxx ; prog2 &lt;xxx<br /></div></p><div class="quotebox"><cite>DiabloPC пишет:</cite><blockquote><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;вот довольно наглядно показано выполнение конвеера. И где же здесь параллельность?</div><div class="fancy_spoiler"></div></div></blockquote></div><p><div class="termtitle" style="font-family: sans-serif; position:relative; height:auto; width:auto; background:#3A4061; color:#FFFFFF; padding: 1px;"><b> Консоль:</b></div>
<div class="termcont" style="font-family: Terminus; position:relative; height:auto; width:auto; overflow-x:scroll; white-space: nowrap ; overflow-y:auto;background:#000000; color:#4EF44E; line-height:1.2; padding: 3px; font-size: 1rem; max-height: 60vh"><br />[olej@dell 14]$ cat | tee x | tee y<br />...<br /></div><br /><div class="termtitle" style="font-family: sans-serif; position:relative; height:auto; width:auto; background:#3A4061; color:#FFFFFF; padding: 1px;"><b> Консоль:</b></div>
<div class="termcont" style="font-family: Terminus; position:relative; height:auto; width:auto; overflow-x:scroll; white-space: nowrap ; overflow-y:auto;background:#000000; color:#4EF44E; line-height:1.2; padding: 3px; font-size: 1rem; max-height: 60vh"><br />[olej@dell own_LSD2_12]$ ps -A | tail -n30<br />...<br />10150 pts/2&nbsp; &nbsp; 00:00:00 cat<br />10151 pts/2&nbsp; &nbsp; 00:00:00 tee<br />10152 pts/2&nbsp; &nbsp; 00:00:00 tee<br />10189 pts/11&nbsp; &nbsp;00:00:00 ps<br />10190 pts/11&nbsp; &nbsp;00:00:00 tail<br />...<br /></div><br />Как легко видеть, это <strong>скопировано</strong> из выполняющихся терминалов ... а не пересказано от большого ума. <img src="https://linuxforum.ru/img/smilies/az.gif" alt="az" /></p>]]></description>
			<author><![CDATA[null@example.com (Olej)]]></author>
			<pubDate>Wed, 15 Mar 2017 08:28:42 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=453363#p453363</guid>
		</item>
		<item>
			<title><![CDATA[Re: Объединение команд и обработка выходных данных в shell]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=453362#p453362</link>
			<description><![CDATA[<p><strong>Olej</strong>,&nbsp; </p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;вот довольно наглядно показано выполнение конвеера. И где же здесь параллельность?</div><div class="fancy_spoiler"><p><span class="postimg"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/52/Process_output_chaining_via_pipes.ru.svg/584px-Process_output_chaining_via_pipes.ru.svg.png" alt="https://upload.wikimedia.org/wikipedia/commons/thumb/5/52/Process_output_chaining_via_pipes.ru.svg/584px-Process_output_chaining_via_pipes.ru.svg.png" /></span></p></div></div>]]></description>
			<author><![CDATA[null@example.com (DiabloPC)]]></author>
			<pubDate>Wed, 15 Mar 2017 08:18:33 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=453362#p453362</guid>
		</item>
		<item>
			<title><![CDATA[Re: Объединение команд и обработка выходных данных в shell]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=453361#p453361</link>
			<description><![CDATA[<div class="quotebox"><cite>DiabloPC пишет:</cite><blockquote><p>Как они могут выполняться параллельно</p></blockquote></div><p>Вот так <img src="https://linuxforum.ru/img/smilies/bf.gif" alt="bf" /> <br /></p><div class="quotebox"><cite>DiabloPC пишет:</cite><blockquote><p>если каждая последующая команда ждет результатов работы первой?</p></blockquote></div><p>Никто никого не ждёт.</p>]]></description>
			<author><![CDATA[null@example.com (Olej)]]></author>
			<pubDate>Wed, 15 Mar 2017 08:13:40 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=453361#p453361</guid>
		</item>
		<item>
			<title><![CDATA[Re: Объединение команд и обработка выходных данных в shell]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=453360#p453360</link>
			<description><![CDATA[<div class="quotebox"><cite>Olej пишет:</cite><blockquote><p>В конвейере программы выполняются параллельно.</p></blockquote></div><p>Как они могут выполняться параллельно если каждая последующая команда ждет результатов работы предыдущей?</p>]]></description>
			<author><![CDATA[null@example.com (DiabloPC)]]></author>
			<pubDate>Wed, 15 Mar 2017 08:12:16 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=453360#p453360</guid>
		</item>
		<item>
			<title><![CDATA[Re: Объединение команд и обработка выходных данных в shell]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=453359#p453359</link>
			<description><![CDATA[<div class="quotebox"><cite>DiabloPC пишет:</cite><blockquote><p>В конвеере они выполняются последавательно,</p></blockquote></div><p>В конвейере программы выполняются <strong>параллельно</strong>.</p>]]></description>
			<author><![CDATA[null@example.com (Olej)]]></author>
			<pubDate>Wed, 15 Mar 2017 08:11:04 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=453359#p453359</guid>
		</item>
	</channel>
</rss>
