Странное поведение «ls -a | grep ^ \. "

Я хотел перечислить содержимое pwd и отобразить только файл, начинающийся с точки. Я попробовал ls -a | grep ^\. ls -a | grep ^\. но я не могу понять, почему вывод содержит также файлы, которые не начинаются с точки. Например:

 Pictures .pip .pki .profile projects Public 

Я знаю, что я могу добиться того, что хочу с помощью ls -ld .* Мне просто интересно об этом поведении grep, которое я не могу объяснить.

  • Подсчитайте количество строк, найденных grep
  • Как grep слово из файла и сохранить его в другой существующий файл?
  • Как показать конкретные строки из определенных столбцов файла
  • Как использовать multiline как group-separator в grep?
  • Объединить два greps в одну команду
  • Как фильтровать сообщение об успешном выполнении при сканировании порта nc
  • Как (Ограниченная память)> grep -F -f file_A file_B >> output.txt
  • Количество файлов, не содержащих заданную строку
  • 3 Solutions collect form web for “Странное поведение «ls -a | grep ^ \. "”

    Ответить аргумент grep , таким образом ls -a | grep '^\.' ls -a | grep '^\.'

    Причина этого в том, что оболочка обрабатывает \. и превращает его обратно в равнину . , который grep обрабатывает как односимвольный шаблон. Если есть сомнения, всегда указывайте строку, содержащую (или может содержать) символ, который является особым для оболочки.

    Вам нужно добавить регулярное выражение grep в кавычки.

     ls -a | grep '^\.' 

    Примечание. Не разбирайте вывод команды ls .

    Если вы выполните cmd ls -a | grep ^ \. то grep не учитывает «\» как особый символ и значение «.». не убегайте.

    Когда мы используем cmd ls -a | grep "^ \". то grep считает «\» особым символом и значением «.». убегает. Это даст вам результат, как ожидалось.

    Если вы хотите использовать grep cmd без кавычек, вам также следует избегать символа «\». Вы можете ожидать ожидаемого результата без двойных кавычек, следуя команде. ls -a | grep ^ \\.

    Подробнее о значении специальных символов в Regex см. Следующую ссылку. http://www.regular-expressions.info/quickstart.html

    Linux и Unix - лучшая ОС в мире.