1.メタキャラクター
シェルにおいて特殊な意味を持つ文字のことで、主にファイル名やディレクトリ名のパターンマッチングに使用されます。
以下に主なメタキャラクタの説明と種類を表にまとめていますが、とりあえずこれだけ覚えておけば、実務で困ることは無いです。
尚、正規表現と混同しがちですが、主な違いは以下の点。
- 用途:正規表現はより複雑に広範なテキストマッチングオプションがある。
- 使用:メタキャラクターは特定の環境(例えばUNIX/LINUXシェル)に特化している。
- 範囲: 正規表現よりメタキャラクター限定され、目的も単純明快。
メタキャラクター | 説明 |
* | 任意の文字列にマッチします(ゼロ文字を含む) |
? | 任意の一文字にマッチします |
[…] | 括弧内の任意の一文字にマッチします。例えば、[abc]はa、b、cのいずれか一文字とマッチします。 |
[!…] | 括弧内にない任意の一文字にマッチします。例えば、[!abc]はa、b、c以外の任意の一文字とマッチします。 |
{…} | 中括弧内のカンマで区切られた文字列のいずれかにマッチします。例えば、{txt,jpg}はtxtまたはjpgとマッチします |
~ | ホームディレクトリを指します。 |
\ | 直後のメタキャラクタをエスケープし、その文字自体を指します。例えば、*は文字*自体とマッチします。 |
^ | 行の始まりを指します。 |
$ | 行の終わりを指します。 |
メタキャラクーの利用例
1.全ての.txtファイルをリスト表示する
ls *.txt
2.aまたはbまたはcで始まるファイルをリスト表示する
ls [abc]*
3.configという文字を含まない全ての.jsonファイルをリスト表示する
ls [!c]*[!o]*[!n]*[!f]*[!i]*[!g]*.json
4.複数の特定のファイル拡張子を持つファイルをリスト表示する
ls *.{txt,pdf,docx}
2.リダイレクト
Linuxの「リダイレクト」は、標準入力、標準出力、または標準エラー出力をファイルや他のプログラムへ向けるために使用される機能。
これにより、コマンドの出力をファイルに保存したり、一つのプログラムの出力を別のプログラムの入力として使用することが可能になります。
以下に、リダイレクトの主要なタイプを表にまとめます。これだけ覚えればOK。
リダイレクトタイプ | 説明 |
> | 指定されたファイルに標準出力を書き込みます。既存のファイルがある場合は上書きします。 |
> | 指定されたファイルに標準出力を追加書き込みします。ファイルがない場合は新たに作成します。 |
< | 指定されたファイルから標準入力を読み込みます。 |
2> | 標準エラー出力を指定されたファイルにリダイレクトします。 |
2>> | 標準エラー出力を指定されたファイルに追加して書き込みます。 |
&> | 標準出力と標準エラー出力の両方を指定されたファイルにリダイレクトします。 |
&>> | 標準出力と標準エラー出力を指定されたファイルに追加して書き込みます。 |
<<終了文字 | 終了文字が現れるまで標準入力へ渡す |
リダイレクトの利用例
1.コマンドの出力をファイルに保存する
ls -l /var/log > logs.txt
2.エラーメッセージをファイルにリダイレクトする
grep 'error' /var/log/syslog 2> errors.txt
3.標準出力と標準エラー出力を同じファイルにリダイレクトする
./configure &> build.log
3.パイプ、その他の特殊文字
Linuxの「パイプ」は、一つのプログラムやコマンドの出力を別のプログラムの入力に直接渡すための機能で、複数のコマンドを連結して複雑なコマンドを実行することができます。
その他にも覚えておいた方がいい特殊文字をまとめてご紹介。
コマンド | 説明 |
コマンド1|コマンド2 | 一つのプログラムやコマンドの出力を別のプログラムの入力に直接渡す。 (利用例:ls -l | grep “error”) |
コマンド1;コマンド2 | コマンド1に続け、コマンド2を実行 |
コマンド1&&コマンド2 | コマンド1が正常の場合のみ、コマンド2を実行 |
コマンド1|| コマンド2 | コマンド1が異常の場合のみ、コマンド2を実行 |
‘ | シングルクォーテーションの中は全て文字列と解釈される |
” | ダブルクォーテーションの中に変数がある場合、変数展開される |
` | バッククォーテーションの中にコマンドがあれば、そのコマンドを実行した結果が展開される |
以上、メタキャラクター、リダイレクト、パイプと特殊文字はこれだけ覚えればOK。