#標準入出力とは
- 標準入力
- プログラムの標準の出力
- キーボードが通常使われる
- 標準出力
- プログラムの標準の出力
- ディスプレイが通常使われる
- 標準エラー出力
- プログラムのエラーメッセージの出力
- ディスプレイが通常使われる
Linuxではコマンドの入出力先を抽象化することで、入出力先を柔軟に変更できる
#【>】 リダイレクト
入出力先を変更する機能
- 入力のリダイレクト
- キーボードの代わりにファイルから入力する機能
- 同じ入力を頻繁する場合、入力する情報をファイルにまとめておき、リダイレクトすることで入力が楽になり、ミスも少なくなる
# /etc/hostsファイルを入力元にして`cat`コマンドを実行
$ cat < /etc/hosts
# 実行結果
1 127.0.0.1 localhost
2 ::1 localhost6
- 出力のリダイレクト
- コマンドの実行結果を画面に表示するのではなくファイルに保存する機能
# lsコマンドの出力先をls.txtにして保存
$ ls > output.txt
$ cat > output.txt
# 出力結果
ダウンロード ドキュメイント
- 標準入出力の数値
- OSが識別するために用いる識別子
入出力 | 数値 |
---|---|
標準入力 | 0 |
標準出力 | 1 |
標準エラー出力 | 2 |
- エラー入力のリダイレクト
- エラー結果を画像に表示するのではなくファイルに保存する機能
-
出力とエラー出力は別で、エラー出力は
「2>」
を使用
$ ls /hoge 2> error.txt
$ cat error.txt
# 出力結果
ls: /hogeにアクセスできません:
- 出力とエラー出力をまとめる
- 出力をリダイレクトした後に
「2>&1」
と記述する
# 標準エラー出力を標準出力と一緒にする場合
$ ls / /hoge > output.txt 2>&1
$ cat output.txt
# 出力結果
ls: /hogeにアクセスできません: # 「 /hoge 」 の結果
bon boot dev etc home lib # 「 / 」 の結果
- リダイレクトで追記する
-
「>」
でリダイレクト指定するとファイルを上書きする -
「>>」
でリダイレクト指定するとファイルに追記する
# output.txtファイルに「Hello!」という文字列を追加する場合
$ echo Hello! >> output.txt
echo・・・画面に文字列を表示する時に使用するコマンド
#/dev/null
入力先として指定しても何も返さず、出力先として指定してもデータは消えて何も表示されないスペシャルファイルのこと
- 入力先として指定
- 入力が何もない状態になる
- コマンドのテストなどで入力を空にしたい時に使用する
- 出力先として指定
- 結果が何も表示されない
- 結果が大量にあり、結果を非表示にしたい時に使用する
# 入力先として指定した場合
$ cat < /dev/null
# 出力結果
$ # 何も表示されない
# 出力先として指定した場合
$ ls / > /dev/null
# 出力先として指定
$ # 何も表示されない
# エラーの出力結果を非表示にする場合
$ ls /hoge 2> /dev/null
#【 | 】パイプライン
- 複数のコマンドを連携させる機能
- コマンドの標準出力を別のコマンドの標準入力につなげる
# 構文
コマンド | コマンド
# binディレクトリ配下の大量ファイルをスクロール表示で確認する場合
$ ls /bin | less
# 「systemd」という文字列に絞り込んで表示させる場合
$ ls /bin | grep systemd
#pbcopy(mac限定)
標準入力の内容をクリップボードにコピーするコマンド
# 「 hoge 」という文字をコピー
$ echo hoge | pbcopy
- 例)公開鍵の内容をコピーする場合
.ssh
# GitHubに公開鍵を追加する際にコマンドを使用
$ pbcopy < id_rsa_github.pub
#pbpaste(mac限定)
- クリップボードの内容を標準出力に書き出すコマンド
$ pbpaste
# 出力結果
# hoge
##参考教材