<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>標準エラー出力 &#8211; スグブログ</title>
	<atom:link href="https://sugublog.org/tag/%E6%A8%99%E6%BA%96%E3%82%A8%E3%83%A9%E3%83%BC%E5%87%BA%E5%8A%9B/feed/" rel="self" type="application/rss+xml" />
	<link>https://sugublog.org</link>
	<description>ブログ運営について発信中</description>
	<lastBuildDate>Sun, 02 Jun 2024 08:34:28 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://sugublog.org/wp-content/uploads/2021/07/icon_20210703-min-150x150.png</url>
	<title>標準エラー出力 &#8211; スグブログ</title>
	<link>https://sugublog.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Linux】teeコマンドの使い方！オプションや標準エラーもまとめます</title>
		<link>https://sugublog.org/linux-tee/</link>
					<comments>https://sugublog.org/linux-tee/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Sat, 25 May 2024 15:48:28 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[サーバ]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tee]]></category>
		<category><![CDATA[標準エラー出力]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=6850</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/11/DB_1103-2-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>Linuxサーバーのteeコマンドの具体的な使い方やオプションについて記述します。 コマンドの結果をファイルに書き込みする事は、リダイレクトでできますが、標準出力にも表示して確認したいといった事はないでしょうか？ tee [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/11/DB_1103-2-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>
<p>Linuxサーバーの<span class="swl-marker mark_orange"><strong><span class="swl-inline-color has-swl-deep-01-color">teeコマンド</span></strong>の具体的な使い方やオプション</span>について記述します。</p>



<p>コマンドの結果をファイルに書き込みする事は、リダイレクトでできますが、標準出力にも表示して確認したいといった事はないでしょうか？</p>



<p class="is-style-icon_good has-border -border01">teeコマンドを使用すると、<strong>コマンドの結果を標準出力表示とファイルに書き込み</strong>してくれます。</p>



<p>またteeコマンドでエラーのメッセージが、<strong><span class="swl-marker mark_yellow">ファイルに出力されない</span></strong>といって困ってはいないでしょうか？</p>



<p class="is-style-icon_good has-border -border01">teeコマンドでエラーのメッセージも、ファイルに出力できるようにする方法もあります。</p>



<p>Linuxのteeコマンドについて困っている人は、この記事を読めば解決できます。</p>


<div class="p-blogParts post_content" data-partsID="5908">
<p>筆者はWindowsサーバーやLinuxサーバーの運用構築を11年間以上おこなってきました。その経験を元に知識を公開していきます！</p>
</div>


<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9330904718533231"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-9330904718533231"
     data-ad-slot="8455594968"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">Linuxサーバーのteeコマンドの使い方</h2>


<div class="wp-block-image is-style-photo_frame">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2022/01/women0109-2-1024x683.jpg" alt="teeコマンド" class="wp-image-4876" srcset="https://sugublog.org/wp-content/uploads/2022/01/women0109-2-1024x683.jpg 1024w, https://sugublog.org/wp-content/uploads/2022/01/women0109-2-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2022/01/women0109-2-768x512.jpg 768w, https://sugublog.org/wp-content/uploads/2022/01/women0109-2.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h3 class="wp-block-heading">teeコマンドの使い方</h3>



<p>Linuxサーバーのteeコマンドの仕組みとしては、標準入力から受けとった文字列を標準出力（ディスプレイ）とファイルに記述する仕組みです。</p>



<p>Linuxサーバーの<strong><span class="swl-inline-color has-swl-deep-01-color">teeコマンドの使い方の基礎</span></strong>を以下に示しておきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>コマンド | tee オプション ファイル名</code></pre></div>



<p><span class="swl-bg-color has-swl-deep-01-background-color">コマンドの結果とエラー内容</span>（エラーがあれば）を<span class="swl-inline-color has-swl-deep-01-color">標準出力に表示</span>します。それと<span class="swl-bg-color has-swl-deep-02-background-color">結果のみ</span><span class="swl-marker mark_yellow">（エラーメッセージは含まない）</span><span class="swl-inline-color has-swl-deep-02-color">ファイルに記述</span>します。</p>



<p class="is-style-balloon_box">結果とエラー内容のどちらも、標準出力とファイルに記述したい場合はリダイレクトを使用します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>コマンド 2&gt;&1 | tee オプション ファイル名</code></pre></div>



<p class="is-style-icon_pen">リダイレクトの「2&gt;&amp;1」は、結果とエラーどちらもファイルに記述するという意味です。</p>



<h3 class="wp-block-heading">実践：teeコマンドの使用例</h3>



<p>では実際に<span class="swl-marker mark_orange"><strong>teeコマンド</strong>を使用</span>して、ディスプレイとファイルにコマンド結果とエラーメッセージが表示されるか確認します。</p>



<p>まずは「exist-file」ファイルを作成します。</p>



<p class="is-style-icon_pen">Linuxのコマンドでファイルを作成する方法は以下の記事を参照下さい</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/DB0804-3-300x210.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/linux-centos-file-create-command/">【Linux】CentOSでコマンドでファイル作成する方法｜エラー対処法あり</a>
						<span class="p-blogCard__excerpt">Linuxでテキストファイル作成したいです。 Linuxサーバーでファイル作成するのは基本ですね。コマンドでテキストファイル作成のやり方を教えますよ。 という事で今回はL&#8230;</span>					</div>
				</div>
			</div>
		</div>


<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>touch exist-file</code></pre></div>



<p>作成できたかlsコマンドで確認します。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/11/programing_1122-7-300x200.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/linux-ls-command/">【Linux】lsコマンドの使い方！オプションなどを使用する</a>
						<span class="p-blogCard__excerpt">Linuxサーバーでlsのコマンドの使い方をまとめます。 Linuxサーバーでディレクトリやファイルの表示方法での悩み Linuxサーバーでディレクトリ配下のファイルも表示した&#8230;</span>					</div>
				</div>
			</div>
		</div>


<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>[root@localhost ~]# ls | grep exist-file
exist-file</code></pre></div>



<p>ファイルが作成されたことを確認できました。</p>



<p>では<span class="swl-marker mark_orange">lsコマンドでファイル名を表示した内容を、<strong><span class="swl-inline-color has-swl-deep-01-color">teeコマンドで確認</span></strong>します。</span></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>ls exist-file | tee tee.txt</code></pre></div>



<p>teeコマンドで「tee.txt」ファイルに書き込みしてみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>[root@localhost ~]# ls exist-file | tee tee.txt
exist-file</code></pre></div>



<p><span class="swl-inline-color has-swl-deep-01-color">標準出力に結果が表示</span>されています。ファイルに書き込みされているか確認します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>[root@localhost ~]# cat tee.txt
exist-file</code></pre></div>



<p class="has-border -border01"><span class="swl-marker mark_orange">コマンド結果が<strong>標準出力</strong>と<strong>ファイル</strong>で確認できました！</span></p>



<p>では<span class="swl-marker mark_yellow">存在しないファイルを指定して、<span class="swl-bg-color has-swl-deep-01-background-color">エラー</span>を出してみます。</span></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>[root@localhost ~]# ls no-exist-file | tee tee.txt
ls: no-exist-file にアクセスできません: そのようなファイルやディレクトリはありません</code></pre></div>



<p><span class="swl-marker mark_orange"><span class="swl-bg-color has-swl-deep-01-background-color">エラーメッセージ</span>が標準出力に表示されました。</span>ファイルを確認してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>[root@localhost ~]# cat tee.txt
[root@localhost ~]#</code></pre></div>



<p class="is-style-big_icon_caution">エラーメッセージはファイルには記述されていません。</p>



<p>先程説明したように<strong><span class="swl-inline-color has-swl-deep-03-color">エラーメッセージもファイルに記述したい場合</span></strong>は<strong>リダイレクト</strong>を使用します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>[root@localhost ~]# ls no-exist-file 2&gt;&1 | tee tee.txt
ls: no-exist-file にアクセスできません: そのようなファイルやディレクトリはありません</code></pre></div>



<p>先程と同様にエラーメッセージが標準出力に表示されました。ファイルを確認してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>[root@localhost ~]# cat tee.txt
ls: no-exist-file にアクセスできません: そのようなファイルやディレクトリはありません</code></pre></div>



<p class="has-border -border01"><span class="swl-marker mark_orange">コマンド結果がエラーでも、標準出力とファイルで確認できました！</span></p>



<h2 class="wp-block-heading">teeコマンドのオプションについて</h2>


<div class="wp-block-image is-style-photo_frame">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="576" src="https://sugublog.org/wp-content/uploads/2021/11/programing_school1123-3-1024x576.jpg" alt="オプション" class="wp-image-4580" srcset="https://sugublog.org/wp-content/uploads/2021/11/programing_school1123-3-1024x576.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/programing_school1123-3-300x169.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/programing_school1123-3-768x432.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/programing_school1123-3.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p><strong>teeコマンド</strong>にも<strong><span class="swl-inline-color has-swl-deep-02-color">オプション</span></strong>があるのでまとめておきます。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>teeコマンドオプション</th><th>効果</th></tr></thead><tbody><tr><td>-a</td><td>上書きではなく<span class="swl-inline-color has-swl-deep-02-color">追記</span>する</td></tr><tr><td>-i</td><td>割り込みシグナルを無視する</td></tr></tbody></table><figcaption class="wp-element-caption">teeコマンドオプション一覧</figcaption></figure>



<h3 class="wp-block-heading">teeコマンドで上書きではなく追記する</h3>



<p><strong><span class="swl-inline-color has-swl-deep-01-color">デフォルトのteeコマンド</span></strong>ではファイルは<span class="swl-inline-color has-swl-deep-01-color">上書き</span>してしまいます。</p>



<p>今までのログを残したく<strong><span class="swl-inline-color has-swl-deep-01-color">追記したい場合はaオプション</span></strong>をつけましょう！</p>



<p>先程から「tee.txt」ファイルは上書きされていましたが、aオプションをつけてどうなるか確認します。</p>



<p>まずは現状の「tee.txt」ファイルの内容を確認しておきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>[root@localhost ~]# cat tee.txt
ls: no-exist-file にアクセスできません: そのようなファイルやディレクトリはありません</code></pre></div>



<p>先程のメッセージが残っています。ではteeコマンドで表示とファイル追記してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>[root@localhost ~]# ls exist-file 2&gt;&1 | tee -a tee.txt
exist-file

[root@localhost ~]# cat tee.txt
ls: no-exist-file にアクセスできません: そのようなファイルやディレクトリはありません
exist-file</code></pre></div>



<p class="has-border -border01">ファイルに<span class="swl-marker mark_orange">上書きではなく追記</span>されている事がわかります。</p>



<p><span class="swl-inline-color has-swl-deep-01-color">エラーメッセージ</span>の方も試してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>[root@localhost ~]# ls no-exist-file 2&gt;&1 | tee -a tee.txt
ls: no-exist-file にアクセスできません: そのようなファイルやディレクトリはありません

[root@localhost ~]# cat tee.txt
ls: no-exist-file にアクセスできません: そのようなファイルやディレクトリはありません
exist-file
ls: no-exist-file にアクセスできません: そのようなファイルやディレクトリはありません</code></pre></div>



<p class="has-border -border01"><span class="swl-inline-color has-swl-deep-01-color">エラーメッセージ</span>も<span class="swl-marker mark_orange">上書きではなく、追記</span>されています。</p>



<h2 class="wp-block-heading">teeコマンドで複数のファイルに追記する方法</h2>


<div class="wp-block-image is-style-photo_frame">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2022/06/retire_1-1024x683.jpg" alt="ファイルに追記" class="wp-image-5166" srcset="https://sugublog.org/wp-content/uploads/2022/06/retire_1-1024x683.jpg 1024w, https://sugublog.org/wp-content/uploads/2022/06/retire_1-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2022/06/retire_1-768x512.jpg 768w, https://sugublog.org/wp-content/uploads/2022/06/retire_1.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p><span class="swl-marker mark_orange"><strong>teeコマンド</strong>は<strong><span class="swl-inline-color has-swl-deep-03-color">複数のファイル</span></strong>に追記する事も可能です。</span></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>コマンド | tee ファイル名１ ファイル名２・・・</code></pre></div>



<p>複数のファイルに追記したい場合は、ファイルをスペース区切りで指定していく事です。</p>



<p>では複数のファイルに追記していきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>[root@localhost ~]# ls exist-file 2&gt;&1 | tee -a tee.txt tee2.txt tee3.txt
exist-file</code></pre></div>



<p>ファイルの内容を確認します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>[root@localhost ~]# cat tee.txt
ls: no-exist-file にアクセスできません: そのようなファイルやディレクトリはありません
exist-file
ls: no-exist-file にアクセスできません: そのようなファイルやディレクトリはありません
exist-file

[root@localhost ~]# cat tee2.txt
exist-file

[root@localhost ~]# cat tee3.txt
exist-file</code></pre></div>



<p class="has-border -border01">「tee.txt」ファイルにはコマンドの結果が末行に<span class="swl-inline-color has-swl-deep-02-color">追記</span>されています。その他<strong><span class="swl-inline-color has-swl-deep-03-color">複数のファイル</span></strong>にも<span class="swl-inline-color has-swl-deep-02-color">追記</span>されています。</p>



<p><span class="swl-inline-color has-swl-deep-01-color">エラーメッセージ</span>でも試してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>[root@localhost ~]# ls no-exist-file 2&gt;&1 | tee -a tee.txt tee2.txt tee3.txt
ls: no-exist-file にアクセスできません: そのようなファイルやディレクトリはありません</code></pre></div>



<p>ファイルをそれぞれ確認します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>[root@localhost ~]# cat tee.txt
ls: no-exist-file にアクセスできません: そのようなファイルやディレクトリはありません
exist-file
ls: no-exist-file にアクセスできません: そのようなファイルやディレクトリはありません
exist-file
ls: no-exist-file にアクセスできません: そのようなファイルやディレクトリはありません

[root@localhost ~]# cat tee2.txt
exist-file
ls: no-exist-file にアクセスできません: そのようなファイルやディレクトリはありません

[root@localhost ~]# cat tee3.txt
exist-file
ls: no-exist-file にアクセスできません: そのようなファイルやディレクトリはありません</code></pre></div>



<p class="has-border -border01">全てのファイルの末行に、<span class="swl-inline-color has-swl-deep-01-color">エラーメッセージ</span>が<span class="swl-inline-color has-swl-deep-02-color">追記</span>されています。</p>



<h2 class="wp-block-heading">まとめ：Linuxのteeコマンドの使い方</h2>


<div class="wp-block-image is-style-photo_frame">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2021/11/programing_school1123-1-1024x683.jpg" alt="まとめ" class="wp-image-4578" srcset="https://sugublog.org/wp-content/uploads/2021/11/programing_school1123-1-1024x683.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/programing_school1123-1-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/programing_school1123-1-768x512.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/programing_school1123-1.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Linuxサーバーのteeは、コマンドの結果を標準出力とファイルに記述できる。</p>



<p><strong><span class="swl-inline-color has-swl-deep-01-color">teeコマンドの使い方の基礎</span></strong>を以下に示しておきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>コマンド | tee オプション ファイル名</code></pre></div>



<p class="is-style-big_icon_caution">コマンドの結果がエラーの場合は、ファイルには書き込まれないので注意する。</p>



<p>エラーの場合も標準出力とファイルに記述したい場合は、「2&gt;&amp;1」とリダイレクトをつけます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>コマンド 2&gt;&1 | tee オプション ファイル名</code></pre></div>



<p><strong>teeコマンド</strong>にも<strong><span class="swl-inline-color has-swl-deep-02-color">オプション</span></strong>がありました。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>teeコマンドオプション</th><th>効果</th></tr></thead><tbody><tr><td>-a</td><td>上書きではなく<span class="swl-inline-color has-swl-deep-02-color">追記</span>する</td></tr><tr><td>-i</td><td>割り込みシグナルを無視する</td></tr></tbody></table><figcaption class="wp-element-caption">teeコマンドオプション一覧</figcaption></figure>



<p><span class="swl-marker mark_orange"><strong>teeコマンド</strong>は複数のファイルに追記する事も可能でした。</span></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>コマンド | tee ファイル名１ ファイル名２・・・</code></pre></div>



<p class="is-style-icon_good">Linuxのteeコマンドでエラーもファイルに追記したい。履歴を残したいので上書きではなく追記にしたい事から以下のコマンドを推奨します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>コマンド 2&gt;&1 | tee -a ファイル名</code></pre></div>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/linux-tee/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
