Руководство для начинающих по написанию сценариев в оболочке 3 Основные команды и цепочки
Вы узнали, как создавать сценарии, использовать аргументы и создавать циклы. Теперь давайте рассмотрим некоторые более простые команды, манипулирование текстовыми файлами и перенаправление ввода и вывода в файлы и другие команды..
Некоторые основные полезные команды
Мы уже дали вам базовую разбивку сценариев оболочки и наброски циклов for на основе примеров, но обязательно ознакомьтесь с этими статьями, если вы до сих пор пропустили наше руководство по сценариям оболочки.
Командная строка замечательна по многим причинам, и перенаправление является одним из наиболее заметных. Если бы вам приходилось записывать и воспроизводить вывод каждой команды, чтобы предпринять дальнейшие действия или использовать это для чего-то другого, то мы все давно бы сошли с ума. Перенаправление позволяет нам использовать этот вывод и сохранить его или сразу использовать как ввод для другой команды. Мы также можем использовать файлы в качестве входных данных для других команд.
Прежде чем мы продолжим, давайте рассмотрим некоторые основные команды, которые могут быть полезны во многих местах.
эхо - Эта команда просто печатает (отображает) весь свой аргумент в командной строке как вывод
эхо аргумент с пробелами
Как видите, специальные символы должны быть экранированы, чтобы с ними обращались нормально. Это делается с помощью обратной косой черты (\) перед символом. Лучше использовать кавычки. Команда echo также работает с переменными.
Как видите, одинарные и двойные кавычки ведут себя по-разному. Для получения дополнительной информации, посмотрите, в чем разница между одинарными и двойными кавычками в Bash Shell?
кошка - Эта команда отображает содержимое текстовых файлов в качестве вывода.
cat file_to_be_read
Допустим, мы создаем этот текстовый файл в nano:
Когда мы используем команду cat для файла, мы видим его вывод.
grep - это одна из самых мощных и полезных команд, доступных вам в Linux. Это расшифровывается как Global / Regular Expression Print. Он просматривает файл и печатает любую строку, соответствующую определенному шаблону. Поскольку этот шаблон основан на «регулярном выражении», сжатая линия может дать множество шаблонов, которые должны быть сопоставлены. Для нет, вы можете ввести крачку для поиска.
файл шаблона grep
Уверяю вас, grep может сделать больше, но сейчас давайте придерживаться более простых вещей.
Перенаправление выходов
Чтобы перенаправить вывод команды в файл, мы используем специальный символ, символ «больше» (>).
Давайте изменим наш список, не так ли? Введите следующую команду:
эхо пепперони> список
Вы можете видеть, что echo больше не отображает строку, и когда мы смотрим на содержимое файла «list», мы видим, что мы там повторили.
Также обратите внимание, что предыдущее содержимое «списка» было удалено. Попробуйте снова:
Это может быть полезно, когда вы хотите повторно использовать файл, но часто мы просто хотим добавить к существующему файлу. Для этого мы используем два последовательных символа «больше»:
эхо желтого перца >> список
Легко! Давайте использовать эту команду, чтобы создать большой список, будем?
Там мы идем. Я думаю, вы можете понять, почему так много гиков используют командную строку для создания списков дел и тому подобного, но это становится еще лучше.
Давайте возьмем вывод команды и поместим его в файл:
ls -al /> ~ / rootlist
Создание списков файлов, их редактирование, а затем запуск команд на те, которые вы хотите, никогда не было проще. И хотя мы выполняем эти основные функции в командной строке, они хорошо работают и в сценариях.
Трубопровод или Цепочка
Трубопровод назван так, потому что он использует канал (|; на большинстве клавиатур используется клавиша \). По сути, он принимает выходные данные одной команды и напрямую передает их другой. Вы можете создавать длинные цепочки команд, чтобы получить очень специфический желаемый результат таким образом, и это очень удобно для таких команд, как grep.
Он действует очень похоже на «>», за исключением того, что он может быть связан несколько раз, и его эффект является более общим в том смысле, что ему не нужно проходить через текстовый файл.
Как видите, grep чувствителен к регистру. Вы можете использовать флаг «-i», чтобы игнорировать регистр.
Перенаправление входов
Вы также можете получать входные данные из файлов для команд, используя символ «меньше» (<).
кошка < list
«Это ничем не отличается от использования аргумента!» - скажете вы. Ну, вы были бы правы в этом случае. Где действительно полезно перенаправление ввода - объединение команд.
Допустим, мы хотим отфильтровать любое слово с «pep» из нашего текущего файла «list» в новый файл с именем «revisions»..
grep pep редакции
Давайте повторим эту команду и добавим сортировку.
grep pep редакции
Это будет использовать «pep» в качестве поискового термина из «списка» входного файла, отсортировать его в алфавитном порядке (все термины в верхнем регистре, а затем все термины в нижнем регистре), а затем вывести его в файл «редакции».
Чтобы проиллюстрировать команду сортировки, давайте рассмотрим следующий пример:
Как видите, добавление флага «-f» к команде сортировки позволяет игнорировать регистр. Это позволяет нам легко размещать строки в текстовых файлах по алфавиту и игнорировать заглавные буквы, когда это не имеет значения.
Простой скрипт
Давайте создадим скрипт, который имеет следующую форму:
скрипт searchterm listfile
Он возьмет термин и использует grep для поиска в файле списка, сортировки результатов и вывода их в другой файл..
Вот каталог, в котором мы будем тестировать скрипт:
И мы можем создать список того, что здесь, а затем запустить скрипт.
Там вы идете! Чем больше вы изучаете правила регулярных выражений, тем точнее вы можете составить команду поиска. И все, что допустимо в кавычках, может быть заменено вашим первым аргументом!
Что касается сортировки, вы можете сделать больше, чем просто сортировать по алфавиту. Посмотрите на справочную страницу для некоторых из следующих команд:
- tsort - более продвинутая функция топологической сортировки
- tr - позволяет отображать определенные символы на другие символы и транскрибировать между ними.
- uniq - удаляет все неуникальные (читай: дубликаты)
- awk - действительно продвинутый язык / функция обработки текста, который можно использовать для разделения полей в именах файлов
- cut, paste / join - команды, полезные для выделения полей из текстовых файлов и добавления новых данных в столбцы
- look - выполняет поиск, как grep, но для поиска использует файл словаря (который может быть указан пользователем)
- wc - позволяет получить количество слов, количество строк, количество символов и многое другое
Сегодня мы рассмотрели еще некоторые основы, которые могут быть столь же полезны в командной строке, как и в скриптах. Текстовые данные часто лежат в основе вещей, которые мы используем ежедневно, поэтому ключевым моментом является возможность работать с ними, искать их и манипулировать ими..
Какие ваши любимые сценарии? Есть ли специальные сценарии для текстовых файлов? Поделитесь тем, что вы знаете, в комментариях!