0

ファイルの暗号化に使用される「ccrypt」というプログラムの使用に問題があります。私がそれを使用している方法は次のとおりです。

ccrypt -e -E $cryptograph `find . -type f | sed -n -e '$i{p;q}'`

ここ-eで、はプログラムが暗号化モードで実行されていることを意味します。私の問題は次のとおりです。

コマンドのマニュアルには、次の-E構文を使用して環境変数から暗号化のパスフレーズを読み取るために使用されると記載されています。

-E var

そのため、以下のように、必要なパスフレーズに設定しました。

cryptograph="Example_passphrase"

ただし、上記のようにコードを実行すると、次のようなエラーメッセージが表示されます。

ccrypt:環境変数Example_passphraseが存在しません。

誰かが私が間違っていることを知っていますか?

編集:答えてくれてありがとう、変数をエクスポートして「$」を削除してもうまくいきましたが、今は新しい問題に直面しています:

"sed -n -e '$i{p;q}'"

シェルは言う:

ccrypt:{p; q}:そのようなファイルやディレクトリはありません

ただし、$ iを数値と交換すると、プログラムはある程度機能します。ここで変数「i」を使用するための正しい構文は何ですか?

4

2 に答える 2

2

環境変数をエクスポートすることを忘れないでください(エクスポートされるまでは、環境変数ではなく単なる変数です)。

export cryptograph="Example_passphrase"
ccrypt -e -E cryptograph `find . -type f | sed -n -e '$i{p;q}'`

名前だけを指定することが重要です(no $)。それ以外の場合、変数の値(パスフレーズ自体)はコマンドライン引数にあり、psなどに表示されます。環境が安全かどうか(/procファイルシステムを考えてみてください)については議論できますが、パスフレーズ自体を含めるよりもいくつかの手順が優れています。コマンドラインで。


コメントから、次のようなことをするのが最善のようです。

find . -type f -exec ccrypt -e -E cryptograph {} ';'

これの主な利点の1つは、ファイル名の空白やその他の奇妙な文字に関するすべての問題を回避できることです。ccryptコマンドが複数のファイルを受け入れる場合は、おそらく引用符';'+(引用符は不要)に置き換えることができ、1つのコマンドですべてのファイルが暗号化されます。

于 2012-07-23T22:06:30.973 に答える
1

値ではなく、変数の名前を引数として使用してください。

ccrypt -e -E cryptograph `...`
于 2012-07-23T21:51:14.117 に答える