【问题标题】:How to escape the '@' symbol in bash?如何在bash中转义'@'符号?
【发布时间】:2013-11-22 23:43:07
【问题描述】:

我正在尝试在 bash 中添加带有身份验证参数的代理,其中我的密码包含 @ 符号。在 bash 中添加带身份验证的代理的语法如下:

export http_proxy=http://username:password@host:port_no/

因此,每当我尝试添加包含@ 的密码时,使用此代理的应用程序都会尝试连接到密码中后跟@ 符号的字符串。

例如,如果我的密码是p@ssword,主机是proxy.college.com,应用程序会尝试连接到ssword@proxy.college.com

我尝试使用\ 转义@ 符号,但这并没有解决。 如何在不更改密码的情况下完成这项工作?

注意:此问题与How can i escape an arbitrary string for use as a command line argument in bashHow to escape the at sign in bash 不同,因为这专门处理在已经存在@ 符号的命令中出现的“@”符号,并且@ 用于将给定字符串分隔为特定参数。

P.S.:虽然使用 HTML 代码 %40 代替 @ 可行,但我更喜欢可读性更高的方法。

【问题讨论】:

  • 我会更改密码 ;-)
  • 这样做不是很不干净吗?
  • 为什么你需要这样写你的登录密码?什么应用程序迫使您这样做?这可能是一个可怕的安全问题。请阅读您正在使用的应用程序的man 页面,检查是否有可能以不同的方式发送密码,或者以其他方式切换到另一个应用程序。
  • 是的,我接受这是一个安全问题,但大多数应用程序,包括apt-get 应用程序都需要/etc/apt/apt.conf 文件中的用户名和密码。其他人则从/etc/environment/home/$USER/.bashrc 中指定的环境变量中获取它。虽然不是这个问题的一部分,但我很乐意接受其他已知的安全方法。
  • 这不是关于 shell 的问题(它不需要在这种情况下转义 @),而是关于使用 http_proxy 变量的任何程序。如果 HTML 编码是让它接受文字 @ 的唯一方法,那就是你必须做的。

标签: bash proxy at-sign


【解决方案1】:

您可以使用%40 代替@ 符号。

【讨论】:

  • 我的错,我忘了说我不喜欢使用 HTML 代码,难道没有办法逃脱吗?
猜你喜欢
  • 1970-01-01
  • 2016-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多