- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
问题
我有一个 Python 脚本,当我从命令行运行它时,我不想在 .bash_history 中记录任何内容。
这是因为脚本使用了 Python argparse 库,它允许我直接从命令行将参数传递给 python 代码。
例如,我可以编写脚本,使其在脚本中使用“123456”作为值:
$ ./scriptname.py -n 123456
问题是我不想将值 123456 存储在 .bash_history 中。事实上,我宁愿一开始就不要将整个命令存储到 .bash_history 文件中。
我尝试过的
我已将子进程库添加到我的脚本的顶部,然后在尝试主动清除我正在使用的 shell 的当前历史记录之后直接包含它:
subprocess.call("history -c", shell=True)
理论上这应该清除当前 shell 的历史记录。我没有从中看到错误,所以我假设它在其他一些 shell 中运行。当我在脚本之外运行它时(在运行调用脚本的命令之后直接运行)它可以正常工作。
我还使用了以下子流程但没有成功:
subprocess.call("unset HISTFILE", shell=True)
我还使用了 Python 的 os 库,并在脚本中包含了以下内容:
os.system("history -c")
我也尝试过使用 os.system 取消设置 HISTFILE,但无济于事。
os.system("unset HISTFILE")
首选解决方案特征
我意识到我可以在使用命令后简单地输入 unset HISTFILE 或 history -c。但我希望它尽可能成为一个独立的脚本。
理想情况下,该解决方案将阻止 ./scomescript.py 命令被记录在 .bash_history 中。
我需要此脚本根据输入将文本输出到终端,因此我也无法在之后立即关闭终端。
我想一定有一种方法可以从 python 脚本本身执行此操作 - 这是我的偏好。
最佳答案
这确实不太可行...将条目添加到历史文件是由交互式 shell 执行的,它发生在命令完成且父 shell 退出之后。 是,严格来说,如果你要让你的 python 程序执行生成一个 hacky 后台进程,它会做一些事情,比如在循环中读取历史文件重写它。我真的不能提倡这样的事情,但你可以在你的脚本中附加类似这样的东西:
os.system("nohup bash -ic 'while :; do read -d \"\" history < \"$HISTFILE\"; echo \"$history\" | sed -e\"s@^%s.*@@\" -e\"/^$/d\" > \"$HISTFILE\"; sleep 1; done &' >/dev/null 2>&1" % sys.argv[0])
我认为实现不记录任何参数的目标的更好方法是使用类似var = raw_input("")
的方法而不是传递敏感参数在命令行上。
您也许还可以创建一个 shell 函数来包装您的脚本,例如 my_script(){ set +o history; python_script.py "$@; set -o history ;}
?
关于python - 从 Python 脚本中取消设置或删除最近的 .bash_history,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36110170/
我经常查看我的 .bash_history 文件,看看我是如何运行程序的,或者我使用了哪些参数。问题是我的历史似乎很不完整。我会发现一些命令是我几个月前运行的,而另一些我昨天运行过但不存在。我认为问题
我使用 bash,有时我不得不为某些任务输入一些很长的命令。这些长命令不经常使用,并且在我再次使用它们时通常会在 .bash_history 文件中被覆盖。如何将某些命令永久添加到 .bash_his
您好,我正在尝试使用以下命令查看我的终端历史记录: subl .bash_history 但是当我打开 .bash_history 文件时,它看起来像这样: 2d2a 0a73 7564 6f20 6
我的代码: #include #include #include int main(void) { printf("entering main process---\n"); i
我有时会在 linux 终端中错误地输入我的 su 密码,该终端会回显输入的字符。它被记录在 ~/.bash_history 中,这让我感到不安全。有没有人有一个简短的脚本(bash one-line
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
有没有办法与 docker 容器共享 .bash_history 卷,这样每次我进入 shell 时,我的 bash 历史记录都可以滚动浏览? 如果能用 IPython 做同样的事情,那就太棒了。 最
问题 我有一个 Python 脚本,当我从命令行运行它时,我不想在 .bash_history 中记录任何内容。 这是因为脚本使用了 Python argparse 库,它允许我直接从命令行将参数传递
我知道如何记录我在 ~/.bash_history 中输入的每条命令: export PROMPT_COMMAND="history -a" 我的问题是,应用上述技巧后,如何避免长度小于5的命令被写入
我在亚马逊的 aws EC2 上有一个 linux box。我可以在这里查看用户的 bash_history: /home/ec2-user/.bash_history 但是当我 root 时: su
我想尽可能多地获取我的 bash 命令历史记录,我发现 ./bash_history 只包含最近的两千行,这是否意味着之前的那些永远丢失了?有没有办法把它取回来。 非常感谢。罗伊987 最佳答案 恐怕
最近我决定从 zsh 转移到 bash shell。有没有办法快速将我的 .zsh_history 文件转换为 .bash_history 文件? .zsh_history 片段 : 14469941
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
tmux 是否支持将在“C-b :”模式下键入的命令保存到文件中?我宁愿浏览我已经输入的命令,也不愿在手册页中查找每个命令。 最佳答案 history-file 选项可以满足您的需求。 history
我有适用于 Windows 版本的可移植 Git,并从不同机器上的 USB 内存棒运行它。我注意到当我使用 Git Bash 时,它会将 bash 历史记录保存在默认用户文件夹中,即 C:/Users
我刚刚重新安装了 MacOS (OSX 10.12),当我重做我的 IDE 时,我得到了这个奇怪的 bash_history stats 对象,它会打印到每个新的终端窗口!它让我发疯,在查看了所有首选
背景 我是一名前端 Web 开发人员,我已经开始尽可能地转向 PortableApps;至少对于我在构建机器并不得不多次重新安装 Windows 后使用的台式机 (Windows)。 将命令行与构建自
我想知道是否有一种方法可以“模仿”linux .bash_history。它会是这样的: def write_history(cmd): try: with open("/root/.pyth
我正在使用 os.system() 从我的 ubuntu 机器上调用一些 openssl 命令。我在行中指定密码,所以它看起来像: //python code os.system("openssl e
我正在使用 Windows 版 Git(版本 1.7.8-preview20111206),即使我的 HOME 文件夹中有一个 .bash_history 文件,它也不会自动更新。当我启动 Git B
我是一名优秀的程序员,十分优秀!