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}
これらのどれも追加の拡張を必要としないため、mkdir
3つの引数で実行されます-p
。 、および現在のディレクトリに作成されます。/root/backups/{db
dirs}
{db
/root/backups
dirs}
スペースを削除すると、目的の動作が得られます。