gpt4 book ai didi

linux - Shell - 将环境变量与 ccrypt 一起使用

转载 作者:太空宇宙 更新时间:2023-11-04 09:05:48 24 4
gpt4 key购买 nike

我在使用名为 'ccrypt' 的程序时遇到问题用于加密文件。我的使用方式如下:

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

其中 -e 表示程序以加密模式运行。我的问题如下:

该命令的手册说 -E 用于使用以下语法从环境变量中读取加密的密码:

-E var

因此我将其设置为我想要的密码,如下所示:

cryptograph="Example_passphrase"

但是,当我运行如上所示的代码时,出现如下错误信息:

ccrypt: environment variable Example_passphrase does not exist.

有人知道我做错了什么吗?

编辑:感谢您的回答,导出变量并删除“$”有效,但现在我面临一个新问题:

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

shell 说:

ccrypt: {p;q}: No such file or directory

但是,如果我将 $i 换成一个数字,则该程序可以在一定程度上运行。此处使用变量“i”的正确语法是什么?

最佳答案

不要忘记导出环境变量(在导出之前,它只是一个变量,而不是环境变量)。

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

仅指定名称至关重要(无 $)。否则,变量的值——密码本身——在命令行参数中并且对 ps 等可见。我们可以讨论环境是否安全(想想 /proc 文件系统),但它比在命令行中包含密码短语本身要好几个步骤。


从评论来看,您最好做以下事情:

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

这样做的一个主要优点是它回避了文件名中的空格和其他奇怪字符的所有问题。如果 ccrypt 命令接受多个文件,您可以将引用的 ';' 替换为 +(不需要引号)和单个命令将加密所有文件。

关于linux - Shell - 将环境变量与 ccrypt 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11621075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com