Шестнадцатеричный дамп показывает, что в имени есть только пробелы ( 20
), но есть также пробелы после вторая часть. Поэтому вам нужно сделать что-то вроде
xinput map-to-output "Weida Hi-Tech CoolTouchR System " DP-4
(надеюсь, я правильно подсчитал; если нет, проверьте количество пробелов самостоятельно).
Обычно я делаю это:Ctrl + Zfg && command2
bg
, чтобы возобновить выполнение команды 1 в фоновом режиме, пока вы вводите команду 2. fg && command2
чтобы возобновить выполнение команды 1 на переднем плане и затем поставить в очередь команду 2, если команда 1 выполнена успешно. Вы, конечно, можете заменить ;
или ||
на &&
, если хотите. Стандартный способ — просто запустить команду 1 в фоновом режиме, а затем запустить команду 2 либо в фоновом, либо на переднем плане. Полная команда такова:
command1 & command2
&
не является связующим звеном между этими двумя командами. Его можно использовать только с command1
, чтобы запустить его в фоновом режиме :
command1 &
И это правильный синтаксис для запуска обеих команд в фоновом режиме:
command1 & command2 &
Если у вас есть возможность использовать два терминала, вот что вы можете сделать:
ps -ef | grep <command1>
(. Возможно, вы захотите правильно сформировать строку фильтра в команде grep, чтобы случайно не найти другой процесс, имеющий в качестве подстроки ). wait <command1_pid> ; command2
По сути, wait
представляет собой команду bash, встроенную -в команду, которая ожидает выхода из предоставленных PID, а затем возвращается. Вы просто делегируете свое ожидание завершения command1 команде bash wait
.
запустить команду
command1
приостановить выполнение, нажав Ctrl + Z
найти номер задания приостановленной команды (обычно он уже выводится на консоль, когда на консоль, когда команда приостановлена ), выполнив
jobs
пусть command1
продолжить в фоновом режиме
bg
запланировать выполнение command2
до завершенияcommand1
wait -n <command1 job number> ; command2
Документация Встроенные функции управления заданиями
Есть несколько альтернатив.
С одним амперсандом , «отправить в фоновый режим», вторая программа запускается после запуска первой, но они, вероятно, будут работать параллельно друг с другом.
command1 & command2
С двумя амперсандами , «логическим и», вторая программа запустится только в случае успешного завершения первой программы.
command1 && command2
С точкой с запятой , разделяющей команды в командной строке, вторая программа запустится, когда завершится первая программа, даже если она не удалась или была прервана.
command1 ; command2
Вы можете использоватьwait <PID>
для ожидания завершения первой команды, если она уже выполняется из той же оболочки (в том же окне терминала ).
В противном случае, если первая команда уже выполняется из другой оболочки (в другом окне ), вы можете использовать небольшой цикл while, используя ps, чтобы проверить, найден ли PID с помощьюps
. Когда он больше не будет найден, будет запущена вторая команда.
В этом демонстрационном примере для bash
проверяется, работает ли top
через PID, и выполняется команда
echo "*** $USER, I am ready now ***"
если/когда top
больше не работает.
pid=$(ps -A|grep top|cut -d ' ' -f 1); \
while [ "$pid" != "" ]; do ps -A|grep "$pid" > /dev/null; \
if [ $? -eq 0 ]; then sleep 5;else pid=""; fi; done; \
echo "*** $USER, I am ready now ***"