シェルスクリプト記号一覧
何年も前に作ろうと思って途中まで作って放置していた記号一覧。Google Gemini の力を借りて完成させてみた。
table:シェルスクリプト記号一覧
記号 意味 使用例
#! スクリプトの先頭に記述し、実行するインタプリタを指定する(シバン) #!/bin/bash
# コメント(行末まで無視される) # コメントです
@(#) what コマンドで参照するメタ情報を記述する # @(#) Version 1.0
$ 変数の値を参照する / 特殊変数 $var, $1
${ } 変数の展開。デフォルト値の指定や文字列操作(置換・切り出し等)が可能 ${var:-default}, ${#var}
~ ホームディレクトリ(チルダ展開) cd ~/bin
\` 特殊文字のエスケープ、または改行の打ち消し(コマンドの継続) echo \"Hi\", cd \`
' ' 強力なクォート。内部の変展開やコマンド実行をすべて無効化し、文字列として扱う '$(date)'(そのまま表示)
" " 弱いくクォート。内部の変展開やコマンド実行を許可しつつ、スペースなどを保護する "$(date)"(日付が表示)
@ 全ての引数を個別の文字列として展開する("$@") for arg in "$@"
* 全ての引数を一つの文字列として展開する / 任意の文字列(ワイルドカード) echo "$*", ls *.txt
? 直前のコマンドの終了ステータス($?) / 任意の一文字(ワイルドカード) echo $?, ls file?.txt
; コマンドの区切り(左から右へ順番に実行する) cd /tmp; ls
;; case 文における各パターンの処理の終端を示す pattern) echo "match";;
: ヌルコマンド。何もしないが常に成功(終了ステータス0)を返す : > file.txt
( ) サブシェル(別プロセス)を生成してコマンドを実行する (cd /tmp; ls)
{ } 現在のシェルでコマンドをグループ化する / ブレース展開(文字列の生成) { ls; date; }, echo {A,B}.txt
cmd コマンド置換(バッククォート)。実行結果を変数などに代入する res=date
$(cmd) コマンド置換。バッククォートより推奨される形式(入れ子が可能) res=$(date)
(( )) 算術式の評価(数値計算や比較を行う) (( i++ )), (( a > b ))
$(( )) 算術式を展開し、その計算結果を返す echo $(( 1 + 2 ))
| パイプ。標準出力を次のコマンドの標準入力に渡す ls | grep .sh
|& パイプ(Bash 4+)。標準出力と標準エラー出力の両方を次のコマンドに渡す cmd |& grep "error"
|| 論理和(OR)。前のコマンドが「失敗」した時のみ実行する cmd1 || cmd2
&& 論理積(AND)。前のコマンドが「成功」した時のみ実行する cmd1 && cmd2
! 論理否定(NOT)。ステータスを反転させる / 履歴展開 if ! grep "A" f; then, !!
& コマンドをバックグラウンドで実行する sleep 10 &
- 短いオプション / 標準入力・出力を示す / 直前のディレクトリ ls -l, cat -, cd -
-- 長いオプション / オプション解釈の終端を示す --help, rm -- -file
> 標準出力をファイルにリダイレクト(上書き) ls > list.txt
>> 標準出力をファイルにリダイレクト(追記) ls >> list.txt
2> 標準エラー出力をファイルにリダイレクト ls /nodir 2> error.log
2>&1 標準エラー出力を標準出力に統合する cmd > out.log 2>&1
&> 標準出力と標準エラー出力の両方をファイルにリダイレクト cmd &> all.log
< 標準入力をファイルから読み込む cat < file.txt
<< ヒアドキュメント。指定した終端文字列までを入力とする cat << EOF
<<- ヒアドキュメント。行頭のタブ文字を無視する cat <<- EOF
<<< ヒアストリング。文字列をそのまま標準入力として渡す grep "a" <<< "apple"
<(cmd) プロセス置換(入力)。コマンド出力をファイルとして扱う diff <(ls A) <(ls B)
>(cmd) プロセス置換(出力)。ファイルへの書き込みをコマンドに渡す tee >(grep "ERR" > f)
= 変数への代入 / 文字列比較(等しい) var=1, [ "$a" = "$b" ]
!= 文字列比較(等しくない) [ "$a" != "$b" ]
== 文字列比較([[ ]] 内やBashの [ ] で使用) [[ "$a" == "a*" ]]
=~ [[ ]] 内での正規表現マッチング [[ "$a" =~ ^[0-9]+$ ]]
[[ ]] 拡張テストコマンド。高機能な条件判定(推奨) [[ $a -gt 1 ]]
[ ] テストコマンド。標準的な条件判定 / 文字クラス [ $a -gt 1 ], ls [a-z]*