Некоторые базовые полезные команды
Мы уже предоставили вам базовую разбивку сценариев оболочки и примерный контур для циклов, но не забудьте проверить эти статьи, если вы до сих пор пропустили наш совет по сценариям оболочки.
Командная строка замечательна по многим причинам, и перенаправление является одним из самых выдающихся. Если вам нужно было записать и воспроизвести вывод каждой команды, чтобы предпринять дальнейшие действия или использовать это для чего-то другого, тогда мы все давно сошли с ума. Перенаправление позволяет использовать этот вывод и сохранять его или сразу использовать в качестве ввода для другой команды. Мы также можем использовать файлы в качестве входов для других команд.
Прежде чем мы продолжим, давайте рассмотрим некоторые основные команды, которые могут быть полезны во многих разных местах.
эхо - Эта команда просто печатает (отображает) всю полноту своего аргумента в командной строке как вывод
echo argument with spaces
кошка - Эта команда отображает содержимое текстовых файлов в качестве вывода.
cat file_to_be_read
Предположим, мы создаем этот текстовый файл в nano:
grep pattern file
Перенаправление выходов
Чтобы перенаправить вывод команды в файл, мы используем специальный символ - символ большего (>).
Давайте изменим наш список, не так ли? Введите следующую команду:
echo pepperoni > list
Также обратите внимание, что предыдущее содержимое «списка» было удалено. Попробуйте снова:
echo yellow peppers >> list
Давайте возьмем вывод команды и поместим ее в файл:
ls –al / > ~/rootlist
Трубопроводы или цепочки
Трубопровод назван так потому, что он использует канал, (|; общий с ключом на большинстве клавиатур). По сути, он берет вывод одной команды и напрямую передает ее другому. Вы можете создать длинные цепочки команд, чтобы получить очень специфический желаемый результат таким образом, и это очень удобно для команд, таких как grep.
Он действует как «>», за исключением того, что он может быть привязан несколько раз, и его эффект более общий, поскольку ему не нужно проходить через текстовый файл.
Как вы можете видеть, grep чувствителен к регистру. Вы можете использовать флаг «-i», чтобы игнорировать его.
Перенаправление входов
Вы также можете принимать входные данные от файлов для команд, используя символ меньше (<).
cat < list
Предположим, мы хотим отфильтровать любое слово, которое имеет «pep» в нем из нашего текущего «списка», в новый файл под названием «revisions».
grep pep < list > revisions
grep pep < list | sort > revisions
Чтобы проиллюстрировать команду sort, давайте рассмотрим следующий пример:
Простой скрипт
Давайте создадим скрипт, который имеет следующую форму:
script searchterm listfile
Он примет этот термин и будет использовать grep для поиска в файле списка, сортировки результатов и последующего вывода их в другой файл.
И мы можем создать список того, что здесь, а затем запустить скрипт.
Что касается сортировки, вы можете сделать больше, чем просто сортировать по алфавиту. Взгляните на страницу руководства для некоторых из следующих команд:
- tsort - более совершенная функция топологической сортировки
- tr - позволяет сопоставлять определенные символы другим символам и транскрибировать между ними.
- uniq - удаляет любые не уникальные (чтение: дубликат)
- awk - действительно продвинутый язык / функция обработки текста, который может использоваться для разделения полей в именах файлов
- cut, paste / join - команды, полезные для выделения полей из текстовых файлов и добавления новых данных в столбцы
- look - поиск, подобный grep, но использует файл словаря (который может быть задан пользователем) для поиска
- wc - позволяет вам подсчитывать количество слов, количество строк, количество символов и т. д.
Сегодня мы рассмотрели некоторые основы, которые могут быть полезны в командной строке, как и в сценариях. Текстовые данные часто лежат в основе того, что мы используем ежедневно, поэтому возможность работать с ним, искать его и манипулировать им является ключевым.
Каковы некоторые из ваших любимых сценариев? Есть ли специальные скрипты для текстовых файлов? Поделитесь тем, что вы знаете в комментариях!