У меня есть команда ниже, которая выводит результат как новые строки при каждом нажатии клавиши. Я не хочу, чтобы он выводил в файл как новые строки, а хочу, чтобы он отправлял в файл без перевода строки.
stdbuf -o0 xinput test 11 >out
Возможно ли это?
Попробуйте добавить echo -n
stdbuf -o0 xinput test 11 | xargs echo -n > out
Обновление
Как я понимаю из вашего комментария, вы хотите не просто удалять перевод строки, но и выводить журнал при каждом нажатие клавиши с использованием xinput.
Сначала проверьте все устройства ввода:
c0rp@c0rp:~$ xinput --list
Это список всех доступных устройств ввода
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech Touchpad id=13 [slave pointer (2)]
⎜ ↳ RAPOO RAPOO 2.4G Wireless Device id=10 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Video Bus id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Sleep Button id=9 [slave keyboard (3)]
↳ Asus WMI hotkeys id=11 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=12 [slave keyboard (3)]
↳ RAPOO RAPOO 2.4G Wireless Device id=14 [slave keyboard (3)]
↳ USB2.0 HD UVC WebCam id=15 [slave keyboard (3)]
Теперь, если вы хотите проверить устройство, используйте клавишу test
, и в качестве параметра используйте id из второго столбца.
Например, я использую беспроводную клавиатуру, id = 14:
xinput --test 14
Вот вывод:
key press 42
key press 43
key release 43
key release 42
key press 44
И наконец, вы хотите ...
Извините, на этом шаге я понимаю, что xinput не может перенаправить stdout или stderr, он просто буферизован. Ссылка доказательства .
Таким образом, единственный способ сделать то, что вы хотите, используя xinput
, это:
Записать xinput в файл xinput test 11 > out
, а затем заменить все новые строки, используя tr
tr -d '\n' < yourfile.txt
или, если это не работает, используйте то же самое для концов строки DOS / Windows
tr -d "\n\r" < yourfile.txt
Вы должны иметь возможность либо передать его через tr
, либо запустить tr
для окончательного файла. Вы можете либо заменить новые строки пробелами
tr '\n' ' '
, либо удалить их все вместе
tr -d '\n'
Например:
stdbuf -o0 xinput test 11 | tr -d '\n' >out