Bash でアスタリスクを展開させないようにする
Bash のコマンド中に、アスタリスク *
を「文字列」として認識させたい場合があったりする。
# 以下のような場合は「アスタリスク展開」をさせたいが…
$ cp ./* ../../dest/
# 以下のコマンドでは「アスタリスク」を文字として使いたい
$ set_char *
(set_char
というコマンドは存在しないが、こういう用途があったとして…という例)
アスタリスクを展開させることを、ワイルドカード展開とか、Asterisk Expansion とか呼んだりするが、コレを無効化する方法。
シングルクォートで囲む
手っ取り早いのは、引数をシングルクォートで囲むこと。
$ set_char '*'
バックスラッシュでエスケープする
次に、バックスラッシュ文字を付与してエスケープしてやる方法。
$ set_char \*
set -f
か set -o noglob
を指定する
set -f
か、set -o noglob
を実行してからコマンドを書けば、ワイルドカード展開が無効になる。
$ set -f
# もしくは
$ set -o noglob
# ワイルドカード展開されずに実行できる
$ set_char *
# 元に戻すには以下のいずれか
$ set +f
$ set +o noglob
覚えた。