コマンドで生成されたファイルをディレクトリに保存する方法

コマンドで生成されたファイルをディレクトリに保存する方法

パラメータを使用して名前付きディレクトリにファイルを移動する必要があります。

これまでファイルをディレクトリに移動する方法について作業してきました。

mkdir "$3"
cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 255 > $(shuf -n 1 /usr/share/dict/french)

これまでは機能しますが、このファイルをユーザーがパラメータに指定したディレクトリに移動する必要があります$3find数秒前に生成されたファイルを選択するためにコマンドを試しましたが、n他のファイルも選択できるため、実際にはそれほど効率的ではありません。

ベストアンサー1

fromというディレクトリを作成していますが、$3現在ディレクトリにファイルを作成しています。

新しいディレクトリにファイルを作成するには、そのディレクトリの名前にリダイレクトするだけです。

mkdir "$3"
tr -dc 'A-Za-z0-9' </dev/urandom | head -c 255 >"$3/$(shuf -n 1 /usr/share/dict/french)"

または、読みやすくするためにコンテンツを分離してください。

dir=$3

mkdir -p -- "$dir" || exit 1

fname=$(shuf -n 1 /usr/share/dict/french)

tr -dc 'A-Za-z0-9' </dev/urandom | head -c 255 >"$dir/$fname"

ここでは$3、存在しないサブディレクトリパスが含まれている場合は、フルパスが生成されます(;へ-pの呼び出しを追加して、mkdirmkdir いいえパスが既にある場合は失敗します。)私もパスの前に次のものを付けました。-- もしかしての最初の文字$3はaです。それ以外の場合は、コマンドラインオプションの終わりを示す混乱が発生する可能性-がありますmkdir--呼び出しが失敗すると、ゼロ以外の終了状態で終了しますmkdir

おすすめ記事