2019年11月19日火曜日

コマンド実行の表示先について

概要

コマンド実行時の出力先の指定方法についての手法を整理します。

要点

  • 標準入出力
  • コマンドを実行した際の入出力には、標準入力(0)、標準出力(1)、標準出力エラー(2)の3種類あり、それぞれ番号に対応しています。

  • パイプ
  • コマンドを実行する際に「|」を使う事によって複数のコマンドを合わせて実行することができます。
    例えばdmesgコマンドを実行してその中から「Boot」という文字列を探したいときは以下のようにコマンドを実行します。

    
     $ dmesg | grep Boot
     [    0.000000] Booting Linux on physical CPU 0x0 ★「Boot」の文字列が入った行を抽出する。
     $
    
    

  • リダイレクト
  • コマンドを実行する際に「>」を使う事によってファイルの出力先を指定することができます。
    例えば、lsコマンドの実行結果をファイルに出力したい場合は以下のようにします

    
     $ ls > ls.txt  ★実行結果が画面出力しない
     $
     $ cat ls.txt  ★実行結果がファイル出力してる
     aaa.txt
     bbb.txt
     ls.txt
     $
    
    
    この時、「>>」を使えば、追記形式でファイル出力することができます。

    逆に「<」を使うと標準入力の切り替えを行うことができるし、
    「<<」を使うと指定した文字列を入力するまでファイルへの入力を行うことができます。
    これをヒアドキュメントと言いますが、あまり使わないかもしれません。

    以下は、「ccc」を入力するまでファイルへの入力を行う例です。

    
     $ cat > test.txt << ccc
     > aaa
     > bbb
     > ddd
     > eee
     > ccc ★「ccc」が入力されたから入力ここまで。
     $ cat test.txt
     aaa
     bbb
     ddd
     eee
     $
    
    
  • /dev/nullのファイルについて
  • /dev/nullファイルは特殊なデバイスファイルで、このファイルに書かれたものは全て消去されて、このファイルを読み込むと常にEOFが返ってきます。
    例えば以下のようにコマンドの実行結果を表示させたくないときに使います。

    
     $ ls  > /dev/null ★lsの結果を標準出力しない
     $
     $ ls  > /dev/null 2>&1 ★標準出力エラーの出力先を標準出力にして、結果を標準出力しない
     $
    
    

0 件のコメント:

コメントを投稿