読者です 読者をやめる 読者になる 読者になる

すいわび

疑問に思ったことや日常をつらつら書いていくブログです。(´・ω・`)

シェルスクリプト、コマンドの基本

自分用のメモとしてまとめました。

shebang シンバ

スクリプトを書く際にどのインタプリタを使うかを指定するための記述です。

#!/bin/bash

-v : コマンドの名前をそのコマンドの実行前に標準エラー出力に出力する。ちなみにvはverbose(饒舌)のv。

-x : bashの実行をトレースして逐一標準エラー出力に出力する。

ワイルドカード

ワイルドカードの記号は以下になります。

* : 文字列全部

? : 任意の1文字

[文字] : [ ]の中に含まれる文字のうちどれか1つ

[!文字] : [ ]の中に含まれない文字

$ echo .*

上記の挙動としては、

  1. bashが「.*」をドットの後に任意の文字列が来るファイルがディレクトリと解釈
  2. bashディレクトリのファイルから上の条件を満たすファイルやディレクトリを抽出して置き換える。 1.置き換えられた文字列がechoに入力される。
  3. 入力された文字列をechoが出力する。

[文字]は範囲指定が可能です。

[0-9] : 数字

[a-z] : 小文字アルファベット

[A-Z] : 大文字アルファベット

[0-9a-zA-Z] : 数字、アルファベット

ブレース展開

ブレース展開とは、{ }の中にカンマ区切りで文字列を書くことでそれぞれの文字列を{ }外の文字列と組み合わせて展開することができる機能のことです。

$ echo {apple,orange,pineapple}juice
applejuice orangejuice pineapplejuice

$ mkdir {a,b}{c,d}
$ ls
ac ad bc bd

カンマの後ろにスペースが存在すると機能しないので注意。

リダイレクト

リダイレクトとは,入出力の方向を変えるものです。

ファイル記述子

wikipediaより

ファイル記述子(ファイルきじゅつし、File Descriptor)とは、プログラミングにおいてファイルへの参照を抽象化したキーである。ファイルディスクリプタあるいはFDとも呼ばれる。Microsoft Windowsでは、「ファイルハンドル」がほぼ相当するが、技術的には異なるオブジェクトである。

…意味がよくわかりませんが、とりあえずリダイレクトやパイプ接続先を識別するためのものと理解しておきます。

0番 : 標準入力

1番 : 標準出力

2番 : 標準エラー出力

記号

command > file : コマンドの標準出力をファイルに出力(1>file)

command < file : 標準出力をファイルから入力(0<file)

command 2> file : コマンドの標準エラー出力をファイルに出力

command 2>&1 : コマンドの標準エラー出力を標準出力の接続先にする

command >&2 : コマンドの標準出力を標準得たー出力の接続先にする

command &> file : コマンドの標準出力と標準エラー出力をファイルに出力する