Очевидно, если Вы знаете, как выполнить любую команду как корень, можно выполнить редактора. Но это не является самым удобным или самый безопасный метод.
sudoedit
(или его синоним sudo -e
) режим sudo, где Вы редактируете временную копию файла в Вашем любимом редакторе, и та копия перемещена в место, когда Вы заканчиваете редактировать.
sudoedit /etc/fstab
Примечание: Существует несколько файлов, которые Вы не должны редактировать непосредственно.
Никогда не редактируйте /etc/sudoers
непосредственно. Всегда используйте visudo
команда для этого. Если Вы делаете ошибку в синтаксисе sudoers файла, Вы могли бы быть заблокированы из корневой учетной записи! Когда Вы работаете visudo
, это позволяет Вам отредактировать временную копию файла и выполняет проверку синтаксиса прежде, чем заменить фактический файл Вашими редактированиями.
Тот же принцип относится к пользователю, группе, паролю пользователя и базам данных пароля группы, /etc/passwd
, /etc/group
, /etc/shadow
, и /etc/gshadow
, соответственно. В системах, где они доступны, используйте vipw
, vigr
команды для /etc/passwd
и /etc/group
. Для редактирования баз данных пароля передайте-s опцию. Например, для редактирования /etc/gshadow
, использовать vigr -s
.
Я нашел решение. По сути, вы запускаете петлю обновления на заднем плане и имеют основной цикл на переднем плане. Они могут общаться друг с другом, используя команды Trap / Kill.
Я загрузил файл .sh в Github, чтобы дать полный пример.
Вот модифицированный контур того, как он работает, хотя:
Примечание. Вы должны использовать Ctrl-C для выхода.
#!/bin/bash
update()
{
trap "move_left;" $LEFT
trap "move_right;" $RIGHT
while true; do
#output whatever needed
done
}
read_in()
{
trap "return;" SIGINT SIGQUIT
while true; do
read -s -n 1 key
case key in
C) kill -$RIGHT $game_pid ;;
D) kill -$LEFT $game_pid ;;
esac
done
}
move_left()
{
#update position variable
}
move_right()
{
#update position variable
}
update &
game_pid=$!
read_in
kill -9 $game_pid
Используйте пример сценария, связанного выше для версии рабочего примера, но там у вас есть! Просто сделали немного переработки архитектуры программы.