3

ファイルをバックアップするときは、タイムスタンプを追加します。

例えば:

$ DATE=$(date +%F)
$ cp file{,.$DATE.bk}
$ ls
file  file.2012-06-20.bk

bash 変数があり、RANDOMエコーするたびに異なる値が返されます。

$ echo $RANDOM
20511
$ echo $RANDOM
12577
$ echo $RANDOM
32433

そのような種類の変数をどのように定義できますDATEか?

4

5 に答える 5

3

あなたは間違った角度から問題に取り組んでいます。バックアップを作成するスクリプトを作成します。

#!/bin/sh
for f; do
    cp "$f" "$f.$(date +%F).bk"
done

これは、基本的にワンライナーで.profile散らかしたくない場合に関数として使用するのに十分簡単です。$HOME/bin

于 2012-06-20T07:37:55.453 に答える
3

コマンドステートメントを保持し、使用時に評価できます。

$ DATE="date +%F"
$ echo $DATE
date +%F
$ echo `$DATE`
2012-06-20
于 2012-06-20T06:00:20.797 に答える
1

Bashにはそのような機能はありません。getter/setter/properties が必要な場合、および一般的に OO を必要とするすべてのものが必要な場合は、ksh93 の規律関数を使用する必要があります。

#!/usr/bin/env ksh

function DATE.get {
    .sh.value=$(printf '%(%F)T')
}

cp file{,".${DATE}.bk"}

おそらくそれぞれのロード可能な拡張インターフェースを介する場合を除いて、これを実行できる他のシェルを知りません。

于 2012-06-20T07:51:12.347 に答える
1

Bash には、シェルが開始されてからの秒数を含む、自動的に更新される変数があります。

値を設定すると、そのベースから更新されます。欠点は、エポック秒のタイムスタンプ形式を使用することです。を使用dateして元に戻すことができます。

ここにデモがあります:

$ bash
$ echo "$SECONDS"
5
$ date +%s; SECONDS=$(date +%s); echo "$SECONDS"
1340191083
1340191083
$ sleep 10
$ date +%s; echo "$SECONDS"
1340191097
1340191097
$ date -d "@$SECONDS"
Wed Jun 20 06:18:24 CDT 2012
$ date -d "@$SECONDS" +%F
2012-06-20

余分な秒数は、Bash の起動時間とコマンドの入力にかかる時間によるものです。

$ bash -c 'echo $SECONDS'
0
于 2012-06-20T11:23:43.660 に答える
0

提供するには、bash ソース コードを編集する必要があります。ただし、それを行う前に、誰もが日付を希望する形式を知っていることを確認してください.

于 2012-06-20T05:55:31.897 に答える