標準入出力、リダイレクト、パイプ

実家からお歳暮でもらったであろうビールをかっさらってきて、

帰宅と同時に飲むのが至福のひとときな今日この頃。

 

 

さっそく緑化はじめてます。シェル系はここにためていこうと思います!

https://github.com/kin29/shell

 

▶︎標準入出力とは。

lsやcatなどの実行結果は、
指定しない限り、普通は画面に表示される。←これです!
デフォルトではそれぞれ以下のようになっている。
標準入力 → キーボード
標準出力 → 画面

こんな感じ

# キーボードで入力(標準入力)したものがそのままに出力(標準出力)される
echo hello!

 

▶︎リダイレクトとは。

「リダイレクト」を使うと、標準入出力を指定のファイルに変更することができる。

出力リダイレクト

画面(標準出力)でなく、ファイルに結果を出力する

# 「hello!」という出力結果を新規ファイルoutput.txtに出力
echo hello! > output.txt

#「>」は上書き
# dateコマンドの出力結果を既存ファイルoutput.txtに上書き
date > output.txt

#「>>」は追記
# 「add!」という出力結果を既存ファイルoutput.txtに追記
echo add! >> output.txt

入力リダイレクト

キーボード(標準入力)でなく、ファイルからの入力をコマンドに渡す

# cat output.txtと同じ結果
# cat 0< output.txtと同じ結果
cat < output.txt

echo 6+1 > input.txt
# bc 0< input.txtと同じ結果
bc < input.txt

 

▶︎パイプ「|」とは。

標準出力をコマンドに渡す

# 中間ファイルが不要となる 
# echo 6+1 > input.txt && bc < input.txt と同じ結果
echo 6+1 | bc

 

#余談

過去のコミット全部自分のものにしたい時

$ git filter-branch -f --env-filter "GIT_AUTHOR_NAME='名前';\
 GIT_AUTHOR_EMAIL='メールアドレス';\
 GIT_COMMITTER_NAME='名前';\
 GIT_COMMITTER_EMAIL='メールアドレス';" \
HEAD

過去のコミットを編集することは歴史をガラリとかえて未来に影響が大きいのであまりしないほうがいいです、はい。
けど今回グローバルネームでコミットしてしまっていたため変更しました。もちろん

$ git config --local user.name 名前
$ git config --local user.email "メールアドレス"

もしましたよ。

投稿者:

kin29man

農学部卒の4年目エンジニアです👩‍💻 PHPとGASが好きです!最近はラズパイにはまっています🍇

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です