コマンドを実行すると「無効なオプション」もしくは「invalid ~」のエラーになる

dateコマンドを実行すると「date: invalid date ~」とエラーになる

下記のコマンドを実行すると「date: invalid date ‘-7 days +%Y-%m-%d’」とエラーになります。見た目ではdateコマンドの構文は間違っていない用に見えます。

ただし、ネットにある記事の内容をコピーした際に、そのコマンド内に不可視文字(ゼロ幅スペースなど)が混入する場合があり、その際に上記のようなエラーが発生することがあります。

$ date -d "-7 days" +"%Y-%m-%d"
date: invalid date ‘-7 days +%Y-%m-%d’

不可視文字の確認方法

cat -A」 を利用すると、不可視文字があるかどうか確認することがきます。下記では「M-BM-」の不可視文字が混入しています

# 不可視文字がある場合
$ echo "date -d \"-7 days\" +\"%Y-%m-%d\"" | cat -
date -d "-7 days"M-BM- +"%Y-%m-%d"$

# 不可視文字がない場合
$ echo "date -d \"-7 days\" +\"%Y-%m-%d\"" | cat -A
date -d "-7 days" +"%Y-%m-%d"$

od -c」 を利用しても確認できます。下記のように302 240 のような 非ASCII文字 がある場合、不可視文字が含まれている可能性があります

# 不可視文字がある場合
$ echo "date -d \"-7 days\" +\"%Y-%m-%d\"" | od -c
0000000   d   a   t   e       -   d       "   -   7       d   a   y   s
0000020   " 302 240   +   "   %   Y   -   %   m   -   %   d   "  \n
0000037

# 不可視文字がない場合
$ echo "date -d \"-7 days\" +\"%Y-%m-%d\"" | od -c
0000000   d   a   t   e       -   d       "   -   7       d   a   y   s
0000020   "       +   "   %   Y   -   %   m   -   %   d   "  \n
0000036

不可視文字の削除方法

対策は、trコマンドで削除することもできますが、私の場合は不可視文字が入っている箇所を手動で打ち直して不可視文字を確実に取り除くことができます。

スポンサーリンク

0
0