Разработки проекта PuppyRus > Программирование и компиляция

NumlockSwitcher или Как скриптом заменить строку в файле?

(1/3) > >>

Zloy_T:
топик http://forum.puppyrus.org/index.php/topic,1821.new.html#new навел на мысль.

--- Цитата ---сделать в меню изменялку для настроек
--- Конец цитаты ---

Думаю, как это реализовать. Например, для вкл\выкл numlock


--- Цитата ---чтобы NumLock включилась, нужно отредактировать файл /root/.xinitrc. Прокручиваем до упора вниз, находим строчку
/usr/X11R6/bin/numlock off   и заменяем off на on.
--- Конец цитаты ---

итак, как скриптом заменить строку? самый простой метод, конечно, переписывать целиком сам xinitrc (если он изменен, тогда все изменения теряются, так что это не подходит)

вот тут нашел инфу кой-какую но не совсем понимаю как применить http://www.instanceof.ru/linux/bash-scripts

Zloy_T:
пробовал так
--- Код ---
#!/bin/sh
find -name ‘*.xinitrc’ -exec sed -i -e s//usr/X11R6/bin/numlockx off//usr/X11R6/bin/numlockx on/g {} \;
--- Конец кода ---
и так
--- Код ---
#!/bin/sh
FROM=”/usr/X11R6/bin/numlockx off”
TO=”/usr/X11R6/bin/numlockx on”
find -name ‘*.xinitrc’ -exec sed -i -e “s/$FROM/$TO/g” {} \;
# NUMLOCK ON
#find -name ‘*.xinitrc’ -exec sed -i -e “s/$TO/$FROM/g” {} \;
# NUMLOCK OFF
--- Конец кода ---

не получается

DdShurick:

--- Код ---
#!/bin/sh
cat /root/.xinitrc | sed -e 's/\/usr\/X11R6\/bin\/numlockx off/\/usr\/X11R6\/bin\/numlockx on/' > /tmp/xinitrc
mv /tmp/xinitrc /root/.xinitrc

--- Конец кода ---

Zloy_T:
Спасибо. Поковырялся и написал такую фичу:


--- Код ---
#! /bin/sh
# копируем файл на всякий случай
cp .xinitrc xinitrc.bak
#Выбор Yes или No (результат в $?, 0 - yes, 1 - no, 255 - закрыто окно), "0 0" - размер окна по умолчанию:
    Xdialog --title "Включить NumLock при загрузке?" --yesno "Включить?" 10 60
# Эта переменная, значение возвращено диалогом
retval=$?

if [ "$retval" = "0" ]; then
# Если условие верно, то выполняем
# Если нет, то ничего не делаем, типа нам пофигу
cat /root/.xinitrc | sed -e 's/\/usr\/X11R6\/bin\/numlockx off/\/usr\/X11R6\/bin\/numlockx on/' > /tmp/xinitrc&&
mv /tmp/xinitrc /root/.xinitrc&&
# Информационный диалог, если не нужен, то можно закомментировать
Xdialog --title "Успешно!" --no-buttons --infobox \
" Numlock включен " 10 40 2000
#время показа окна в ms
fi

if [ "$retval" = "1" ]; then
   cat /root/.xinitrc | sed -e 's/\/usr\/X11R6\/bin\/numlockx on/\/usr\/X11R6\/bin\/numlockx off/' > /tmp/xinitrc&&
mv /tmp/xinitrc /root/.xinitrc&&
Xdialog --title "Успешно!" --no-buttons --infobox \
" Numlock выключен " 10 40 2000
fi

if [ "$retval" = "255" ]; then
# при нажатии ESC выйти
exit 255
fi
--- Конец кода ---

Можно засунуть в пет-пакет и юзать. Пакет прилагаеца, ярлык создается в категории "Утилиты"

rogiram:
А можно и так:
В файле /root/xinitrc строчку
/usr/X11R6/bin/numlockx off
заменить на
/usr/X11R6/bin/numlockx 'cat /root/.numlock'
Разумеется этот файл надо туда положить и записать в него "off".
А менять это дело соответственно так:

--- Код ---
#! /bin/sh
echo off > /root/.numlock
--- Конец кода ---
и

--- Код ---
#! /bin/sh
echo on > /root/.numlock
--- Конец кода ---

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии