LoginSignup
4
7

More than 1 year has passed since last update.

Linuxコマンドで使う記号

Last updated at Posted at 2022-05-11

Linuxのコマンドを使う際によく大なり記号(>)や小なり記号(<)、パイプ(|)が出てくるけどこれってなんだ?

コマンドを連結するパイプ(|

役割:|の前にあるコマンドの出力を、|の後にあるコマンドの入力とする

$ echo "hello world"
hello world

echoは入力したものをそのまま出力してくれるコマンド)

ここでは"hello world"と打って画面に標準出力しました($マークはコマンドプロンプトです)。

その結果をrevコマンドの標準入力として実行したのが次です:

$ echo "hello world" | rev
dlrow olleh

revは入力した文字列を逆さまにして返すコマンド)

つまり上の例では echoコマンドの出力を直接revコマンドに入力したということです。

ちなみに、パイプは複数個繋げることが出来ます。

>を使ってファイルに出力する

役割:コマンドの実行結果を指定のファイルへ直接出力してくれる

$ echo "hello world" > result.txt

このように実行すると、result.txtに「hello world」が書き込まれます。

続けて、

$ echo "holy shit" > result.txt

と実行すると、result.txtに「holy shit」が上書きされます。すなわち先に書き込んだ「hello world」は消えてしまいます。

追記をするには>の代わりに>>を使います。

$ echo "hello world" > result.txt
$ echo "holy shit" >> result.txt

このように実行すれば、result.txtには「hello world」と「holy shit」の両方が書き込まれます。

>|の合わせ技

command1 < file.txt | command2

これは、file.txtの内容をcommand1への入力とし、そしてcommand1の出力をcommand2の入力とするという意味。

大なり記号と数字

(ここからは応用です)

「標準入力」・「標準出力」・「標準エラー出力」にはそれぞれ次のように番号が割り振られています。

意味 番号
標準入力 0
標準出力 1
標準エラー出力 2

そして、大なり記号>は、実は1>のように数字の"1"が省略されています。

同様にして2>も使えるんです。

つまり

$ command 2> error.txt

とすると、commandを実行した際に表示されたエラーの内容が、error.txtに出力されます。

以下は、存在しないコマンドkjfklsajfを実行した例です:

$ kjfklsajf
zsh: command not found: kjfklsajf

$ kjfklsajf 2> error.txt

$

一回目の実行では「zsh: command not found: kjfklsajf」とエラーである旨が表示されました。しかし、二回目ではそのエラーを2>を使ってerror.txtに出力したため、結果的にerror.txtに「zsh: command not found: kjfklsajf」が書き込まれました。

また、エラー出力を追記するなら2>>を使えばよいということです。

標準出力と標準エラー出力を同じファイルへ

command > file.txt 2>&1

これは「file.txtに標準出力と標準エラー出力を書き込む」という意味です。

末尾にある2>&1より、標準エラー出力先は、現在の標準出力先、つまりfile.txtということです。

標準出力と標準エラー出力を同じファイルに書き込みたい場合は特別な記法があり

command &> file.txt

と実行すれば実現できます。

(追記)引数を表す変数

変数名 説明
$0 0番目の引数(ファイル名)
$1 1番目の引数
$2 2番目の引数(2番目以降も同様)
$# 引数の個数(ファイル名はカウントされない)
$@ すべての引数(スペース区切り)
$* すべての引数(区切りは環境変数IFSで指定されてるもの)
$? 直前のコマンドの終了ステータス
4
7
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
4
7