ファイルを生成するシェルコマンドがないのはなぜですか?

ファイルを生成するシェルコマンドがないのはなぜですか?

注:

はいいいえコマンドラインからファイルを作成する方法を尋ねる質問です!


私は何年もの間文書を作成するために使用してきましたが、touchその主な用途は他の用途であることを知りませんでした。コマンドラインからファイルを生成したい場合は、いくつかの可能性があります。

touch foo.bar
> foo.bar
cat > foo.bar
echo -n > foo.bar
printf '' > foo.bar

もっとたくさんあると確信しています。

しかし、実際には上記のコマンドのどれも実際にファイルを生成するように設計されていません。man touchこのコマンドは、ファイルのタイムスタンプを変更することをお勧めします(たとえば、.Unix(またはLinux)などの完全なオペレーティングシステムには、なぜファイル生成用に特別に設計されたコマンドはありませんか?

ベストアンサー1

空のファイルを作成する必要がほとんどないため、コマンドラインやシェルスクリプトにコンテンツをすぐに埋めないためだと言いたいと思います。

ファイルを作成してからI / Oリダイレクトを使用して1つの手順で実行できる場合、ファイルに書き込むことはまったく利点がありません。

本当に空のファイルを作成してアーカイブしたい場合は、これ> "${file}"よりも簡単ではないと思います。

長い話を短く:空のファイルを作成することは一般的に役に立たないので存在せず、もしあればそれを達成するための多数のオプションがすでにあるでしょう。

ちなみに、touchを使用することはファイルが存在しない場合にのみ機能しますが、リダイレクトを使用するオプションはファイルが存在しても常にファイルを切り捨てます(したがって、技術的にはこれらのソリューションは同じではありません)。> foo保存するのが好ましい方法であり、fork移植性echo -nが非常に低いため、通常は避けるべきです。

おすすめ記事