如何从终端读取隐藏的输入并将其通过管道传递给另一个命令
How to read hidden input from terminal and pipe it to another command
我希望能够在终端中安全地键入文本并将其通过管道传输到另一个命令:
- 不记录在终端历史中
- 输入时隐藏
- 不记录在任何文件或环境变量中
- 记忆时间尽可能短
理想情况下:
- 在 linux
上使用常用安装工具
- 易于使用
echo
- 无需创建任何 scripts/files
- 可以通过管道传输到其他命令
非安全输入示例
echo "secret" | wc -c
几乎是我想要的:
read -s | wc -c
基本上与您输入密码的方式相同 sudo
和类似的。
我的用例
echo "secret" | gpg --encrypt --armor -r 1234567890ABCDEF | xclip
我正在寻找一种具有上述几点限制的方法。知道我要找的东西不存在也是我会接受并标记的答案。
我根据接受的答案创建了别名
alias secnote="{ read -s; printf %s $REPLY; } | gpg --encrypt --armor -r 123467890ABCDEF | pbcopy"
这是你想要达到的目标吗?
$ read -s # I type `secret`
$ echo $REPLY
secret
$ printf %s $REPLY | wc -c
6
$ unset REPLY
$ echo $REPLY
# empty now
或者你想要 one-liner 这样的 :
{ read -s -p "Input a secret: "; printf %s $REPLY; } | wc -c
如果定义别名:
alias readp='{ read -s -p "Input a secret: "; printf %s $REPLY; }'
那么你可以readp | wc -c
我希望能够在终端中安全地键入文本并将其通过管道传输到另一个命令:
- 不记录在终端历史中
- 输入时隐藏
- 不记录在任何文件或环境变量中
- 记忆时间尽可能短
理想情况下:
- 在 linux 上使用常用安装工具
- 易于使用
echo
- 无需创建任何 scripts/files
- 可以通过管道传输到其他命令
非安全输入示例
echo "secret" | wc -c
几乎是我想要的:
read -s | wc -c
基本上与您输入密码的方式相同 sudo
和类似的。
我的用例
echo "secret" | gpg --encrypt --armor -r 1234567890ABCDEF | xclip
我正在寻找一种具有上述几点限制的方法。知道我要找的东西不存在也是我会接受并标记的答案。
我根据接受的答案创建了别名
alias secnote="{ read -s; printf %s $REPLY; } | gpg --encrypt --armor -r 123467890ABCDEF | pbcopy"
这是你想要达到的目标吗?
$ read -s # I type `secret`
$ echo $REPLY
secret
$ printf %s $REPLY | wc -c
6
$ unset REPLY
$ echo $REPLY
# empty now
或者你想要 one-liner 这样的 :
{ read -s -p "Input a secret: "; printf %s $REPLY; } | wc -c
如果定义别名:
alias readp='{ read -s -p "Input a secret: "; printf %s $REPLY; }'
那么你可以readp | wc -c