Если вы устанавливаете пароль старения вообще, то PAM_UNIX.SO
собирается запретить их аутентификацию после истечения срока действия пароля. Чтобы сделать то, что вы хотите, вы, вероятно, можете добавить что-то в свои сценарии входа. Например, я могу добавить следующее в /etc/profile.d
:
#!/bin/bash
maxDays=30
dayLastChanged=$(passwd -S $(whoami) | awk '{print $3}')
currentTimestamp=$(date "+%s")
lastChangeTimestamp=$(date -d $dayLastChanged "+%s")
timestampDifference=$(( $currentTimestamp - $lastChangeTimestamp ))
maxSeconds=$(( $maxDays * 86400 ))
if [[ $timestampDifference -gt $maxSeconds ]]; then
echo "Yo, you need to change your password bud. Otherwise the guys with white-on-white ties are coming for you."
fi
считают, что это должно работать для вас (вероятно, более элегантные способы сделать это с SED).
for file in *; do
base=`echo "${file%.*}"`
mv -- "${file}" "${base}.txt"
done
Вам нужно использовать американское правописание:
apt-get install software-center
(это будет установлено https://launchpad.net/ubuntu/+source/software-center ).
-121--229853- Не обязательно более элегантный, но для полноты, вот SED
SED SED
for file in *; do
mv "$file" "$(echo "$file" | sed 's/^\(.*\)\.\?.*$/\1.txt/')"
done
BIT SED схватывает все перед последней точкой в именем файле и заменяет точку И все, что следует с '.txt'. Если нет точек в имени файла, то '.txt' просто прилагается к всему этому.
Цитаты вокруг переменных важны для обработки файлов пространствами и такими, независимо от того, с какого метода вы идете.
Чтобы переименовать все из них в оболочке было бы что-то подобное:
for file in *; do
mv -- "${file}" "`basename -- "${file}"`.txt"
done
Вы можете проверить тип с файлом
или другие проверки для определения расширений.