[115923] Также существует расширение GNU до [116283]sed[116284], которое условно вилкирует:
e
Эта команда позволяет вводить данные из команды оболочки в пространство шаблона. Если была произведена замена, то выполняется команда, находящаяся в пространстве шаблона, и пространство шаблона заменяется его выводом. Если выполняемая команда содержит символ NUL, то результат не определяется.
Оператор Concatenation &&
приводит к тому, что вторая команда не выполняется до первой команды ( XFCE4-терминала
) выходит (и только в том случае, если состояние выхода указывает на успех, так как это логический оператор короткого замыкания).
Вы должны получить поведение, которое вы ожидаете, если вы измените &&
; ;
; ; ; или просто поместите команду wmctrl
на отдельной строке вашего скрипта.
Я всегда использовал STTY -ECHO
, чтобы выключить эхо, затем прочитать и впоследствии делать STTY ECHO
(Подробнее, просмотра человека STTY
- то есть Человек Фитт
). Это более полезно из перспективы программистов, когда вы можете отключить эхо, а затем прочитать пароль из языка программирования, такого как Java, C (++), Python и т. Д. С их стандартными stdin "читателями."
в bash Использование может выглядеть так:
echo -n "USERNAME: "; read uname
echo -n "PASSWORD: "; stty -echo; read passwd; stty echo; echo
program $uname $passwd
passwd= # get rid of passwd
Python, например, выглядел бы:
from sys import stdout
from os import system as term
uname = raw_input("USERNAME: ") # read input from stdin until [Enter] in 2
stdout.write("PASSWORD: ")
term("stty -echo") # turn echo off
try:
passwd = raw_input()
except KeyboardInterrupt: # ctrl+c pressed
raise SystemExit("Password attempt interrupted")
except EOFError: # ctrl+d pressed
raise SystemExit("Password attempt interrupted")
finally:
term("stty echo") # turn echo on again
print "username:", uname
print "password:", "*" * len(passwd)
Мне пришлось сделать это много раз в Python, поэтому я знаю это довольно хорошо с этой перспективы. Это не очень трудно перевести на другие языки, хотя.
-121--22210- Вы запускаете WMCTRL непосредственно после того, как выходит из XFCE4-терминала
. Но если уже есть открытый экземпляр терминала XFCE, XFCE4-терминал
ставит в фоновом режиме и немедленно возвращает командную строку, пока все еще в процессе настройки фактического экрана терминала.
Так что к тому времени WMCTRL
запускается окно с заголовком RD
, возможно, еще не будет там.
Если вам не нужно вводить команду, как в примере с &&
, то WMCTRL
запускается слишком быстро. В первом примере печатания или выбора из истории достаточно задержки, чтобы иметь окно терминала с правильным заголовом доступным.
Если вы вырезаете и вставьте два входа командной строки с первого примера, вы, вероятно, сможете также столкнуться с проблемой.
Вы должны поставить команду Sleep
перед вызовом WMCTRL
. Вы можете экспериментировать со продолжительностью, 1 секунду должно быть достаточно, поскольку заголовок терминала будет установлен до начала оболочки, необходимо обработать его файлы запуска.
(Если вы запускаете Firefox / Chrom с URL-адресом, который нужно извлечь, ожидание ожидаемого заголовка может занять несколько секунд, и он может никогда не прийти, когда появятся сетевые ошибки).
Чтобы получить равномерное поведение, запустить XFCE4-терминал
на заднем плане на заднем плане, чтобы он не заблокировал, даже если это первый причт первый экземпляр.
xfce4-terminal --hide-menubar --hide-borders --hide-toolbars --title=dt &
sleep 1
wmctrl -r dt -e 0,10,10,720,720
Ответ Антона объясняет, что делает на. Используя WMCTRL
, чтобы изменить размер или переместить окно после того, как факт будет проблематичным, хотя; Вам нужно полагаться на таймера, поэтому окно появится в неправильном положении, затем переместить (или, если машина действительно медленная, окно не будет двигаться, потому что WMCTRL
работает слишком рано ). Кроме того, у вас может быть еще одно окно с тем же названием (если вы не генерируете гарантированные-уникальные названия, например со случайной строкой или временем метки).
К счастью XFCE4-терминал
имеет возможность установить его начальную позицию и размер. Следует стандартным синтаксисом геометрии X11 . Используйте его вместо звонка WMCTRL
. Обратите внимание, что размер выражены в клетках символов, а не в пикселях.
xfce4-terminal --geometry 80x40+10+10 --hide-menubar --hide-borders --hide-toolbars --title=dt