rlwrap
有很多选项可以将命令行排除在历史列表之外(因此排除在历史文件之外),尽管不完全按照您描述的方式(无论如何我都不会觉得它有用)
rlwrap --forget-matching connect sqlplus
不会记住任何包含字符串的输入行connect
- 指定负历史大小,like
rlwrap --histsize -3000
会将历史文件视为只读(密码在历史中仍然可见,但不会写入文件)
- 输入一行
CTRL+O
将使该特定行不在历史列表中。(此操作可以重新绑定到另一个键,请参见手册页)
对于一个真正花哨的密码审查器,可以编写一个censor_passwords
像这样的过滤器:
#!/usr/bin/env perl
use lib ($ENV{RLWRAP_FILTERDIR} or ".");
use RlwrapFilter;
use strict;
my $filter = new RlwrapFilter;
$filter -> help_text("This filter removes the password from SQL 'identified by' clauses\n");
$filter -> history_handler(sub { s/(identified\s+by\s+)(\S+)/$1 xXxXxXxX/ig; $_});
$filter -> run;
.. 然后像rlwrap -z censor_passwords sqlplus
.
任何包含的输入 IDENTIFIED BY yd6e7#te6
都将被记住为IDENTIFIED BY xXxXxXxX