Есть несколько способов. Вот три:
rename 's/$/.txt/' ??? # Might be prename on some systems
for f in ???; do mv "$f" "$f.txt"; done
find -maxdepth 1 -type f -exec mv {} '{}.txt' \;
Пожалуйста, попробуйте это в качестве решения. Вы используете файл, разделенный запятыми -, поэтому я предполагаю, что вы хотите использовать более двух групп в одной точке. То, что вы делаете, не совсем неправильно, но я бы не стал использоватьif
else
в этом случае, поскольку его потребуется переписать, если потребуется больше групп. Создание группы также выполняется в цикле.
#!/bin/bash
while read config
do
USERTOCREATE=$(awk -F, '{print $1}' <(echo "$config"))
GROUPTOASSIGN=$(awk -F, '{print $2}' <(echo "$config"))
if [[ ! $(groups) =~ $GROUPTOCREATE ]]; then addgroup $GROUPTOASSIGN; fi
useradd $USERTOCREATE
usermod -a -G $GROUPTOASSIGN
done < users
Этот код представляет собой простой цикл while
, в котором используются две переменные USERTOCREATE
и GROUPTOASSIGN
, которые назначаются с помощью awk. Флаг -F,
в awk предназначен для установки переменной-разделителя полей FS
в запятую. Таким образом, awk может разделить ввод на переменные $1 и $2. Я не уверен, знакомы ли вы с <()
. Это дескриптор файла, который позволяет нам обрабатывать вывод echo "$config"
как файл. $config
— это не что иное, как строка из файла, который читает скрипт.
#!/bin/bash
i=0
n=$(wc -l <username.txt)
while [ $i -le $n ]
do
L=$(awk "NR==$i" username.txt)
if [ -n "$L" ]; then
user=$(echo "$L" | cut -d',' -f1)
group=$(echo "$L" | cut -d',' -f2)
useradd $user
groupadd $group
usermod -a -G $group $user
fi
i=$((i+1))
done
Вы можете разобрать строку username.txt
-с помощью ,
в качестве разделителя полей:
#!/bin/bash
sudo addgroup staff
sudo addgroup visitors
while IFS=, read -r username maingroup
do
sudo adduser --ingroup "$maingroup" "$username"
done < username.txt
Это приведет к считыванию токенов, разделенных запятыми -, в переменные оболочки $username
и $maingroup
соответственно, и выполнению команды adduser
для создания пользователя $username
с основной группой $maingroup
.