Red Hat Linux 7.2: Официальное руководство по основам работы с Red Hat Linux | ||
---|---|---|
Назад | Глава 10. Основы командной строки | Вперед |
Вы уже познакомились с несколькими базовыми командами оболочки, работающими с текстовыми файлами. Здесь приведены еще несколько.
Вы можете воспользоваться командой head если вам нужно взглянуть только на начало файла. Команда выглядит так:
head <filename> |
Команда Head может быть полезна, но так как она показывает только первых несколько строк, вы не узнаете насколько велик сам файл. По умолчанию, вы можете просмотреть первых десять строк файла, хотя вы можете изменить это число, выполнив следующую команду:
head -20 <filename> |
Обратное head действие выполняет tail. С помощью tail вы можете просмотреть последние десять строк файла.
Команда grep используется для поиска в файле заданных текстовых строк. Например, если вы хотите найти все упоминания слова "coffee" в файле sneakers.txt, выполните:
grep coffee sneakers.txt |
Вы увидите все строки этого файла, в которых нашлось слово "coffee".
Не забывайте о регистре | |
---|---|
Если не указано обратное, grep ищет с учётом регистра. Это означает что поиск Coffee отличается от поиска coffee. Среди множества параметров grep есть -i, который указывает, что поиск должен выполняться без учёта регистра символов. Прочитайте страницу man по grep man чтобы узнать больше об этой команде. |
Вы можете использовать каналы и перенаправление вывода когда хотите сохранить и/или напечатать информацию для последующего использования.
Например, вы можете воспользоваться командой grep чтобы найти в файле требуемый текст, а затем сохранить результат в файле или отправить его на принтер.
Чтобы напечатать информацию, например, касающуюся слова "coffee" в файле sneakers.txt, введите:
grep coffee sneakers.txt | lpr |
Как быть если вы забыли имя файла, который вам нужен? Воспользовавшись знаками подстановки или регулярными выражениями, вы можете выполнять с файлом или файлами действия, не зная его(их) полного имени. Просто введите всё что знаете, и замените остальное знаком *.
Дополнительная информация о знаках подстановки и регулярных выражениях | |
---|---|
Чтобы узнать больше о знаках подстановки и регулярных выражениях, обратитесь к странице руководства, посвященной bash (man bash). Вспомните о том, что вы можете сохранить полученную информацию в текстовом файле, выполнив команду man bash | col -b > bash.txt. Затем вы можете открыть и прочитать файл с помощью less или pico (pico bash.txt). Если вы хотите распечатать файл, будьте осторожны, он довольно большой. |
Зная, что файл называется "sneak____.txt," просто введите:
ls sneak*.txt |
и вот полное имя файла:
sneakers.txt |
Скорее всего при поиске вы чаще будете использовать знак умножения (*). При поиске с этим знаком найдется всё, соответствующее заданному шаблону. Даже выполнив:
ls *.txt |
или:
ls sn* |
Вы найдёте файл sneakers.txt и все остальные, имена которых начинаются с "sn". Это позволяет максимально расширить область поиска.
Одним из способов уменьшения области поиска, является использование знака вопроса (?). Также как знак умножения, ? помогает находить файл, удовлетворяющий условию поиска.
Однако ? используется для замены всего одного символа, поэтому если вы ищете sneaker?.txt, в результате вы найдете файл sneakers.txt, и/или sneakerz.txt, если такой файл существует.
В случае, если знак умножения входит в имя файла, как могло бы быть, если файл sneakers.txt назывался бы sneak*.txt, вам понадобятся регулярные выражения.
Регулярные выражения более сложны, чем прямолинейные знаки вопроса и умножения.
С помощью обратной косой черты (\), вы можете определить, что вы не хотите искать всё как происходит, если вы укажите знак умножения, а вам нужен именно знак умножения в имени файла.
Если файл называется sneak*.txt, введите:
sneak\*.txt |
Ниже приведён краткий список знаков подстановки и регулярных выражений:
* — Соответствует любому количеству любых символов
? — Соответствует одному любому символу в строке (например, sneaker?.txt)
\* — Соответствует символу *
\? — Соответствует символу ?
\) — Соответствует символу )