mkdir -p 中かっこを使用したディレクトリの生成が正しくありません。

mkdir -p 中かっこを使用したディレクトリの生成が正しくありません。

Ubuntu Server 16.04 xenialで次のコードを実行しました。

mkdir -p /root/backups/{db, dirs}

他のシステムでは、3つのディレクトリをすべて作成することが非常に魅力的だったことを覚えています。

/root/backups/
/root/backups/db
/root backup/dirs

しかし、今回は結果は次のようになります。

/root/backups/
/root/backups/{db,

この結果が部分的で壊れたのはなぜですか?

答え1

BashはPOSIXシェルと同様にコマンドをトークンに分割今後拡張語(バッシュでは支柱の拡張を含む)。

mkdir -p /root/backups/{db, dirs}

スペースが含まれているため、コマンドは最初にトークン、およびmkdir-p分割されます/root/backups/{db,dirs}これらのどれも追加の拡張を必要としないため、mkdir3つの引数で実行されます-p。 、および現在のディレクトリに作成されます。/root/backups/{dbdirs}{db/root/backupsdirs}

スペースを削除すると、目的の動作が得られます。

関連情報