Фундаментальные основы linux. часть ii: первые шаги в изучении интерфейса командной строки

5 практических примеров команды Tail в Linux

Давайте узнаем, как использовать команду tail в Linux с некоторыми практическими примерами. Мы будем использовать этот текстовый файл в этой статье:

Загадочное происшествие на Брайтон Бич Тайный Противник Убийство по ссылкам Человек в коричневом костюме Секрет дымовых труб Погода в Кацапетовке Большая четверка Странный пассажир полуночного экспресса Гарри Поттер Все на Матч Морские дьяволы Статьи о Linux Искусственный интеллект SQL для начинающих Дистрибутив Linux Убийство в восточном экспрессе Незаконченный Портрет Почему они не спросили Эванса? Три Акта Трагедии Смерть в облаках

Если вы используете команду tail без какой-либо опции, она будет печатать последние 10 строк. Это поведение по умолчанию команды tail.

tail agatha.txt Морские дьяволы Статьи о Linux Искусственный интеллект SQL для начинающих Дистрибутив Linux Убийство в восточном экспрессе Незаконченный Портрет Почему они не спросили Эванса? Три Акта Трагедии Смерть в облаках

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

Но вам не нужно довольствоваться использованием команды tail по умолчанию. Это еще не все. Давайте рассмотрим наиболее частое использование хвостовых команд по одному.

1. Распечатайте последние N строк с помощью команды tail

Чтобы просмотреть последние N строк, вместо 10 по умолчанию вы можете использовать команду tail следующим образом:

tail -n N

Например, если вы хотите увидеть последние 5 строк с командой tail в нашем файле примера, вы можете использовать его следующим образом:

tail -n 5 agatha.txt Убийство в восточном экспрессе Незаконченный Портрет Почему они не спросили Эванса? Три Акта Трагедии Смерть в облаках

Совет

Вы также можете просто использовать tail -N вместо tail -n N для отображения последних N строк файла.

2. Распечатайте все строки, начиная с номера строки N

Если вы хотите просмотреть все строки, начинающиеся с номера строки N, вы можете использовать здесь опцию +.

tail -n +N

В нашем примерном файле, если вы хотите увидеть все строки, начиная с строки 7, вы можете использовать его следующим образом:

tail -n +7 agatha.txt Большая четверка Странный пассажир полуночного экспресса Гарри Поттер Все на Матч Морские дьяволы Статьи о Linux Искусственный интеллект SQL для начинающих Дистрибутив Linux Убийство в восточном экспрессе Незаконченный Портрет Почему они не спросили Эванса? Три Акта Трагедии Смерть в облаках

3. Использование нескольких файлов с командой tail

Команда tail позволяет вам одновременно использовать несколько файлов. Все стандартные опции команды tail применимы к нескольким файлам.

tail -n N

Результат объединяется для всех файлов, и по умолчанию имя файла отображается в строках, начинающихся с «==>».

Например, если вы хотите увидеть последние три строки файлов sherlock.txt и agatha.txt, это будет выглядеть так:

tail -n3 sherlock.txt agatha.txt ==> sherlock.txt <== Приключение благородного холостяка Приключение Берилл Коронет Приключение Алисы в стране чудес ==> agatha.txt <== Почему они не спросили Эванса? Три Акта Трагедии Смерть в облаках

Совет

Вы можете удалить имена файлов с вывода, используя тихий режим с опцией -q.

Предположим, у вас есть файл, и к нему добавлен новый контент. Команда tail позволяет вам отображать все новые строки по мере их добавления в файл.

Для этого вы можете использовать опцию -f.

tail -f

Команда сначала отобразит последние 10 строк файлов, а затем обновит вывод, когда новые строки будут добавлены в файл.

Это широко используется для просмотра файлов журнала в реальном времени. Это, пожалуй, наиболее практическое использование команды tail.

СоветЕсли вы используете -F вместо опции -f, команда tail будет ждать создания входного файла (если он еще не существует), а затем отображает содержимое файла в режиме реального времени.

5. Использование команды tail с pipes

Команда tail может использоваться в сопряжении с другими командами с использованием pipes.

Например, если у вас слишком много файлов в каталоге, и вы хотите видеть только последние 3 измененных файла, вы можете использовать его следующим образом:

ls -ltr | tail -n3

В приведенной выше команде ls -lrt перечисляет все файлы в обратном хронологическом порядке. И тогда команда tail дополнительно анализирует этот вывод и отображает только последние три строки вывода команды ls, и поэтому мы получаем список из трех последних измененных файлов.

Просмотр всех файлов

