Grep не работает поиск шаблона во всех файлах

Автор Sandorin, 21 августа 2023, 00:57:25

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Sandorin

Всем привет. На сайте hexlet.io в "Основы командной строки - Grep", один из примеров не работает на Debian GNU/Linux 11 (bullseye).


ЦитироватьИногда мы не знаем, в каком файле находится то, что мы ищем. При этом мы можем знать директорию, в которой лежит этот файл.

В такой ситуации нужно сделать два изменения:

Добавить опцию -r — она указывает, что надо искать внутри директории. Обратите внимание, что поиск идет рекурсивно, то есть с включением всех поддиректорий
Указать путь до директории, а не файла
Попробуем применить утилиту grep с опцией -r:
grep -r bashrc .
 #Вывод в примере на сайте
./.profile:    # include .bashrc if it exists
./.profile:    if [ -f "$HOME/.bashrc" ]; then
./.profile: . "$HOME/.bashrc"
./.bash_history:du -sh .bashrc
./.bash_history:stat .bashrc
./.bash_history:stat -h .bashrc
./.bash_history:file .bashrc
./.bash_history:stat .bashrc
./.bash_history:cat .bashrc
./.bashrc:# ~/.bashrc: executed by bash(1) for non-login shells.
./.bashrc:# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
./.bashrc:# sources /etc/bash.bashrc).

Пишу (не копирую) у себя в терминале (Guake Terminal: 3.6.3)
grep -r bashrc .и после этого нет никакого вывода. Просто курсор стоит на следующей строке. В соседней вкладке смотрю через top список процессов

ID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                       
  16675 sandorin  20   0    6400   2468   2240 R  18,3   0,0   0:05.51 grep


Сначала подумал проблема в терминале, проверил в стандартном (Эмулятор терминала для рабочего стола GNOME
Используется VTE версии 0.62.3 +BIDI +GNUTLS +ICU +SYSTEMD), такая же ситуация.

Предположил, что проблема в работе с . (точкой, которая подразумевает корневой каталог "/"), заменил в точку на слеш 
grep -r bashrc /
в этом случае находит только папки второй учетной записи на данном ПК.

Почему не работает?

ek-nfn

#1
в хелпе такое описание, походу точка лишняя, без нее выводит. Хотя и с ней тоже самое выводит, но это в 12-м дебиане (5 девуан)
Если в качестве ФАЙЛА указан символ «-», то читается стандартный ввод.
Если ФАЙЛ не указан, то читается текущий каталог «.»  и «-» в противном
случае.
Debian 12  -> Devuan 5 xfce -> MX Linux 23

Sandorin

Не работает без точки. Точно такая же выдача.

ek-nfn

Цитата: Sandorin от 21 августа 2023, 23:18:04Не работает без точки. Точно такая же выдача.
Сейчас кто-нибудь зайдет с 11-м дебианом и попробует, с целью определится локальная проблема или системная
Debian 12  -> Devuan 5 xfce -> MX Linux 23

dzhoser

Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

ek-nfn

#5
Цитата: Sandorin от 21 августа 2023, 00:57:25и после этого нет никакого вывода. Просто курсор стоит на следующей строке.
Кстати, после запуска стоит и надо ждать вывода окончательного результата секунд 10. И это c диском ssd-nvme на шине pci-e и cpu 24 потока. Если машинка слабее, то, полагаю, ждать дольше. быстро выводится при запуске из домашней только
./.bashrc:# ~/.bashrc: executed by bash(1) for non-login shells.
./.bashrc:# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
./.bashrc:# sources /etc/bash.bashrc).
Все остальное ждать 10 секунд

Проверил, все три варианта, вывод одинаков
grep -r bashrc
grep -r bashrc .
grep -r bashrc ./

А это дает уже совсем другой результат
grep -r bashrc /
Debian 12  -> Devuan 5 xfce -> MX Linux 23

Sandorin

Цитата: dzhoser от 22 августа 2023, 07:29:06apt-get install --reinstall grep

сделал, но не помогло. но спасибо.

Цитата: ek-nfn от 22 августа 2023, 07:34:27Если машинка слабее, то, полагаю, ждать дольше. быстро выводится при запуске из домашней только

благодарю за подробности и столь точную проверку.

P.S. Как сказал мой товарищ ChubaDuba

Цитироватьесли бы grep не работал в Debian шухеру бы было!!!

Поэтому пошел обновляться до 12. После отпишусь


qupl

Цитата: Sandorin от 21 августа 2023, 00:57:25Предположил, что проблема в работе с . (точкой, которая подразумевает корневой каталог "/"), заменил в точку на слеш 
Точка подразумевает текущий каталог, а не корневой.
Перед вашей командой проверьте текущий каталог, что и где ищите.

Sandorin

А команда grep умеет искать скрытые файлы?

Например .bashrc?

ChubaDuba

#9
Цитата: Sandorin от 21 октября 2023, 22:47:06А команда grep умеет искать скрытые файлы?

Например .bashrc?
Умеет:
$ ls -a | grep "^\."
Но можно и без grep:
$ ls -ld .?*

Sandorin

Цитата: ChubaDuba от 21 октября 2023, 23:47:44
Цитата: Sandorin от 21 октября 2023, 22:47:06А команда grep умеет искать скрытые файлы?

Например .bashrc?
Умеет:
$ ls -a | grep "^\."
Но можно и без grep:
$ ls -ld .?*

да, но вопрос изначально то был в поиске файла с названием ВЕЗДЕ в системе. Или я что то неправильно понял?

yoric

Цитата: dzhoser от 22 августа 2023, 07:29:06apt-get install --reinstall grep
Цитата: Sandorin от 22 августа 2023, 23:57:32сделал, но не помогло. но спасибо
Конечно, это виндовая привычка, тут не работает.