LINUX.ORG.RU

2 и более команд в автостарте (Ubuntu)


1

1

Всем привет! Ubuntu 12.04 Добавил в «Автоматически запускаемые приложения» команду synclient TouchpadOff=1 && echo 0 > /home/pershin/Scripts/Touchpad/value Выполняется только первая часть, вторая игнорируется. Если ввести то же самое в терминале, то выполняются обе. Вопрос очень прост: как правильно написать, чтобы выполнялись обе части команды?

Можно конечно создать скрипт и положить туда две команды, а уже его запускать. Можно в конце концов просто разнести эти две части команды на два разных пункта в автозапуске. Но это всё костыли, хочется нормального решения. Спасибо.

&& echo 0 > /home/pershin/Scripts/Touchpad/value


Вот это как раз и есть костыли.

kernelpanic ★★★★★ ()

В rc.local пропиши.

Ip0 ★★★★ ()
Ответ на: комментарий от kernelpanic

2 kernelpanic: Напиши мне драйвер на тачпад, чтобы он без костылей работал и наконец увидел хардварную кнопку, я только благодарен буду. Если нечего сказать по делу - мимо.

2 Ip0: Я не спрашиваю, как добиться нужно результата любым способом. Иначе бы давно уже всё сделал. Я хочу, чтобы утилита Автозапуск убунты понимала спаренные команды. И спрашиваю, какой тут синтаксис.

Pershin ()
Ответ на: комментарий от Pershin

Убунтоиды такие забавные, я аж тащусь.

1. synclient TouchpadOff=1 && echo 0 > /home/pershin/Scripts/Touchpad/value - это костыль и содомия. Подумай почему.
2. Что у тебя за проблема с тачпадом?

kernelpanic ★★★★★ ()

'synclient TouchpadOff=1 && echo 0 > /home/pershin/Scripts/Touchpad/value'
Попробуй так

anonymous ()
Ответ на: комментарий от kernelpanic

1. Подумал, ничего не придумал. И вообще, какая тебе печаль до самой команды? Видимо, зря я конкретный пример привёл. Исправляюсь: Как, вместо создания двух пунктов в утилите «Автозагрузка» с командами A и B, создать один пункт с командой C, которая бы выполняла и A, и B. C = A && B не работает. Чему должно быть равно C?

На такой прямой и простой вопрос кто-нибудь ответить может?

2. Если так интересно, я расскажу про свои конкретные проблемы с тачпадом, что делает эта конкретная команда и почему я считаю её не костылем, а лучшим, что я мог сделать в данной ситуации. Но только после ответа на 1 вопрос.

Pershin ()

Создай скрипт в /home/user/blabla.sh в него пропиши те команды, которые хочешь выполнить.

В «Автоматически запускаемые приложения» добавь команду

/bin/bash -c '/home/user/blabla.sh'

OperaSoftvvare ★★ ()
Последнее исправление: OperaSoftvvare (всего исправлений: 2)
Ответ на: комментарий от anonymous

'synclient TouchpadOff=1 && echo 0 > /home/pershin/Scripts/Touchpad/value'

Терминал эту команду не понимает, автозагрузка тоже.

Pershin ()
Ответ на: комментарий от OperaSoftvvare

Спасибо за желание помочь, но я уже сказал в первом сообщении, что некоторые пути решения проблемы мне очевидны и известны. Твой там тоже есть. Мне не хочется для каждой задачи, которая решается одной (двумя) командой в терминале, создавать целый скрипт. Это костыль. Я хочу разобраться, почему автозапуск не понимает && и как заставить его понимать (и возможно ли это).

Pershin ()
sh -c 'synclient TouchpadOff=1 && echo 0 > /home/pershin/Scripts/Touchpad/value'



Кстати, значение 0 в данном случае очень легко получить командой synclient -l | grep -c TouchpadOff=0, так что этот временный файл не нужен.

AITap ★★★★★ ()
Последнее исправление: AITap (всего исправлений: 1)
Ответ на: комментарий от Pershin

Если так интересно, я расскажу про свои конкретные проблемы с тачпадом, что делает эта конкретная команда и почему я считаю её не костылем, а лучшим, что я мог сделать в данной ситуации. Но только после ответа на 1 вопрос.

Это не мне должно быть интересно, ага? У тебя есть проблема, ты решаешь ее через одно место, называя стандартные решения костылями. Можешь гордится дальше.

kernelpanic ★★★★★ ()
Ответ на: комментарий от Pershin
eval 'synclient TouchpadOff=1 && echo 0 > /home/pershin/Scripts/Touchpad/value'
Ip0 ★★★★ ()
Ответ на: комментарий от Pershin

Но только после ответа на 1 вопрос.

Тебя ещё уговаривать надо разрешить тебе помочь? Ну ты и клоун.

VirRaa ★★★ ()
Ответ на: комментарий от generator

