Linuxの入出力 のバックアップソース(No.1)

#author("2020-12-06T09:51:32+09:00","default:k1rou","k1rou")
*Linuxの入出力 [#ldc6a6d0]

**入出力の基本 [#e9e10385]
-連続実行
--<command1>; <command2>;

-並列実行
--<command> &

**パイプ [#f7b70d4a]
-パイプライン
--<command1> | <command2> ※コマンドの実行結果(標準出力)を別のコマンドの標準入力に渡す

-tee コマンド
--標準入力を標準出力とファイルに出力する。

**リダイレクト(リダイレクション) [#x8200f15]
-標準出力/標準エラー出力/標準入力

***基本 [#j0722b38]
-コマンドの実行結果(標準出力)をファイルに出力
--<command> > <file> ※上書
--<command> >> <file> ※追記

-コマンドの実行結果(標準出力と標準エラー出力の両方)をファイルに出力
--<command> >& <file> ※上書
--<command> >>& <file> ※追記

-コマンドへの標準入力をファイルとしてコマンドを実行
--<command> < <file>

-特定の文字列が現れるまで入力を続ける(ヒアドキュメント)
--<command> << <string>
--例:EOF+[Enter]が入力されるまでキー入力を受ける
 cat << EOF ※入力内容は画面に出力
 cat > <file> << EOF ※入力内容はファイルに出力

***出力先にファイルディスクリプターを指定 [#e9d0c6cf]
-ファイルディスクリプター
--0 -標準入力
--1 -標準出力
--2 -標準エラー出力
--n -任意の入出力先

-コマンドの出力先:標準出力
-->&1
 echo "tdout" >&1

-コマンドの出力先:標準エラー出力
-->&2
 echo "tderr" >&2

***出力のパターン [#b6ae04af]
-画面:標準出力と標準エラー出力の両方を出力
--何も指定しない
 sh ./test.sh

-画面:標準出力と標準エラー出力の両方を出力(ファイル:標準出力を出力)
--tee を使う
 sh ./test.sh | tee file.log

-ファイル:標準出力と標準エラー出力の両方を出力(画面:何も出力しない)
--標準出力と標準エラー出力の出力先にファイルを指定
--"&>"を使う
 sh ./test.sh &> file.log
--"2>&1"を使う
 sh ./test.sh > file.log 2>&1 ※上書き
 sh ./test.sh >> file.log 2>&1 ※追記

-ファイル:標準出力を出力(画面:標準エラー出力を出力)
--標準出力先にファイルを指定
--">"または"1>"を使う
 sh ./test.sh > file.log
 sh ./test.sh 1> file.log

-ファイル:標準エラー出力を出力(画面:標準出力を出力)
--標準エラー出力先にファイルを指定
--"2>"を使う
 sh ./test.sh 2> file.log

-出力を破棄
--出力先に"/dev/null"を指定
--標準出力を破棄(画面:標準エラー出力を出力)
 sh ./test.sh > /dev/null
 sh ./test.sh 1> /dev/null
--標準エラー出力を破棄(画面:標準出力を出力)
 sh ./test.sh 2> /dev/null
--標準出力と標準エラー出力の両方を破棄(画面:何も出力しない)
 sh ./test.sh &> /dev/null
 sh ./test.sh >/dev/null 2>&1

**Linuxコマンド [#j94f6598]
***echo [#g054a53c]
-環境変数や指定した文字列を標準出力に出力する
-echo $[変数名]
 echo $abc ※変数を解釈(変数値を出力)
 echo '$abc' ※シングルクォーテーション →文字列と解釈(変数を解釈しない)
 echo "$abc" ※ダブルクォーテーション →変数を解釈(変数値を出力)
 echo '$abc' ※バックスラッシュ →コマンドと解釈(変数値をコマンドとして実行)
 
 echo -e ※改行を扱う
 echo -e \\n ※改行文字の指定方法1
 echo -e "\n" ※改行文字の指定方法2
 echo -e '\n' ※改行文字の指定方法3
 echo -n ※末尾を改行しない

***tee [#p4ac261a]
-標準入力を標準出力とファイルに出力する。
-<command> | tee <filename> ※コマンドの実行結果をファイルに出力するとともに、標準出力(デフォルトは画面)に出力する
 tee -a ※ファイルに追記する

***xargs [#qabdb477]
-標準入力から受け取った文字列を引数に指定して、与えられたコマンドを実行する
-使い方例
 ls | xargs rm
 find . -type f -name <keyword> | xargs rm

**参照 [#ya3c9aad]
-[[Linuxコマンド]]
-[[Linuxの環境変数]]