「シェルスクリプトの基礎 - 入出力」の版間の差分

📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

 
(同じ利用者による、間の3版が非表示)
303行目: 303行目:
  <span style="color:yellow">warn 'Warning message'</span>
  <span style="color:yellow">warn 'Warning message'</span>
  <span style="color:green">info 'Information message'</span>
  <span style="color:green">info 'Information message'</span>
<br>
==== 標準出力 / 標準エラー出力の抑制 ====
<code>>1>/dev/null</code>は、標準出力を破棄する。<br>
<syntaxhighlight lang="sh">
./script.sh 1>/dev/null
</syntaxhighlight>
<br>
<code>>2>/dev/null</code>は、標準エラー出力を破棄する。<br>
<syntaxhighlight lang="sh">
./script.sh 2>/dev/null
</syntaxhighlight>
<br>
また、<code>2>&-</code>でも、標準エラー出力を閉じることができる。<br>
<syntaxhighlight lang="sh">
./script.sh 2>&-
</syntaxhighlight>
<br>
==== ジョブ番号の出力の抑制 ====
ジョブ番号の出力を非表示にするには、いくつかの方法がある。<br>
<br>
* サブシェルを使用する。
*: 括弧でコマンドを囲むことにより、サブシェルで実行されてジョブ番号の出力を抑制する。
*: または、<code>$()</code>でコマンドを囲むことにより、サブシェルで実行される。
*: (aplay $HOME/Login.wav > /dev/null 2>&1 &)
*: $(aplay $HOME/Login.wav > /dev/null 2>&1 &)
<br>
* <code>disown</code>コマンドを使用する。
*: ジョブがシェルのジョブ制御から切り離され、<u>ジョブ完了メッセージのみ</u>が非表示となる。
*: aplay ~/Sample.wav > /dev/null 2>&1 & disown
<br>
* シェルのオプションを変更する。
*: シェルスクリプトの冒頭に以下を追加することにより、ジョブ制御を無効にできる。
*: これにより、バックグラウンドジョブの状態変化の通知が抑制される。
*: <code>set +m</code>
<br><br>
<br><br>


554行目: 588行目:
  > HOGE HOGE
  > HOGE HOGE
<br>
<br>
プロセス置換に使用するコマンドは、単一のコマンドのみではなく、<br>
プロセス置換に使用するコマンドは、単一のコマンドのみではなく、セミコロン区切りの複数コマンド、パイプやネストしたプロセス置換も指定可能である。<br>
セミコロン区切りの複数コマンド、パイプやネストしたプロセス置換も指定可能である。<br>
<br>
以下の例では、diffコマンドを使用して、2つの入力ストリームの差分を表示している。<br>
# echo "aaa"; echo "bbb"
#: まず、aaaとbbbという2行からなる入力ストリームを生成する。
# < (echo "aaa"; echo "bbb")
#: 上記の2行の入力ストリームになる。
#: <はdiffコマンドへのリダイレクトを意味しており、この入力ストリームをdiffの最初の入力として使用する。
# cat <(echo "aaa") | cat <(echo "BBB")
#: <()はプロセス置換を意味する。
#: つまり、括弧内のコマンドの出力をファイルのように扱うことができる。
#: echo "aaa"の出力をcatに渡して、さらに、echo "BBB"の出力をcatに渡して、2つの出力を連結している。
#: 結果として、aaaとBBBという2行のストリームができる。
# echo "ccc"
#: cccという1行のテキストを生成する。
# < (cat <(echo "aaa") | cat <(echo "BBB"); echo "ccc")
#: この括弧内では、上記3.と4.を組み合わせて、aaa、BBB、cccの3行からなるストリームを生成している。
#: そして、<でこのストリームをdiffコマンドの2番目の入力としてリダイレクトしている。
<br>
したがって、このコマンド全体では、aaaとbbbの2行からなるストリームと、aaa、BBB、cccの3行からなるストリームの差分をdiffコマンドで表示している。<br>
  # 実行
  # 実行
  diff < (echo "aaa"; echo "bbb") < (cat <(echo "aaa") | cat <(echo "BBB"); echo "ccc")
  diff < (echo "aaa"; echo "bbb") < (cat <(echo "aaa") | cat <(echo "BBB"); echo "ccc")
567行目: 619行目:
  > ccc
  > ccc
<br><br>
<br><br>
{{#seo:
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux
|image=/resources/assets/MochiuLogo_Single_Blue.png
}}


__FORCETOC__
__FORCETOC__
[[カテゴリ:シェルスクリプト]]
[[カテゴリ:シェルスクリプト]]