0
0

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 1 year has passed since last update.

【学習】Linuxコマンド Day7

Posted at

おさらい

前回まで学習したことはこちらです。

今日学ぶこと

  • 標準入出力
  • リダイレクト
  • パイプライン

標準入出力

標準入出力とは、標準入力、標準出力、標準エラー出力の3つ
コマンドは標準入力からデータを受け取り、標準出力に結果を出力する。
エラー発生時は標準エラー出力に出力する。
入出力が何であるか、というところはコマンド自体は把握していない。
よって利用者が指定する必要がある。

リダイレクト

リダイレクトは標準出力を切り替えることを指す。
主にコマンドの出力先を端末からファイルに変更することが多い。

標準出力をファイルに変更する

$ pwd > test.txt
$ cat test.txt
/home/imagata

「>」を使用することにより右側に書いたファイルに標準出力をつなぐことができる。
本来pwdコマンドのみであれば、/home/imagataがすぐに端末に表示されるが、
この場合はtest.txtに出力されている。
出力先のファイル名がもし存在しない場合は新たに作成される。
この「>」は既存のファイルに対し上書きを行うが、「>>」を使用する場合は末尾に追加される。

$ pwd >> test.txt
$ cat test.txt
/home/imagata
/home/imagata

### 標準エラー出力のリダイレクト
「2>」という記号を用いることで標準エラー出力のリダイレクトが可能となる。
まずは通常通り(?)エラーを発生させてみる。

$ cat test2.txt
cat: test2.txt No such file or directory

test2.txtというファイル、ディレクトリは存在しない、というメッセージが表示されている。
もしこれをerror.txtというファイルにリダイレクトさせる場合は

$ cat test2.txt 2> error.txt
$ cat error.txt
cat: test2.txt No such file or directory

こちらについても「2>>」という記号を用いることで末尾に追加が可能。
今回例は省略。

/dev/null

リダイレクトとセットで使用すると便利なファイルに/dev/nullがある。
特殊なファイルで以下の特徴を持つ

  • 入力に指定するとデータを返さない
  • 出力に指定すると書き込まれたデータを破棄する

エラーにだけ注目したい場合、エラーを無視したい場合に使用されがち、ということなので、もう少し具体的にいうと
"エラーに注意したいが、他のメッセージが出てきてしまうと情報が多くて確認しづらい時"等に使えると思う。

$ cat test.txt > /dev/null
$ cat /dev/null

上記を実行しても何も表示されないことが確認できた。

パイプライン

パイプラインとはコマンドの標準出力に別のコマンドの標準出力をつなぐ機能のこと。パイプとも呼ばれる。
「|」を使って複数のコマンドを繋ぐ。
これを用いることで比較的複雑な操作を行う場合でも一行のコマンドラインで処理を書くことができる。
CLIの強みともいえる。
例:lsコマンドの標準出力をcatコマンドの標準出力につないで行番号付きで表示する。

$ ls / |v cat -n
     1 bin
     2 boot
     3 dev
     4 etc
     5 home
     6 lib
     7 lib64
     8 medeia
     9 mnt
    10 opt
    11 proc
    12 root
    13 run
    14 sbin
    15 srv
    16 sys
    17 tmp
    18 usr
    19 var

本来lsコマンドのみでは行番号は得られないが表示されていることが確認できた。

おつかれまでした

本日の学習のなかで/dev/nullやパイプラインがいかに作業を行う上で効率化につながるかはよく理解ができました。
しかし、咄嗟に使えるようになるためにはまだまだ実践的な学習が必要です。
Linuxで遊ぶ中で「このコマンドとこのコマンドをつなげられるのでは?」という閃きが発生し次第試してゆくことで上達すると考えます。それにCLIの強みを知ることができたのも今日の大きな収穫です。
プログラミングで文字列や記号の羅列に慣れているとはいえ、肌感が良いかといえばそうではない。
ただ、なぜそのように行うべきか、が今回の学習したことそのものより重要だと感じました。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?