Нет однозначной связи содержимого файла /home/pershin/Scripts/Touchpad/value и реального состояния тачпада.

kernelpanic ★★★★★ ()
Ответ на: комментарий от kernelpanic

Почему? Может быть где-то ещё выполняется synclient TouchpadOff=0 && echo 1 > /home/pershin/Scripts/Touchpad/value

generator ★★★ ()
Ответ на: комментарий от generator

А ты уверен, что больше нигде не изменяется состояния тачпада без всяких там записей в файл?

kernelpanic ★★★★★ ()
Ответ на: комментарий от Ip0

2 OperaSoftvvare, AITap, Ip0 Спасибо, все в три ваших варианта работают. Выбрал самый короткий:) Хорошо, что есть люди, которые умеют читать вопрос, а не рассуждать об обоях и ШГ на рабочем столе у человека, спросившего о проблеме с торрент-клиентом.

Pershin ()

synclient TouchpadOff=1 && echo 0 > /home/pershin/Scripts/Touchpad/value Выполняется только первая часть, вторая игнорируется.

тут возможны две причины:

  • первая команда возвращает не нуль. Решение - заменить && на ; (всё равно это костыль)
  • убунтоидная запускалка видит только первую команду, а остальное считает её параметрами. Ну а первая команда такие «параметры» тупо игнорит. Решение - менять/править запускалку, или пихать это всё в скрипт.
drBatty ★★ ()
Ответ на: комментарий от AITap

Кстати, значение 0 в данном случае очень легко получить командой synclient -l | grep -c TouchpadOff=0, так что этот временный файл не нужен.

Да, думал об этом и хотел так сначала сделать, когда писал скрипт. Но не смог распарсить вывод synclient -l, знаний маловато. В частности, ваш шаблон тоже неправильный. Он выдает ноль, хотя synclient -l показывает TouchpadOff = 1. В итоге решил сделать вспомогательный файл, который принимает значения 0 или 1. Но ваш подход лучше, не спорю.

Pershin ()
Ответ на: комментарий от kernelpanic

Это не мне должно быть интересно, ага? У тебя есть проблема, ты решаешь ее через одно место, называя стандартные решения костылями. Можешь гордится дальше.

Давай сюда своё стандартное решение, в ответ выложу своё. А свои жалкие наезды

Нет однозначной связи содержимого файла /home/pershin/Scripts/Touchpad/value и реального состояния тачпада.

А ты уверен, что больше нигде не изменяется состояния тачпада без всяких там записей в файл?

оставь кому-нибудь другому. Но не ответить на такое наглое обвинение не могу:

- Если я сюда не написал, зачем нужен файл value, то это лишь потому что тема абсолютно о другом (тема НЕ о тачпаде, если ты настолько слеп).

- value напрямую отражает состояние тачпада и используется для скрипта на хоткее, который это самое состояние переключает, и ему надо его откуда-то брать.

- состояние тачпада больше нигде не изменяется без записи в файл

- #пятизвёздочники

Pershin ()
Ответ на: комментарий от Pershin

Он выдает ноль, хотя synclient -l показывает TouchpadOff = 1.

Именно, это должно быть такое же значение, как Вы записываете в файл ~/Scripts/Touchpad/value

У меня всё же была ошибка: правильно должно быть synclient -l | grep -c 'TouchpadOff *= *0', чтобы находить произвольное количество пробелов в строке.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

Предлагаете мне грепать число 0, которое я сам и записываю? :D

Вы мне лучше расскажите, как вытаскивать переменную (0 или 1) из synclient -l в поле TouchpadOff. Именно его и заменяет мне value. А не константу 0, боже мой. Т.к. вытащить число я не смог, мне нужно строго следить за каждым переключением тачпада и записывать его состояние в файле value. Разумеется, value используется не только в этой команде в автозапуске, а ещё в двух скриптах.

Pershin ()
Ответ на: комментарий от kernelpanic

Так я и думал, что сказать будет нечего. Очередной газификатор луж. В игнор.

Pershin ()
Ответ на: комментарий от Pershin

Вот теперь после игнора, я могу предложить тебе почитать про возвращаемые значения grep:)

kernelpanic ★★★★★ ()
Ответ на: комментарий от Pershin

Команда: synclient TouchpadOff=$(synclient -l | grep -c 'TouchpadOff *= *0')
Переключит состояние тачпада из «выключен» во «включён» и наоборот.

А всё потому, что:
1) когда тачпад выключен, TouchpadOff = 1, регулярное выражение не найдёт строку TouchpadOff = 1, и grep вернёт 0
2) когда тачпад включён, TouchpadOff = 0, регулярное выражение находит одно вхождение строки и возвращает 1

AITap ★★★★★ ()
Ответ на: комментарий от AITap

Спасибо, отличное решение. Один из скриптов можно заменю этой командой.

Pershin ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.