当我尝试在里面添加行时/etc/shadow
:
echo -e "admin234:!!:0:0:99999:7:::" >> /etc/shadow
1 2 3
控制台显示此消息:
-bash: 0: unrecognized history modifier
或者
-bash: :14790: bad word specifier (when change 3 to :14790: )
帮助?
答案1
是的,!
s 被 bash 解释。将"
s切换'
为应该没事的。
答案2
@Beginners,可能想问以这种方式尝试手动编辑 /etc/shadow 的目的,换句话说,您希望实现的结果是什么?
至于了解您收到的错误的整个历史记录,取决于您对 C 的知识和理解,有大量的信息文档在源档案中。如果您专门搜索收到的错误,您将找到它们,并发现它们与您看到的错误有关:
static char *
hist_error(s, start, current, errtype)
char *s;
int start, current, errtype;
{
char *temp;
const char *emsg;
int ll, elen;
ll = current - start;
switch (errtype)
{
case EVENT_NOT_FOUND:
emsg = "event not found";
elen = 15;
break;
case BAD_WORD_SPEC:
emsg = "bad word specifier";
elen = 18;
break;
case SUBST_FAILED:
emsg = "substitution failed";
elen = 19;
break;
case BAD_MODIFIER:
emsg = "unrecognized history modifier";
elen = 29;
break;
case NO_PREV_SUBST:
emsg = "no previous substitution";
elen = 24;
break;
default:
emsg = "unknown expansion error";
elen = 23;
break;
}
可能有一种更简单的方法可以实现您想要的结果,这就是我问那可能是什么的原因。如果结果已知,那么这条路可能以前很多人都走过,而且答案更容易给出来帮助您。;)
此外,在检查命令时,没有注意到 sudo 约定的使用,这对于成功完成任何管理功能都是必要的。请记住,如果在执行时没有正确的权限,某些功能将无法运行。
HTH。祝你有美好的一天。:)
答案3
历史记录扩展仅在启用历史记录扩展时(默认情况下启用)才会影响交互式 shell。您可以通过运行 来禁用历史记录扩展set +H
。我自己从来不用历史记录扩展,所以我输入set +H
了~/.bashrc
。
至于手动编辑 /etc/shadow,我不建议这么做。如果您想从命令行添加用户,请使用adduser
或newusers
。
man 8 adduser
man 8 newusers