【问题标题】:Block command history access in shell在 shell 中阻止命令历史记录访​​问
【发布时间】:2017-12-10 03:56:26
【问题描述】:

我不想在 shell 中访问 shell 命令历史记录。它必须出于临时目的而阻塞,然后我才能释放该阻塞。

例如当我在 shell 中按下 up arrow 时,它会显示历史中存在的最后一个命令,但是当我按下 shell 上的向上箭头时,我不想访问历史记录

我们可以阻止历史记录访​​问它吗?

我尝试过set +o history,但目的不同。

shell:> ifconfig
shell:> #some shell.py
Login: #when I press up arrow, "ifconfig" comes here as that was last command
Password:

对于登录:它只需要访问输入,这里不要访问历史记录。 接受登录名和密码后,我可以再次访问历史记录。

【问题讨论】:

  • 不要在shell.py 中使用readline(或从干净的​​读取历史记录开始)
  • 我不能使用clean history,它将删除当前会话的所有历史记录。在临时阻止它之后,我必须再次使用历史记录@hek2mgl
  • 这真的是关于[bash]和[shell]的问题,还是关于[python]和[readline]的问题?
  • [bash] 和 [shell] @gboffi,有什么疑问吗??
  • 谁写了shell.py?你还是第三方?你可以访问它的源代码吗? — 恕我直言,问题在于shell.py 滥用 readline 库来读取用户名和密码。用户名应使用简单的input 读取,密码应使用 Python 标准库中的getpass 模块读取

标签: python bash python-2.7 shell readline


【解决方案1】:

移除向上箭头绑定

bind -r '\e[A'

恢复

bind '"\e[A": previous-history'

检索到previous-history的所有绑定

bind -p | grep previous-history

bind -q previous-history

另见

help bind

【讨论】:

  • 它只阻止up arrow,但是当我们点击ctrl+p时,这将再次访问历史记录@NahuelFouilleul
  • 你想阻止所有绑定到以前的历史或阻止最后一个命令添加到历史列表中?
  • 所有绑定到以前的历史@NahuelFouilleul
  • 我在使用subprocess.call() 运行它时遇到/bin/sh: 1: bind: not found @NahuelFouilleul 的错误
  • 我可以在python shell@NahuelFouilleul 中使用相同的吗
【解决方案2】:

您可以通过编辑~/.bashrc 并添加以下内容来禁用向上箭头键:

bind '"\e[A": '

含义:将Up Arrow Key绑定到任何东西

(您需要重新加载或重新打开会话)

要重新启用它,只需删除该行并重新加载.bashrc 文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 2013-05-12
    • 2011-06-16
    • 2012-01-25
    • 1970-01-01
    • 2013-08-17
    相关资源
    最近更新 更多