Чтобы отключить автоматический вход в систему Ubuntu, вы можете выполнить следующие шаги и на шаге 5. Переключить автоматический входной переключатель в положение OFF.
Автозапуск Ubuntu описан здесь: [!d2 ] Авторизация автоматически. Вы можете изменить свои настройки, чтобы вы автоматически вошли в свою учетную запись при запуске компьютера: откройте Обзор действий и начните вводить пользователей. Нажмите «Пользователи», чтобы открыть панель. Выберите учетную запись пользователя, для которой вы хотите автоматически войти в систему при запуске. Нажмите «Разблокировать» и введите свой пароль. Переключите переключатель автоматического входа в положение ON. При следующем запуске вашего компьютера вы будете авторизованы автоматически. Если этот параметр включен, вам не нужно вводить пароль для входа в свою учетную запись, а это означает, что если кто-то еще запускает ваш компьютер, он сможет получить доступ к вашей учетной записи и вашим личным данным, включая ваши файлы и браузер история.
Дополнительная информация, предоставленная OP @Craig Hicks:
Фактический файл, который был изменен, - /etc/lightdm.conf. Добавлена строка: autologin-user=<username>.Вы можете сделать:
for f in *.conf; do
base=$(basename "$f" '.conf') # gives '25' from '25.conf'
sed -i.before "s/example/$base/g" "$f"
done
При использовании переключателя -i в sed вы должны быть абсолютно уверены, что ваша команда sed работает, потому что -i изменяет файлы, место. Это означает, что сгенерированный вывод будет перезаписывать входной файл. Если ваша команда замены (s/…/…/) неверна, вы можете получить пустые файлы и резервные копии. Следовательно, я использовал -i.before, который оставит файл *.before с исходным контентом.
Вы можете сделать:
for f in *.conf; do
base=$(basename "$f" '.conf') # gives '25' from '25.conf'
sed -i.before "s/example/$base/g" "$f"
done
При использовании переключателя -i в sed вы должны быть абсолютно уверены, что ваша команда sed работает, потому что -i изменяет файлы, место. Это означает, что сгенерированный вывод будет перезаписывать входной файл. Если ваша команда замены (s/…/…/) неверна, вы можете получить пустые файлы и резервные копии. Следовательно, я использовал -i.before, который оставит файл *.before с исходным контентом.
Вы можете сделать:
for f in *.conf; do
base=$(basename "$f" '.conf') # gives '25' from '25.conf'
sed -i.before "s/example/$base/g" "$f"
done
При использовании переключателя -i в sed вы должны быть абсолютно уверены, что ваша команда sed работает, потому что -i изменяет файлы, место. Это означает, что сгенерированный вывод будет перезаписывать входной файл. Если ваша команда замены (s/…/…/) неверна, вы можете получить пустые файлы и резервные копии. Следовательно, я использовал -i.before, который оставит файл *.before с исходным контентом.
Вы можете использовать цикл for для перебора файлов. Используйте расширение параметра, чтобы удалить расширение файла. Используйте двойные кавычки вокруг выражения, иначе переменная не будет расширена.
#! /bin/bash
for f in *.conf ; do
b=${f%.conf}
sed -i "s/example/$b/" "$f"
done
Вы можете выполнить задачу без цикла, используя GNU parallel:
parallel sed -i.old s/example/{.}/ {} ::: *.conf
Это особенно полезно, если у вас есть много файлов для редактирования, так как parallel запускает одно задание на каждый процессор Ядро
-i.old означает: отредактируйте файл i n-place и сделайте резервную копию, добавив расширение .old к исходному имени файла (удалите .old, если вы не хотите, чтобы резервная копия , но помните, что у вас нет резервной копии, тогда) s/example/{.}/g означает s ubstitute example с входным именем файла без его расширения ({.}) и сделать это g lobally (= для каждого появления) заменяется на входное имя файла :::, отделяет команду для запуска от аргументов для передачи к ней *.conf соответствует каждому .conf файлу в текущем каталогеС awk, который имеет переменную FILENAME, автоматически устанавливается на имя файла (и, если GNU awk, с изменениями на месте):
$ for i in {20..26}; do printf "%s\n" "datafname = example.nex" "ofprefix = best.example" > $i.conf; done
$ gawk -i inplace 'FNR == 1 {split(FILENAME, file, ".")} {gsub("example", file[1])} 1' *.conf
$ cat 25.conf
datafname = 25.nex
ofprefix = best.25
FNR == 1 {split(FILENAME, file, ".")}: на первой строки каждого файла, разделите имя файла на . и сохраните его в массиве file {gsub("example", file[1])} 1: для всех строк замените example на первый элемент массива file и распечатайте. Вы можете использовать цикл for для перебора файлов. Используйте расширение параметра, чтобы удалить расширение файла. Используйте двойные кавычки вокруг выражения, иначе переменная не будет расширена.
#! /bin/bash
for f in *.conf ; do
b=${f%.conf}
sed -i "s/example/$b/" "$f"
done
Вы можете выполнить задачу без цикла, используя GNU parallel:
parallel sed -i.old s/example/{.}/ {} ::: *.conf
Это особенно полезно, если у вас есть много файлов для редактирования, так как parallel запускает одно задание на каждый процессор Ядро
-i.old означает: отредактируйте файл i n-place и сделайте резервную копию, добавив расширение .old к исходному имени файла (удалите .old, если вы не хотите, чтобы резервная копия , но помните, что у вас нет резервной копии, тогда) s/example/{.}/g означает s ubstitute example с входным именем файла без его расширения ({.}) и сделать это g lobally (= для каждого появления) {} заменяется на входное имя файла :::, отделяет команду для запуска от аргументов для передачи к ней *.conf соответствует каждому .conf файлу в текущем каталогеС awk, который имеет переменную FILENAME, автоматически устанавливается на имя файла (и, если GNU awk, с изменениями на месте):
$ for i in {20..26}; do printf "%s\n" "datafname = example.nex" "ofprefix = best.example" > $i.conf; done
$ gawk -i inplace 'FNR == 1 {split(FILENAME, file, ".")} {gsub("example", file[1])} 1' *.conf
$ cat 25.conf
datafname = 25.nex
ofprefix = best.25
FNR == 1 {split(FILENAME, file, ".")}: на первой строки каждого файла, разделите имя файла на . и сохраните его в массиве file {gsub("example", file[1])} 1: для всех строк замените example на первый элемент массива file и распечатайте. Вы можете использовать цикл for для перебора файлов. Используйте расширение параметра, чтобы удалить расширение файла. Используйте двойные кавычки вокруг выражения, иначе переменная не будет расширена.
#! /bin/bash
for f in *.conf ; do
b=${f%.conf}
sed -i "s/example/$b/" "$f"
done
Вы можете выполнить задачу без цикла, используя GNU parallel:
parallel sed -i.old s/example/{.}/ {} ::: *.conf
Это особенно полезно, если у вас есть много файлов для редактирования, так как parallel запускает одно задание на каждый процессор Ядро
-i.old означает: отредактируйте файл i n-place и сделайте резервную копию, добавив расширение .old к исходному имени файла (удалите .old, если вы не хотите, чтобы резервная копия , но помните, что у вас нет резервной копии, тогда) s/example/{.}/g означает s ubstitute example с входным именем файла без его расширения ({.}) и сделать это g lobally (= для каждого появления) {} заменяется на входное имя файла :::, отделяет команду для запуска от аргументов для передачи к ней *.conf соответствует каждому .conf файлу в текущем каталогеС awk, который имеет переменную FILENAME, автоматически устанавливается на имя файла (и, если GNU awk, с изменениями на месте):
$ for i in {20..26}; do printf "%s\n" "datafname = example.nex" "ofprefix = best.example" > $i.conf; done
$ gawk -i inplace 'FNR == 1 {split(FILENAME, file, ".")} {gsub("example", file[1])} 1' *.conf
$ cat 25.conf
datafname = 25.nex
ofprefix = best.25
FNR == 1 {split(FILENAME, file, ".")}: на первой строки каждого файла, разделите имя файла на . и сохраните его в массиве file {gsub("example", file[1])} 1: для всех строк замените example на первый элемент массива file и распечатайте.