ls сначала сообщает о несуществующих файлах, игнорируя указанный порядок

Вы можете просто отключить клавиатуру и мышь на время. Сначала узнайте идентификаторы клавиатуры и мыши:

$ xinput --list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Logitech M325                             id=14   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ SIGMACHIP USB Keyboard                    id=11   [slave  keyboard (3)]

У меня к машине подключены разные вещи, и я работаю на ноутбуке, поэтому вывод xinput --list очень длинный. Я отредактировал его здесь для ясности. Вам нужно выяснить, каковы идентификаторы устройств, которые вам нужно отключить. В моем случае это были 14 и 11.

Теперь выключите экран, отключите клавиатуру и мышь, подождите 2 секунды и включите все снова:

xinput set-prop 'Logitech M325' 'Device Enabled'  0 &&
xinput set-prop 'SIGMACHIP USB Keyboard' 'Device Enabled' 0 &&
xset dpms force off &&
sleep 2 &&
xinput set-prop 'Logitech M325' 'Device Enabled' 1 &&
xinput set-prop 'SIGMACHIP USB Keyboard' 'Device Enabled' 1 &&
xset dpms force on

В моей системе SIGMACHIP USB соответствует более чем одному устройству. По какой-то причине оно также определяется как мышь. Чтобы быть на 100% уверенным в получении правильных устройств, вы можете добавить их класс к их имени:

xinput set-prop 'pointer:Logitech M325' 'Device Enabled'  0 &&
xinput set-prop 'keyboard:SIGMACHIP USB Keyboard' 'Device Enabled' 0 &&
xset dpms force off &&
sleep 2 &&
xinput set-prop 'pointer:Logitech M325' 'Device Enabled' 1 &&
xinput set-prop 'keyboard:SIGMACHIP USB Keyboard' 'Device Enabled' 1 &&
xset dpms force on

0
17.04.2019, 04:19
1 ответ

Вы не можете за один lsвызов. Также обратите внимание, что ошибки выводятся в другом потоке, stderr, где буферизация работает иначе, чем в stdout.

Также обратите внимание, что -Uне является -стандартным (расширением GNU ), и что если вы хотите, чтобы lsотображал список файлов, указанных в качестве аргумента, вам нужна опция -d, в противном случае для файлов типа каталог , lsвместо этого будет отображать их содержимое.

Кроме того, вы можете запустить lsдля каждого файла:

for file in a.txt test.sh badtest
  ls -ld -- "$file"
done

Это решит все вышеперечисленные проблемы.

1
28.01.2020, 02:40

Теги

Похожие вопросы