Экспорт каталога в `bashrc `без кавычек переменной

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

E: 0001 0111 0001  # EV_KEY / BTN_RIGHT            1
E: 0000 0000 0000  # ------------ SYN_REPORT (0) ---------- +552ms
E: 0002 0008 -001  # EV_REL / REL_WHEEL            -1
E: 0000 0000 0000  # ------------ SYN_REPORT (0) ---------- +1016ms
E: 0002 0000 0001  # EV_REL / REL_X                1
E: 0002 0001 0003  # EV_REL / REL_Y                3

Запустите evemu-recordбез аргументов, чтобы получить список устройств ввода. В моем случае это было

/dev/input/event5:      Logitech USB Optical Mouse

тогда вы можете написать сценарий оболочки bash, например:

( pid=$BASHPID
  evemu-record /dev/input/event5 |
  stdbuf -oL egrep 'EV_KEY|REL_WHEEL' |
  ( while read -t 5 junk
    do echo -n.
    done
    echo ok
    kill -pipe $pid
  )
)

Здесь используется egrepдля фильтрации всех линий, кроме кнопок и колес, и stdbufдля обеспечения отсутствия буферизации вывода (, хотя ваш grep может принять параметр --line-buffered, который делает то же самое ). Цикл while считывает каждую строку и выводит «.», но если в течение 5 секунд нет ввода (-t 5), цикл останавливается. Наконец, killнеобходим для конвейера, который в противном случае не завершится, пока не будет обнаружено новое событие и egrepне умрет с SIGPIPE. Использование kill -pipeотправляет сигнал SIGPIPE, что позволяет избежать сообщений об ошибках, которые вы получили бы от kill -hup. Внешняя оболочка (...)необходима для получения идентификатора процесса для оболочки ($BASHPID), который не уничтожит окружающий код оболочки.

Кроме того, вы можете получить поток данных PS/2 из /dev/input/mice, но я не знаю всех деталей формата. Вы можете увидеть 3-байтовые записи с помощью

od -v -An -w3 -tx1 /dev/input/mice
0
06.11.2020, 03:44
2 ответа

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

Лично я не стал бы делать последнего, так как скоро забуду об этом;-)

Но вот пример:

# usage: q cmd...
# just like cmd..., only without IFS splitting
alias q='_q=$(fc -nl -0); IFS= eval "${_q#*q}" #'

$ src='foo bar' dst='baz quux'
$ q mkdir -p $src/dir $dst
$ q mv $src/dir $dst
$ q ls $dst
dir

1
18.03.2021, 22:51

Не совсем ваш вопрос, но если ваша проблема явно связана с обычной операцией перемещения файлов из папки «Загрузки», вы можете использовать для этого определенный псевдоним:

alias dl-mv='mv "$dl"/'

Конечно, вы также можете переименовать/изменить расположение папки «Загрузки» (или использовать символическую ссылку без пробелов в пути ).

0
18.03.2021, 22:51

Теги

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