シェル標準出力はファイルの最後の行にリダイレクトされます。ファイルの最初の行に書き込む方法はありますか?
stdoutの内容は予測不可能なので、stdoutのデフォルトの動作を変更する必要があるかもしれませんが、それが可能かどうかはわかりません。
はい、タイムスタンプをファイルにリダイレクトする
echo `date` >> test.txt
デフォルトではファイルの最後の行に保存
Mon Aug 31 00:40:27 UTC 2020
Mon Aug 31 00:40:28 UTC 2020
Mon Aug 31 00:40:29 UTC 2020
Mon Aug 31 00:40:30 UTC 2020
目的の効果、出力をファイルの最初の行に保存
Mon Aug 31 00:40:30 UTC 2020
Mon Aug 31 00:40:29 UTC 2020
Mon Aug 31 00:40:28 UTC 2020
Mon Aug 31 00:40:27 UTC 2020
よろしくお願いします!
ベストアンサー1
endの代わりに先頭に日付を書きたい場合は、file
次のようにします。
{ date; cat file; } >file.new && mv file.new file
議論する
ファイルの先頭に新しいテキストを追加するには、ファイル全体を再作成する必要があります。ファイルの末尾に新しいテキストを追加するには、新しいテキストを作成します。
アンディ・ダルトン提案は、通常どおりファイルの末尾に追加し、それを使用して
tac file
ファイルを表示することです。これは良い提案です。echo `date` >> test.txt
より簡単で効率的な方法で置き換えることができますdate >> test.txt
。bash 4.3以降を使用している場合は、次の手順を実行します。チャールズ・ダフィー
printf '%(%c)T\n' -1 >>test.txt
より効果的だと指摘しました。校正器の周りのスペースは非常に重要です。これは
{
、両方とも}
シェルだからです。予約語(シェルに相対的キーワードスペースは必要ありません)。