grep выдает результаты, которые не появляются в исходном контексте

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

# Ignore build folder from the workplace and the package.
# Keep the src-generated sync so you build only on one side.
ignore = Path */build/*
ignore = Path */build
follow = Path */*/*/build
ignore = Path */*/*/build/*
ignorenot = Path */*/*/build/generated-src

Фокус в том, что Путьпринимает точныйпуть, так что глобусная часть касается только именования, и вам нужно указать точную глубину Папка. Таким образом, ignore = Path */*/*/build/*будет игнорировать все в папке, но ignorenot = Path */*/*/build/generated-srcбудет работать как ожидал. То же самое с Name, как я делал раньше, не работает.

0
08.08.2016, 16:37
1 ответ

Судя по вашему комментарию, вывод, который вы видите, представляет собой содержимое файлов с односимвольным именем файла, совпадающим с именем первого из таких файлов. Причина в том, что символ ? в вашей команде grep расширяется оболочкой перед выполнением.

Таким образом, ваша команда ps делает то, что должна, но grep полностью игнорирует этот ввод, предпочитая grepping файлам в командной строке.

Продемонстрируйте это сами, выполнив что-то вроде:

mkdir ~/tempdir
cd ~/tempdir
ps -eo 'tty,pid,comm' | grep ?

, который создаст пустой каталог (без файлов в нем), что затем позволит ? не раскрыться и передать непосредственно в grep . Затем создайте два файла, подобные этому:

touch a
echo thisisfilebwithana > b

, а затем повторно запустите только grep, например:

grep ?

, и вы увидите

thisisfilebwithana

, потому что grep видел это:

grep a b

который он интерпретировал как «покажи мне все строки из файла b, содержащие букву« а »».

Вместо этого вы, вероятно, захотите избежать знака вопроса:

ps -eo 'tty,pid,comm' | grep \?

или

ps -eo 'tty,pid,comm' | grep '?'
3
28.01.2020, 02:27

Теги

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