8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【初心者向け】Unixのリダイレクションについて

Last updated at Posted at 2018-12-08

Unixのリダイレクション機能とは

Unixのシェルはコマンドの入出力を切り替える機能を持っている。
これがリダイレクション。

デフォルトでは標準入力はキーボード、標準出力は画面に割り当てられているが、
これを変更することができる。

標準出力をファイルにリダイレクトする

以下の書式を使えば標準出力をリダイレクトできる。

【コマンド】 > 【ファイルのパス】

例)今月のカレンダーをcal.txtに書き出す

例として、今月のカレンダーをcal.txtというファイルに書き出します。

$ cal > cal.txt

cat で確認してみる

$ cat cal.txt

結果はこう

cal.txt
   December 2018
Su Mo Tu We Th Fr Sa
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

「>」の注意点

既に存在するファイルに対してリダイレクションを行うと、そのファイルの中身が警告なしで消去されてしまう。(上書きされるので、元の内容が消えてしまう。)

では、では消去させずに追記させるにはどうしたら良いか?
答えは「>>」を使う。

ファイルに追加する「>>」

依存のファイルを消去せずに、内容を追加するには「>>」を使う。
なお、存在しないファイルに対して「>>」を使用すると新たなファイルを生成する。
つまり存在しないファイルに対する「>」と「>>」の働きは同じ。

github使ったことある人はみんな見たことあるハズ

実はこれgithubでリポジトリ作成した時に、表示されるんです。

echo "# test" >> README.md   // ←これ
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/USER_NAME/REPOSITORY_NAME.git
git push -u origin master

一行目のecho "# test" >> README.mdこれは正にファイルに追加する「>>」これです。
出力の方はこの辺にして、入力いきます。

標準入力をファイルにリダイレクトする

以下の書式を使えば標準入力をリダイレクトできる。

【コマンド】 < 【ファイルのパス】

と言っても、これの使用機会は少ない。
なぜならコマンドの引数でファイルを指定できるので、わざわざ使う必要がないから。
例えばこれは同じ結果になる。

// catコマンドの引数を使用
$ cat cal.txt

// リダイレクション機能を使用
$ cat > cal.txt

標準出力と標準入力を同じファイルにリダイレクト出来ない

標準出力を入力と同じファイルにリダイレクトすると、中身が消える。
同じファイルに上書きしようとしてこんな操作をしてしまうと中身が消えてしまう。

$ cat cal.txt > cal.txt

リダイレクションのまとめ

その他もまとめるとこうなる。

記号 説明
> 標準出力のリダイレクション(ファイルが存在していれば上書き)
>> 標準出力のリダイレクション(ファイルが存在していれば追加)
< 標準入力のリダイレクション
2> 標準エラー出力のリダイレクション(ファイルが存在していれば上書き)
2>> 標準エラー出力のリダイレクション(ファイルが存在していれば追加)
>& 標準出力と標準エラー出力を同じファイルにリダイレクション

参考

Linuxをあまり理解せずに使って分かった気になってたので、以下の本で体系的に再学習しています。(アフィ貼ってないです。)

8
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?