如何操作ProtonMail Bridge生成的pass超长文件名存储项
变量赋值报错原因
export $LONGDIRNAME=$(...)的写法存在语法错误,变量名前不需要加$符号。Bash执行时会先把$LONGDIRNAME展开为它的当前值(首次赋值时该变量为空),最终语句变成export =cHJv...,不符合变量定义的语法规则,因此抛出标识符无效的错误。
具体操作步骤
步骤1:正确获取长目录名并赋值
首先用ls获取目录名的同时去除输出自带的单引号:
# 方式1:用sed处理单引号 LONGDIRNAME=$(ls -1 .password-store/protonmail-credentials | sed "s/'//g") # 方式2:用Bash原生参数替换,性能更高 raw_dir=$(ls -1 .password-store/protonmail-credentials) LONGDIRNAME=${raw_dir//\'/}
步骤2:获取子目录下的存储项名称
pass操作不需要带.gpg后缀,因此获取文件名时要同时去掉单引号和后缀:
ENTRYNAME=$(ls -1 ".password-store/protonmail-credentials/$LONGDIRNAME" | sed "s/'//g" | sed 's/\.gpg$//')
步骤3:用pass正常操作存储项
路径参数用双引号包裹避免特殊字符影响:
# 查看凭证 pass show "protonmail-credentials/$LONGDIRNAME/$ENTRYNAME" # 复制密码到剪贴板 pass cp "protonmail-credentials/$LONGDIRNAME/$ENTRYNAME" # 其他pass操作(edit/rm等)同理替换命令即可
简化使用方案
可以把完整路径拼接为一个变量,后续直接调用即可:
PROTON_PASS_ENTRY="protonmail-credentials/$LONGDIRNAME/$ENTRYNAME" # 后续操作示例 pass show $PROTON_PASS_ENTRY
内容的提问来源于stack exchange,提问作者user242007
相关产品推荐
相关产品推荐