Вы можете просто использовать подстановочный знак оболочки следующим образом:
Чтобы просмотреть только файлы (c) * .c, введите:
Другой вариант — bash for loop или ksh for loop :

#!/bin/bash
for f in sourceproject10/*.pl
do
   echo "*****  ****"
   cat -n "$f"
   echo "*****  ****"
done

#!/bin/bash
for f in /source/project10/*.pl
do
echo «***** ****»
cat -n «$f»
echo «***** ****»
done

ИЛИ то же самое с использованием оболочки ksh :

#!/bin/ksh
for f in $(ls sourceproject10/*.pl)
do
        print "***  ****"
        cat  "$f"
        print "***  ****"
done

#!/bin/ksh
for f in $(ls /source/project10/*.pl)
do
print «*** ****»
cat «$f»
print «*** ****»
done

Утилита cat

Утилита является одним из наиболее универсальных инструментов операционной системы. Все, что она делает — это копирует данные из стандартного потока ввода в стандартный поток вывода. Данная утилита в комбинации с командной оболочкой позволяет реализовать мощные и разнообразные механизмы обработки данных. Воспользуемся примерами для иллюстрации этих механизмов. Первый пример является достаточно простым и вы можете использовать рассмотренную в нем команду в повседневной работе для вывода содержимого файла на экран. В том случае, если данные из файла не умещаются на экране, будет осуществлена прокрутка до конца файла.

paul@laika:~$ cat /etc/resolv.conf
nameserver 194.7.1.4
paul@laika:~$

Объединение файлов

Имя утилиты является сокращенной формой слова (объединить). Одним из наиболее простых сценариев использования данной утилиты является объединение файлов в рамках файла большего объема (или полного файла).

paul@laika:~$ echo один > part1
paul@laika:~$ echo два > part2
paul@laika:~$ echo три > part3
paul@laika:~$ cat part1 part2 part3
один
два
три
paul@laika:~$

Создание файлов

Также вы можете использовать утилиту для создания текстовых файлов. Введите команду , приведенную в примере ниже. После этого введите одну строку или несколько строк текста, завершая ввод каждой из строк нажатием клавиши Enter. После ввода последней строки текста нажмите и удерживайте клавишу Ctrl и одновременно с этим кратковременно нажмите клавишу d.

paul@laika:~/test$ cat > winter.txt
Сегодня очень холодно!
paul@laika:~/test$ cat winter.txt 
Сегодня очень холодно!
paul@laika:~/test$

Комбинация клавиш позволяет передать исполняющемуся процессу (End of File — EOF), что приведет приведет к завершению исполнения процесса .

Специальный маркер окончания файла

Вы можете установить специальный маркер окончания файла для утилиты с помощью параметра таким образом, как показано в примере. Данная конструкция называется локальной директивой () и позволяет завершать работу процесса cat.

paul@laika:~/test$ cat > hot.txt <<stop
> Сегодня жарко!
> Да, это лето.
> stop
paul@laika:~/test$ cat hot.txt 
Сегодня жарко!
Да, это лето.
paul@laika:~/test$

Копирование файлов

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

paul@laika:~/test$ cat winter.txt 
Сегодня очень холодно!
paul@laika:~/test$ cat winter.txt > cold.txt
paul@laika:~/test$ cat cold.txt 
Сегодня очень холодно!
paul@laika:~/test$

Фильтры в Linux

Фильтры — это способ получения необработанных данных, созданных другой программой или сохраненных в файле.

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

В приведенных ниже примерах мы будем предоставлять данные для этих программ с помощью файла.

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

СКРИН

head

Head — это программа, которая печатает первые строки ввода. По умолчанию он напечатает первые 10 строк, но мы можем изменить это с помощью аргумента командной строки.

head

tail

Данная команда противоположна head. Tail — это команда, которая печатает последние строки ввода. По умолчанию он напечатает последние 10 строк, но мы можем изменить это с помощью аргумента командной строки.

tail

Выше было поведение tail по умолчанию. А ниже указывается заданное количество строк.

sort

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

sort

nl

Обозначение чисел в Linux реализуется за счет команды nl.

nl

Вот еще несколько полезных опций командной строки.

В приведенном выше примере мы использовали 2 параметра командной строки. Первый -s указывает, что следует печатать после числа. С другой стороны, второй -w указывает, сколько отступов ставить перед числами. Для первого нам нужно было включить пробел как часть того, что было напечатано.

Поскольку пробелы обычно используются в качестве символов-разделителей в командной строке, нам нужен был способ указать, что пробел является частью нашего аргумента, а не просто между аргументами. Мы сделали это, включив аргумент в кавычки.

wc

wc обозначает количество слов, а также символы и строки. По умолчанию он подсчитывает все вышеперечисленное. Между тем, используя параметры командной строки, мы можем ограничить его только тем, что нам нужно.

wc

Иногда вам просто нужно одно из этих значений. -l даст нам только строки, -w даст нам слова, а -m даст нам символы.

Кроме того, Вы можете комбинировать аргументы командной строки.

cut

Cut — это хорошая команда, которую можно использовать, если ваш контент разделен на столбцы и вам нужны только определенные поля.

вырезать

В нашем примере файла у нас есть данные в 3 столбцах. Допустим, мы хотели только первый столбец.

По умолчанию cut использует символ TAB в качестве разделителя для идентификации полей. Опция -f позволяет нам указать, какое поле мы бы хотели. Если нам нужно 2 или более полей, мы разделяем их запятой, как показано ниже.

sed

Sed расшифровывается как Stream Editor и позволяет эффективно выполнять поиск и замену наших данных. Это довольно мощная команда, но мы будем использовать ее здесь в ее базовом формате.

sed <выражение>

Инициал s обозначает замену и определяет действие, которое нужно выполнить. Между первой и второй косой чертой (/) мы размещаем то, что ищем. Затем между вторым и третьим слэшем, чем мы хотим его заменить.

uniq

Uniq означает уникальный, и его работа заключается в удалении повторяющихся строк из данных. Однако одно ограничение заключается в том, что эти линии должны быть смежными.

uniq

tac

Ребята из Linux известны своим забавным чувством юмора. Программа TAC на самом деле является CAT наоборот. Это было названо так, как это делает противоположность CAT. Получив данные, он напечатает последнюю строку первой, вплоть до первой строки.

TAC

Параметры для iflag, oflag:

Также отдельно стоит рассмотреть параметры и . Они позволяют задать дополнительные флаги: — для устройств ввода, а — для вывода.

Наиболее популярные флаги:

  • — режим дописывания данных в файл. применяют только для вывода. Когда вы объедините этот флаг с конструкцией “”, нужно еще указать параметр “”, чтобы выходной файл не был обрезан из-за добавления новых данных.
  • — режим обработки данных в обход кэша. Этот флаг повышает скорость.
  • — запись данных с синхронизацией. Этот флаг повышает надежность.
  • —  так же как и , но и с метаданными.
  • — выдавать ошибку, при использовании каталога.
  • — чтение только полных блоков. Применяется только для .
  • — не обновляет время доступа к элементам файловой системы. Флаг повышает скорость.
  • — запрет на переход по символическим ссылкам.

8) Кодируем символы с помошью ROT

ROT (Caesar Cipher) — это тип криптографии, в котором кодирование выполняется путем перемещения букв в алфавите к его следующей букве.

Давайте проверим, как использовать tr для шифрования.

В следующем примере каждый символ в первом наборе будет заменен соответствующим символом во втором наборе.

Первый набор (это значит abcdefghijklmnopqrstuvwxyz). Второй набор (который содержит pqrstuvwxyzabcdefghijklmn).

tr 'a-z' 'p-za-n'

Простая команда для демонстрации вышеуказанной теории:

$ echo 'abg' | tr 'ab' 'ef'
efg

Полезно при шифровании электронных адресов:

$ echo '[email protected]' | tr 'A-Za-z' 'N-ZA-Mn-za-m
[email protected]

Как использовать команду ps

Общий синтаксис команды ps выглядит следующим образом:

ps 

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

  • Опции стиля UNIX, перед которыми стоит одна черточка.
  • Варианты стиля BSD, используемые без тире.
  • Длинные опции GNU, начинающиеся с двух тире.

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

В простейшей форме, когда используется без какой-либо опции, ps будет напечатано четыре столбца информации для минимум двух процессов, запущенных в текущей оболочке, самой оболочки и процессов, которые выполняются в оболочке при выполнении команды.

ps

Вывод включает в себя информацию о shell (bash) и процессе, запущенном в этой оболочке (введенная вами команда ps):

  PID TTY          TIME CMD
 1809 pts/0    00:00:00 bash
 2043 pts/0    00:00:00 ps

Четыре колонки помечены PID, TTY, TIMEи CMD.

PID- Идентификатор процесса. В большинстве случаев при запуске psкоманды наиболее важной информацией, которую ищет пользователь, является идентификатор процесса. Знание PID позволяет убить сбойный процесс.
TTY – Название управляющего терминала для процесса.
TIME – Совокупное время ЦП процесса, показанное в минутах и ​​секундах.
CMD – Имя команды, которая использовалась для запуска процесса.

Вывод выше не очень полезен, так как он не содержит много информации. Настоящая сила команды ps появляется при запуске с дополнительными опциями.

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

Команда ps чаще всего используется со следующей комбинацией параметров:

Форма BSD:

ps aux
  • Опция a указывает ps вывести на дисплей процессы всех пользователей, за исключением тех процессов, которые не связаны с терминалом и процессами группы лидеров.
  • В u – подставки для ориентированных на пользователя формате, который обеспечивает подробную информацию о процессах.
  • Опция x в ps перечисляет процессы без управляющего терминала. В основном это процессы, которые запускаются во время загрузки и работают в фоновом режиме.

Команда будет отображать информацию в одиннадцати столбцах USER, PID, %CPU, %MEM, VSZ, RSS, STAT, START, TTY, TIMEи CMD.

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.8  77616  8604 ?        Ss   19:47   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S    19:47   0:00 
...

Мы уже объяснили метки PID, TTY, TIMEи CMD. Вот объяснение других меток:

  • USER – Пользователь, который запускает процесс.
  • %CPU- Процесс использования процессора .
  • %MEM – Процент резидентного установленного размера процесса к физической памяти на машине.
  • VSZ – Размер виртуальной памяти процесса в KiB.
  • RSS- Размер физической памяти , используемой процессом.
  • STAT- Код состояния процесса, который может быть Z (zombie), S (sleeping), R (running)  .. и т. д.
  • START – время, когда команда началась.

Чтобы напечатать дерево процессов, добавьте опцию f. Это укажет ps отобразить древовидное представление дочерних процессов.

ps auxf

Команда ps также позволяет вам сортировать вывод. Например, чтобы отсортировать вывод на основе использования памяти, вы бы использовали:

ps aux --sort=-%mem

форма  UNIX:

ps -ef
  • Опция e указывает ps отобразить все процессы.
  • f – полноформатный список, который содержит подробную информацию о процессах.

Команда будет отображать информацию в столбцах UID, PID, PPID, C, STIME, TIME и CMD.

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 19:47 ?        00:00:01 /sbin/init
root         2     0  0 19:47 ?        00:00:00 
...

Метки, которые еще не объяснены, имеют следующее значение:

  • UID – То же USER, что и пользователь, который запускает процесс.
  • PPID – Идентификатор родительского процесса.
  • C- То же %CPU, что процесс загрузки процессора.
  • STIME- То же START, что и время начала команды.

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

ps -f -U andreyex -u andreyex

Как Пользоваться Командой Tail?

Помните, что сначала вам нужно будет использовать терминал или PuTTY, чтобы подключения к вашему VPS-серверу по SSH. Вот руководство с подробным описанием этого процесса.

По умолчанию tail выводит последние 10 строк файла в операционной системе Linux и затем заканчивает выполнение.

Чтобы просмотреть эти строки, введите следующую команду:

tail имя_файла

Или так:

tail путь_к_файлу

В выводе будут отображены последние 10 строк файла.

Как Ограничить Количество Выводимых Строк?

Tale предоставляет возможность посмотреть то количество срок, которое вам нужно. Для этого просто используйте опцию –n.

Самый простой способ выполнить это действие:

Tail –n* путь_к_файлу

Вместо * укажите необходимое количество строк.

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

tail -n2 devisers.txt

2 — количество строк, devisers.txt — имя файла.

Как Посмотреть Последнее Количество Байтов Данных?

Чтобы просмотреть последнее или N-нное количество байтов очень большого файла, используйте параметр -c.

tail –c* путь_к_файлу

Замените * на количество байтов, которое необходимо вывести.

Как Отслеживать Изменения в Файле?

Чтобы проверить файл на наличие новой информации, используйте команду tail вместе с опцией -f. Эта команда будет полезна при просмотре последних десяти строк файла. Опция обычно используется для отслеживания файлов логов в реальном времени. Для нашего файла devisers.txt команда будет выглядеть так:

tail -f devisers.txt

Новые версии команд tail также позволяют пользователю просматривать несколько файлов или папок. После изменения исходного файла заголовок покажет, в какую строку кто-то внёс изменения.

Модификаторы

Язык команд утилиты Sed реагирует модификаторы, которые конфигурируют действие программы если в строке имеется более одного совпадения. Например, глобальный модификатор , определяет область поиска, не ограничивая его первым словом на строке. Так, если в документе есть текст и мы его обрабатываем без глобального модификатора , имеем:

$ echo день этот, был самый обычный день | sed 's/день/денек/'
денек этот, был самый обычный день

Теперь запишем с модификатором и получим: 

$ echo кот этот, был самый обычный кот | sed 's/день/денек/g'
денек этот, был самый обычный денек

Другой тип модификатора — числовой. Это простое число, которое показывает на номер совпавшего фрагмента, который необходимо отредактировать.

$ echo температура перманентно растет | sed 's/*/падает/3'температура перманентно падает

