Как искать файлы из командной строки Linux

Мне нужно сохранить результат команды grep в файл, но я также хочу, чтобы выходной файл был отформатирован и сохранял цвета точно так же, как в терминале.

ответа

В зависимости от того, что вы хотите сделать с выходным файлом, можно добавить цвета в обычный текстовый файл, потому что цвета просто исходят от некоторых специальных символов. Греп, похоже, не хочет печатать их при перенаправлении его в файл, поэтому вам нужно заставить его:

grep —color=always «stuff» >

Теперь, когда вы печатаете файл на консоли, он будет напечатан с помощью цвета, потому что Bash интерпретирует эти символы как «использовать этот цвет».

cat

Однако, если вы откроете его в редакторе, например vim, вы получите некоторые странные символы. Например, когда я использую команды

echo «A sentence. A red sentence. Another sentence.» \ | grep —color=always «A red sentence» >

Выход выглядит правильно, когда я печатаю его с помощью cat, но когда я его открываю в vim, я получаю

A sentence. ^[[01;31m^[[KA red sentence^[[m^[[K. Another sentence. [d4 ] Поэтому, если вы хотите использовать редактор, это, вероятно, не то, что вы хотите.

9 ответ дан MasterOfBinary 24 May 2018 в 05:17 поделиться

  • 1 Правильно !!, я получал эти странные символы между ними и не понимал, что это такое. 26 July 2014 в 12:55
  • 2 Мне очень нравится, насколько просто / эффективно ваш ответ. просто кот выход :). это отлично подходит для краткосрочных (просто для меня достаточно сейчас). Trevor Boyd Smith 23 February 2017 в 01:12
  • 3 Подробно: это терминал (эмулятор), а не bash, который интерпретирует цветовые escape-последовательности (также странные символы). masterxilo 3 May 2018 в 18:46

Если я правильно понял, вы хотите сохранить вывод терминала в текстовом файле, не так ли? Но вы хотите, чтобы он был отформатирован с цветами. Если это так, вот мои идеи:

Выделение вывода автоматически

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

Несмотря на то, что есть простой обходной путь, заключающийся в том, чтобы реализовать свой текстовый редактор, какой файл открывается. Например, предположим, что ваш выход grep имеет некоторые компоненты bash, поэтому фоны bash работают для вас (кстати, часто это цвета, которые вы видите на цветном выходе в терминале). Таким образом, трюк заключается в том, чтобы сохранить вывод текста в файле с соответствующим расширением. Вместо того, чтобы делать что-то вроде:

ls | grep something > output

, вы можете пойти на

ls | grep something >

Что сделает gedit (или любой достойный текстовый редактор) автоматически распознать, что вы говорите о bash кода, и выделит его соответствующим образом. Вам не нужно окрашивать вывод, программа сделает это для вас, если распознает тип кода, который он открывает. Если вы работаете с форматами другого типа, просто адаптируйте расширение к тому, чтобы лучше настроить то, что вы используете (например,> ,> ,> … и т. Д.). Удачи! 🙂

Выделение некоторых слов в выходном файле

Итак, если я его получил, вы хотите выделить слова, которые искали. Опять же, это невозможно сделать в текстовом файле просто потому, что это простой текст. Однако вы можете добавить в него некоторый формат очень простым способом, например, с использованием некоторого кодирования html. Это преобразует ваш результат в html-код, и когда вы откроете его с помощью программы, способной интерпретировать html (libreoffice writer, firefox и 10000 и т. Д.), Вы увидите некоторые слова с высокой яркостью.

Читайте также:  Какой Linux выбрать? Лучшие дистрибутивы Linux

Для этого предположим, что это ваш grep, экспортированный в html:

ls | grep keytext >

И теперь вы хотите выделить ключевой текст в своем выходе. Вы можете использовать sed, чтобы сделать это, например:

sed -i ‘s/keytext/<font color=»red»>keytext<\/font>/g’

И violà, теперь ваш ключевой текст выделен красным цветом.

2 ответ дан Rho 24 May 2018 в 05:17 поделиться

  • 1 хорошая идея !!, но я не ищу подсветку синтаксиса. вы знаете, как grep окрасит ключевое слово поиска другим цветом, обычно красным. Я хочу сохранить это так, чтобы ключевое слово standout в выходном файле. 25 July 2014 в 14:27
  • 2 хорошо, значит, вы что-то раскрашиваете цветом? как html-код? Если вы видите цвет на входе, его нужно сформировать и, следовательно, закодировать где-нибудь, например «fontcolor: red», правильно? Если это так, вам может потребоваться включить код формирования в ваш grep. 🙂 Rho 25 July 2014 в 14:33
  • 3 хорошо, с редактированием в вопросе, который я получаю. 🙂 Какое расширение вы используете? Rho 25 July 2014 в 14:35
  • 4 Я приветствую Perl-код, когда я использовал расширение perl, я получил полную синтаксическую раскраску, и я сглаживаю имя переменной, чтобы оно даже не было окрашено. 25 July 2014 в 14:37

Заключение, несколько советов

Мы рассмотрели основные команды Linux с примерами, надеемся, что они окажутся вам полезными. Напоследок приведем несколько советов по использованию терминала одной строкой.

Двойной символ & (амперсанд)

Предназначен для выполнения нескольких команд последовательно:

команда1 && команда2 && команда3

Вертикальная черта | (pipe)

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

ps axu | grep имя_процесса

Стрелки вверх и вниз на клавиатуре

Помогают осуществлять навигацию по последним командам. Стрелка вверх — предыдущая выполненная команда, стрелка вниз — следующая.

Читайте также:  Как открыть Root права на Android за 1 шаг без компьютера

history — история

Если вы забыли, как вы выполнили действие пять дней назад, а вот оно снова потребовалось, выполните history, и терминал выведет на экран последнюю тысячу команд.

Новая вкладка bash

Не всегда удобно иметь несколько окон. Терминал, как браузер, дает возможность открыть несколько вкладок сочетанием клавиш Ctrl+Shift+T.

Копирование и вставка, прерывание команды

Пробовали ли вы копировать текст и вставлять в терминал? Пробовали Ctrl+C? Ctrl+C прервет выполнение текущей команды, например таблицы процессов, сбросит текст, введенный в строку. Скопировать текст из bash — Ctrl+Shift+C. Вставить текст в bash — Ctrl+Shift+V.

Продолжай учиться

Мы только поверхностно рассказали про команды find, но теперь у вас есть фундаментальное понимание того, как находить файлы на ваших Linux-системах. Убедитесь, что вы поняли команду man find, чтобы получить более глубокое и более полное представление о том, как заставить этот мощный инструмент работать на вас.

Если у вас остались вопросы по теме «Как искать файлы из командной строки Linux» то, пишите нам про них в форму комментариев на нашем сайте. Также обязательно расскажите был ли этот инструмент полезен вам при поиске файлов в Linux. Спасибо большое за визит!

Что такое фильтр?

В Linux есть множество команд фильтрации, таких как awk, grep, sed, spell и wc. Фильтр принимает входные данные от одной команды, выполняет некоторую обработку и выдает выходные данные.

Когда вы передаете две команды по конвейеру, «отфильтрованный» вывод первой команды передается следующей.

Что такое фильтр?

Давайте разберемся в этом на примере.

У нас есть следующий файл ‘sample’

Мы хотим выделить только те строки, которые не содержат символа «а», но результат должен быть в обратном порядке.

Что такое фильтр?

Для этого можно использовать следующий синтаксис.

cat sample | grep -v a | sort — r

Посмотрим на результат.

Что такое фильтр?