awk '{print "usermod -u" $ 2 "" $ 1}' users_uid | bash
Eu tenho um arquivo (users_uid) com usuários e uid são dois parâmetros conforme abaixo:
assds 611
dsdsd 612
xyzx 613
rerer 614
Esses usuários existem na máquina. Eu quero mudar o uid de cada usuário para esse valor dado certo para o nome de usuário. Eu sei que posso modificar o uid usando usermod -u <uid> <user>
. Mas eu não sei como ler os dois valores no arquivo e colocá-los como os 2 parâmetros em um loop para com o comando usermod.
A resposta aceita corre o risco de executar conteúdo malicioso ou acidental no arquivo de dados. Aqui está a maneira correta de fazer o que você quer, sem gerar awk
e uma cópia adicional de bash
, além de estar a salvo do risco que mencionei.
while read -r user uid
do
usermod -u "$user" "$uid"
done < users_uid
Como um verso:
while read -r user uid; do usermod -u "$user" "$uid"; done < users_uid
Tags bash linux shell shell-scripting