Возможна также комбинация глобального и числового модификаторов

$ echo какая странная функция | sed 's/*/(неопределенность)/2g'какая (неопределенность) (неопределенность)

Для удаления определенных слов в поле замены мы ничего не ставим или ставим пробел:

$ echo температура перманентно растет | sed 's/*//2g'температура

Модификатор дает возможность записывать результат редактирования сразу в определенный файл: 

$ sed 's/Исходный_фрагмент/Регулярное_выражение/w имя_файла

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

$ echo спасибо, что живой | sed 'p'
спасибо, что живой
спасибо, что живой

Комбинируя команду печати с командой для запрета отображения строк, можно сделать маску, при которой будут показаны, например, одни только комментарии: 

$ sed -n '/^#/ p' /boot/grub/menu.lst
# GRUB configuration file '/boot/grub/menu.lst'.
# generated by 'grubconfig'.  Птн 13 Сент 2021 02:31:11
#
# Start GRUB global section
# End GRUB global section
# Linux bootable partition config begins
# Linux bootable partition config ends
# Linux bootable partition config begins
# Linux bootable partition config ends

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

Синтаксис

По умолчанию утилита печатает десять последних строк каждого файла стандартным способом вывода. Если указать более одного документа, то к каждому набору выходных данных будет добавлен заголовок с его именем. Если файл не указан или является одним тире («-«), то tail читает из стандартного input.

