Принятие Вашего GUI основано на X (как почти все графический интерфейсы пользователя UNIX), использовать xinput
.
Во-первых, перечислите свои устройства:
$ xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Windows mouse id=6 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Windows keyboard id=7 [slave keyboard (3)]
Перечислите детали для своей мыши (id=6 в нашем примере):
$ xinput --list-props 6
Device 'Windows mouse':
Device Enabled (112): 1
Coordinate Transformation Matrix (114): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (222): 0
Device Accel Constant Deceleration (223): 1.000000
Device Accel Adaptive Deceleration (224): 1.000000
Device Accel Velocity Scaling (225): 10.000000
Теперь отключите его:
$ export DISPLAY=:0
$ xinput set-int-prop 6 "Device Enabled" 8 0
Для включения его, сделайте:
$ xinput set-int-prop 6 "Device Enabled" 8 1
То же идет для клавиатуры, просто замените число международной опоры надлежащим идентификатором.
Протестированный и работал над cygwin.
Конечно, необходимо ли запланировать заранее, как Вы включите свои устройства снова. такой как расписание это на кроне, повторно включите его удаленно или отключите только одного из них в первом месте.
$ find . -type f -print0 | xargs -0 grep foo
$ grep -r foo . # GNU grep only
и в zsh
с setopt extendedglob
,
$ grep foo **/*(.)
Как альтернатива find | xargs
ответы, Вы могли бы рассмотреть использование ctags, так как Вы говорите, что ищете не текст, а специально для имен функций.
Чтобы сделать это, Вы работали бы ctags
против Вашего источника для создания a TAGS
файл, и затем выполненный Ваш grep
против TAGS
файл, который выложит строки в следующем формате:
{tagname}<Tab>{tagfile}<Tab>{tagaddress}
Где tagname
будет содержать имя функции, tagfile
файл, это находится в, и tagaddress
будет команда vi для получения до той строки. (Могло быть справедливое номер строки.)
(Есть ли простой способ сделать что-то похожее с различными индексами, которые затмевают сборки, или просто запрашивать базу данных затмения?)
что случилось с grep -r
(== grep --recursive
)? Я пропускаю что-то здесь?
(+1 для ack
также - я регулярно использую обоих),
править: Я нашел превосходную статью, детализирующую возможности и ловушки, если Вы не имеете GNU grep
здесь. Но, серьезно, если Вы не имеете GNU grep
доступный, добираясь ack
еще более настоятельно рекомендован.
find . | xargs grep
перестанет работать на именах файлов с пробелами:
> echo test > "a b c"
> find . | xargs grep test
grep: ./a: No such file or directory
grep: b: No such file or directory
grep: c: No such file or directory
Обратите внимание, что даже-print0 имеет эту проблему.
Лучше, по-моему, использовать -exec grep
с находкой, которая обработает все имена файлов внутренне и избежит этой проблемы:
> find . -exec grep test {} \;
test
>
find … -print0 | xargs -0 …
справляется с произвольными именами файлов. Все POSIX.2004-совместимые реализации find
позволить find … -exec … {} +
, который вызывает команду с несколькими файлами сразу. Лучшая команда find . -type f -exec grep test /dev/null {} +
; добавление /dev/null
то, так, чтобы grep
будет последовательно печатать имя файла, когда оно найдет соответствие.
– Gilles 'SO- stop being evil'
12.03.2011, 18:01
Если Ваши диски быстры, можно хотеть параллелизировать grep:
find . -type f -print0 | parallel -0 grep foo
Посмотрите вводное видео для получения дополнительной информации о Параллели GNU: http://www.youtube.com/watch?v=OpaiGYxkSuQ
$ find -type f -print0 | xargs -r0 grep foo
-r
в xargs
старается не выполнять команду, если там не был введен. Это - расширение GNU.
Существует также ag
который специально предназначен для этого и пути лучше, чем ack
. Это доступно в недавних версиях Debian/Ubuntu в пакете silversearcher-ag.
find . -type f -print0 | xargs -0 grep /dev/null foo
, так, чтобыgrep
всегда печатает имя файла соответствия. Илиfind . -type f -exec grep /dev/null {} +
, для реализаций, которые догнали POSIX.2004 (который исключает OpenBSD в данный момент). – Gilles 'SO- stop being evil' 12.03.2011, 18:03grep
не имел его (идея состояла в том, что, если Вы хотели рекурсию, Вы использовалиfind
сgrep
) и добавляя его после того, как факт к системам, которые работали в течение многих лет, мог повредить вещи. (GNUgrep
не ведет себя вполне тождественно к, например, System Vgrep
.) – geekosaur 14.03.2011, 23:58