Sim, o !
s está sendo interpretado pelo bash. Mude seu "
s para '
e deve ser bem.
quando tento adicionar linha dentro de /etc/shadow
:
echo -e "admin234:!!:0:0:99999:7:::" >> /etc/shadow
1 2 3
O console mostra esta mensagem:
-bash: 0: unrecognized history modifier
ou
-bash: :14790: bad word specifier (when change 3 to :14790: )
Ajuda?
Sim, o !
s está sendo interpretado pelo bash. Mude seu "
s para '
e deve ser bem.
@Beginners, pode querer perguntar o propósito de tentar editar o / etc / shadow manualmente dessa maneira, em outras palavras, qual é o resultado desejado que você deseja alcançar?
Quanto à compreensão de toda a história dos erros que você está recebendo, dependendo do seu conhecimento e compreensão de C, existe uma grande quantidade de documentação informativa no arquivo de origem. Se você procurar especificamente os erros que recebe, os encontrará e verá que estão relacionados a erros que você está vendo:
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;
}
Pode haver uma maneira mais fácil de alcançar os fins que você deseja, e é por isso que eu pergunto o que isso pode ser. Se as extremidades são conhecidas, então o caminho provavelmente já foi percorrido por muitos antes, e uma resposta mais fácil de ser entregue para ajudá-lo. ;)
Além disso, ao revisar o comando, não percebeu o uso da convenção de sudo, que seria necessária para concluir qualquer função administrativa com êxito. Lembre-se de que certas funções não funcionarão sem os privilégios corretos consumidos no momento da execução.
HTH. Tenha um bom dia. :)
A expansão do histórico afeta apenas os shells interativos quando a expansão do histórico é ativada (o que é por padrão). Você pode desativar a expansão do histórico executando set +H
. Eu nunca uso a expansão de histórico, por isso coloco set +H
em ~/.bashrc
.
Como para editar manualmente o / etc / shadow, eu aconselharia contra isso. Se você quiser adicionar usuários da linha de comando, use adduser
ou newusers
.
man 8 adduser
man 8 newusers