Рассмотрим синтаксис команды:

Основные параметры:

  • -c — показывает указанное количество байт с конца файла. Также можно использовать знак плюс после «-с» для вывода любой информации, начиная с байта. Например, -c +1 напечатает все. После числа можно использовать суффикс множителя, чтобы указать единицы измерения: b (512), kB (1000), K (1024), MB (1000*1000), M (1024*1024), GB (1000*1000*1000), G (1024*1024*1024), and so on for T (terabyte), P (petabyte), E (exabyte), Z (zettabyte), Y (yottabyte).
  • -f — этот параметр приводит к тому, что tail будет зацикливаться вечно, проверяя наличие новых данных. Когда появляются новые данные, они будут напечатаны. Если вы следите более, чем за одним файлом, то будет напечатан заголовок каждого, чтобы указать, какие данные файла печатаются. Если файл уменьшается, а не увеличивается, утилита сообщит вам об этом. Если вы укажете название, то за файлом с таким заголовком будет слежка, вне зависимости от его файлового дескриптора. Если вы укажете дескриптор, то будет слежка за тем же файлом, даже если он переименован. Это поведение команды по умолчанию.
  • -n — выводит последние n строк, вместо значения по умолчанию, которое составляет 10.
  • —max-unchanged-stats=num. Если отслеживаете документ с аргументом -f , утилита постоянно проверяет его, чтобы увидеть, изменился ли размер. Если размер изменился, он снова открывает файл и ищет новые данные для печати. Опция —max-unchanged-stats повторно открывает файл, даже если его размер не изменился, после каждой проверки num. Эта опция полезна, если файл может быть самопроизвольно отключен или переименован, например, когда файлы журнала автоматически чередуются.
  • —pid — используется с аргументов «-f», позволяет завершить процесс.
  • -q — никогда не выводить заголовки.
  • —retry — продолжает пытаться открыть файл, даже если он временно недоступен;
  • -s — если производить слежение посредством -f примерно num секунд между проверками файлов. С помощью —pid проверяется процессный pid не реже, чем один раз в несколько секунд.
  • -v -всегда печатать заголовки.
  • —help — получение информационной помощи по синтаксису.
  • —version — способ узнать версию.

Примеры

Запустим утилиту без параметров, тем самым узнаем 10 последних строк в dokument.

Покажем на экране пять последних строк. Для этого будем использовать аргумент «-n».

Рассмотрим пример опции «-f». Которая делает стандартный вывод в десять пунктов и следит за обновлением документа, кроме того утилита продолжает выводит все новые изменения, которые добавляются в файл.

Откроем несколько файлов одновременно.

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: