Если Вы хотите представить a ИЛИ в grep, начинание его с REGEXP является неправильным путем. Попробуйте -e
опция к grep вместо этого:
grep -e PATTERN1 -e PATTERN2 your_file
будет соответствовать строкам PATTERN1 или PATTERN2.
Я попытался придумать сценарий, но закончился время. Можно найти связанное обсуждение здесь:
https://groups.google.com/d/topic/xdotool-users/ns-pHfwQErc/discussion
Это может показаться невозможным, но вы можете использовать опцию grep
-f
, чтобы использовать этот список слов, даже если они находятся в переменной среды, а не в правильном файле. Хитрость в том, чтобы обмануть grep
, думая, что они из такого файла:
$ ssh machineB 'grep -f <(echo $wordsToInclude|tr , "\n") file1 file2 file3'
Это запустит grep...
команда удаленно через ssh
на machineB. Потребуется переменная $ wordToInclude
и переключить запятые на конец символов строки (,
- > \n
). Этот список слов затем подается в grep
через его переключатель -f
.
Чтобы выполнить это через список исключений, просто добавьте это как 2-ю группу после начальной по трубе.
$ ssh machineB 'grep -f <(echo $wordsToInclude|tr , "\n") \
file1 file2 file3 | grep -vf <(echo $wordsToExclude)'
-121--95331- В общем случае пустая последовательность не обозначает текущий каталог ни для команд оболочки, ни для системных вызовов. Это было сделано в некоторых старых системах, но не в системах, совместимых с POSIX .
Иногда вы найдете программу, которая использует текущий каталог, когда вы передаете пустую последовательность, и программа ожидает имя каталога. Иногда это преднамеренно, а иногда и побочный эффект, заключающийся в том, что в случае, когда данная последовательность не начинается с косой черты, путь к абсолютному пути текущего каталога.
Лучше всего было бы покинуть ./
. Это не причиняет вреда.
Если список файлов для
find . … | sed 's!^\./!!'
Обратите внимание, что это ограничивает некоторые имена файлов, содержащие новые строки. Обычно это не проблема для человеческого потребления, и результат find
не подходит для программного потребления, поскольку он неоднозначен. Если вы используете -print0
, который подходит для использования программы, возможно, вас все равно не волнует префикс ./
.
Вы можете использовать найти *...
вместо найти....
, но обратите внимание, что найти *
имеет ряд дефектов, которые делают его непригодным в целом:
.
опущен. .
или.. ') опущены. -
(или файла с именем !
или (
...), он будет интерпретирован как вариант или предикат с помощью find
. Если фильтр исключает текущий каталог, первая точка не имеет значения. Во втором пункте можно использовать узоры ..? *. [!.] * *
для сопоставления всех файлов в текущем каталоге, но необходимо проверить, соответствует ли каждый образец хотя бы одному файлу, и пропустить его, если нет. Это возможно, но очень громоздко. Последняя точка - стопор. Так что find *
может быть пригоден для быстрого использования командной строки, но не использовать его в сценарии.
Альтернативный подход заключается в использовании средства рекурсивного глоббинга оболочки, например,
printf '%s\n' **/*.h
Это должно быть активировано shopt -s globstar
в bash и set -o globstar
в ksh93,и не существует в базовой оболочке POSIX, такой как тире. Файлы точек не будут проходить по умолчанию; чтобы включить их, сначала сделайте глоббинг не игнорируя файлы точек с помощью shopt -s dotglob
в bash или FIGNORE = '@ (. |..)'
в ksh93. Также, если совпадений нет, то эта команда печатает образец; запустите shopt -s nullglob
в bash для печати пустой строки и используйте образец ~ (N) * */* .h
в ksh.
В zsh рекурсивный глоббинг включен по умолчанию. Используйте квалификатор glob D
для включения файлов точек и N
для печати пустой строки при отсутствии совпадений (по умолчанию zsh выдает ошибку, если образец не соответствует файлу). Вы можете использовать printf
как выше или
print -rl -- **/*.h(DN)
-121--47162- Я задал аналогичный вопрос при запросе ubuntu, и принятый ответ содержит (не-ubuntu specific) сценарии оболочки для сохранения/восстановления позиций окна.
Ключевой пункт является использование wmctrl для перечисления активных окон и xwininfo для запроса их геометрии, а затем wmctrl для восстановления геометрии каждого окна.
wmctrl устанавливается отдельно.
Я знаю, что это очень старый форум, но я наткнулся на него, когда сам искал решение... В итоге я потратил целых 3 рабочих дня, изучая, как писать скрипты на языке Auto HotKey, и создал хороший скрипт, который сохраняет размеры и положение окон, а затем восстанавливает их после -пристыковки компьютера! Посмотрите и не стесняйтесь загружать или разветвлять его с GitHub, если вам это нравится:https://github.com/jkos95/Undocking-Script
Изменить :Это работает только для ПК с Windows, о которых я знаю!