Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linuxでファイルに名前をつけるための変数の使用

Linuxでファイルに名前をつけるための変数の使用

  

最近、Linux管理者が作者に助けを求めました。彼は、彼らがLinuxオペレーティングシステムにOracle 10Gデータベースシステムを展開したと言いました。現在、彼らはデータベースシステムのデータポンプツールを使ってシステムからデータをバックアップしています。彼らは毎日このバックアップファイルを特定の場所にコピーしたいと考えています。この段階まで問題ありません。しかし彼らは、コピー処理中にバックアップファイルに変数名を付けることができることを望んでいます。曜日によって、1backup.dmp、2backup.dmpなどの名前が付けられます。最初の1と2は、曜日の意味を示します。あなたがこれを設定するならば、週に1サイクル。次の月曜日までに、新しいバックアップファイルは古いバックアップファイルを置き換えます。この場合、バックアップファイルによって占有されるハードディスク容量は制限なしで増加しません。

著者が、データベースをバックアップするためのバックアップ戦略を開発するために、Oracleが提供するバックアップツールを直接使用しないのは困惑しています。ただし、ファイルに名前を付けるために上記の変数を使用するには、それでも達成できます。彼らの企業のニーズに従って、作者はシステム管理者に実装方法の詳細な説明をしました。

まず、ファイル作成時間とシステム時間の関係。

変数を使用してファイルに名前を付けるとき(時間変数など)は、問題、つまりファイルの作成時刻とシステム時刻の関係に注意する必要があります。上記の要件として、ファイルが月曜日に作成された場合、ファイルは火曜日にコピーされました。それで、現時点でのファイルの名前は何ですか?それはファイル作成時にちなんで、またはコピーの時までに命名されますか。上記の要件を見れば、ファイル作成時間を使って名前を付ける方が合理的です。これは、この作成時間がデータベースのバックアップ時間を実際に反映しているためです。

次に、関連するコマンドパラメータが解決されました。

ファイルを別の場所にコピーして時間変数で名前を変更する場合は、次のコマンドを使用してcp mydb.log "(date%w)" mydb.logを実装します。 。このコマンドの意味は、mydb.logを(現在のディレクトリ内の)特定の場所にコピーして名前を変更することです。命名規則は、元のファイル変数の前に時間パラメーターを追加することです。これは、週の時間変数です。

"(date%w)"このパラメータは、曜日の時間変数です。ここでの時間は、参照ファイルがコピーされたときではなく、ファイルが作成されたときに基づいていることに注意してください。つまり、ファイルが水曜日に作成され、コピー時刻が木曜日の場合、この変数の値は4ではなく3になります。ファイルは3の時点で作成されたからです。私が最初にLinuxオペレーティングシステムに連絡し始めたとき、私はこの間違いを犯していました。作者がよくしたミスが皆を用心深いものにすることができると私は願っています。

また、上記のtimeパラメータは二重引用符で囲む必要があります。あなたがこれをしないなら、システムはこのコマンドにエラーがあることを促します。これは文法上の誤りです。そのため、システム管理者がこのコマンドをバッチプログラムで使用する場合は、事前テストを行うのが最善です。これらの文法の間違いは、たとえあなたが古いシステム管理者であっても、間違いを犯すのは簡単です。練習は真実をテストするための唯一の基準です。

「(date%w)」と「(date +%w)」が異なる細かい点がいくつかありますが、これは両方とも異なり、noと言えるでしょう。これは主にどんな場面が使用されているか見るためです。 CPコマンドで使用されている場合は、中央のプラスなし(+)プラス記号は同じです。ただし、他のコマンド状況では、中央のプラス記号を追加する必要があります。それ以外の場合、システムはエラーを表示します。私がECHO命令として私が以下で話したいと思うように、これに関して要件があります。

次に、Echoコマンドを使ってテストします。

システム管理者が彼が書いたコマンドパラメータについてよくわからない場合は、echoコマンドを使ってテストできます。 Echoコマンドは、環境変数の値または特定の変数の値を表示できます。実際、これらの変数はシステム内の環境変数です。以下のように。その日のシステム時刻を表示するには、echo $(date +%w)を使用してください。このコマンドは曜日のみを表示します。

このコマンドを使用しても、主に次の点で、cpコマンドの最終時間パラメータ間にはまだギャップがあります。

まず、echoコマンドを使用してシステム変数の値を表示したい場合は、変数の前に$記号を付ける必要があります。この記号を追加すると、システムはこれを環境変数、または環境変数から変換された変数と見なします。この記号を追加しないと、オペレーティングシステムはそれを認識しないため、この変数の値を表示することはできません。

次に、この変数では、中央に+記号を追加する必要があります。上の図に示すように、この+記号を含めないと、オペレーティングシステムは%wは無効なパラメータであるというエラーを表示します。しかし、cpコマンドでは、そのような必須の制限はありません。中央にこのプラス記号を追加しても同じ効果が得られます。ただし、パラメーターの精度を向上させるには、echoコマンドが認識できる形式に従うことが最善です。 echoコマンドはフォーマットを認識できるため、他のコマンドの間では一般的です。逆に、他のコマンドで使用できるセルは、echoなどのコマンドに対して必ずしも一般的なものではありません。したがって、記述されたスクリプトの移植性を向上させるためには、一般的な変数の記述方法を使用することが最善です。

Copyright © Windowsの知識 All Rights Reserved