Intereting Posts
Добавление нового жесткого диска в VirtualBox Linux VM и установка его на уже установленную точку монтирования – что происходит со старым контентом? Инструменты tslib ничего не рисуют на экране Linux C / C ++ – любой способ создать «прозрачный» сокет SSL / TLS? Добавление команд в изображение initrd Как мне заставить X запускаться без подключения монитора при использовании драйверов NVIDIA? Параллельно с GNU Parallel реализовано в ksh? сохранить буфер ожидания за пределами области видимости? Разница между установкой GRUB на сектор MBR или первый сектор в загрузочном разделе? Прокси все запросы: Linux Как загрузить пакет и его зависимости для OpenSUSE на окнах? Нет аудиокодеков на Fedora 21 Пользовательская команда при нажатии кнопки питания на GNOME 3.20 Помощь с доступом к сайту apache Кликируемые PDF-файлы в rxvt Не удается найти раздел, где я установил окна после того, как я установил arch linux и grub

grep. * возвращает результаты из .bash_history и жалуется на

Я новичок в Linux, и до сих пор я играл с некоторыми утилитами, в частности утилитой grep. Я решил создать новый файл (метко названный «newfile») со следующим содержимым:

Lady of the night, I hold you close to me, And everything is out of sight, I think I'll be alright. 

Когда я пытаюсь запустить его через grep, введя «grep. * Newfile», я ожидал появления только строк файла; однако он напечатал несколько результатов, начиная с:

 grep: ..: Is a directory 

И следуйте за всей .bash_history (которую я оставлю для того, чтобы сохранить этот пост коротким), а затем содержимое нового файла. Почему это так? Есть ли способ исправить это? Должен ли я изменить свое регулярное выражение?

Сделай эксперимент! Бег

 echo grep .* newfile 

Что вы можете сделать из результата? Как результат изменяется, когда вы указываете (помещаете в одиночные или двойные кавычки) первый аргумент grep?

Если вы хотите получить прямую допинг, прочитайте спецификацию POSIX для расширения Pathname . Знание всего о различных расширениях превратит вас в гуру-оболочку в мгновение ока 🙂

Оболочка интерпретирует ваш * , не передавая его в grep как регулярное выражение. Чтобы использовать поиск в регулярном выражении с помощью grep , вам нужно передать ему параметр, указывающий, что это «это регулярное выражение» – при моей установке это -e . Попробуйте grep -e '.*' newfile .

Указав точку перед звездочкой (. *) И именем файла (newfile), вы сообщаете grep о поиске шаблона .\* В файле newfile, а оболочка расширяется .\* Для включения точечных файлов в ваш каталог.

Вы, вероятно, хотите что-то вроде:

 cat newfile 

который будет печатать строки вашего файла.