Выход из тени: 6 малоизвестных команд Linux

Если вы озадачитесь поиском обучающих программ или руководств по овладению Linux, то непременно найдете превосходные материалы об основах этой ОС. Вне всякого сомнения, вы обязательно должны научиться использовать ключевые команды навигации в командной строке, такие как cd и ls, но Linux предоставляет вам гораздо больше возможностей и без привлечения других сторонних инструментов или языков программирования. 

Синтаксис команды хвоста в Linux

хвост [OPTION]. [FILE]. Рассмотрим два файла, и , содержащие все названия соответствующих штатов и столиц Индии. $ cat Андхра-Прадеш Аруначал-Прадеш Ассам Бихар Чхаттисгарх Гоа Гуджарат Харьяна Химачал-Прадеш Джамму и Кашмир Джаркханд Карнатака Керала Мадхья-Прадеш Махараштра Манипур Мегхалая Мизорам Нагаланд Одишан Саджаста Пенджикаб Рахенджикаб Уэст-Ранджикаб Без каких-либо параметров отображаются только последние 10 строк указанного файла. Например: $ tail Одиша Пенджаб Раджастан Сикким Тамил Наду Телангана Трипура Уттар-Прадеш Уттаракханд Западная Бенгалия

Использование Bash и ch

Название bash является аббревиатурой от Bourne Again SHell. Эта аббревиатура указывает на то, что bash наследует интерпретатор Bourneshell (команда sh), созданный Стивом Борном (Steve Bourne) из AT&TBell Labs. Брайан Фокс (Brian Fox) из Free Software Foundation создал bash в составе проекта GNU. В дальнейшем разработка перешла в руки Чета Рами (Chet Ramey) в Case Western Reserve University.

Интерпретатор bash содержит возможности, которые разрабатывались для интерпретаторов sh и ksh во времена ранних версий UNIX, а также ряд возможностей интерпретатора csh.

Можно рассчитывать, что в большинстве систем Linux, кроме специализированных (например, встраиваемых или загружающихся с внешнего диска), интерпретатор bash применяется по умолчанию. В специализированных системах может потребоваться командный интерпретатор меньшего объема, что подразумевает и ограничение возможностей.

Большинство примеров в этой

Полезные однострочные скрипты для sed (потокового редактора Unix), составленные Эриком Пементом

Есть несколько программ, которые являются настоящими рабочими лошадками в обойме UNIX. Эти программы просты в использовании для простых действий, хотя они имеют богатый набор команд для выполнения комплексных действий. Не нужно пренебрегать изучением потенциала программ, ведь очень часто получается, что кто-то пишет свою функцию или подпрограмму, а, оказывается, всё уже давно написано, что уже есть программа, которая делает это в одну строку, но нужно знать эту программу, знать с какими ключами её запустить.

Sed — это первичный потоковый редактор.

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

Sed редактирует построчно и в неинтерактивном режиме.

Базовое использование:

sed [опции] команды [файл-для-редактирования]

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

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

Пример передачи аргументов в скрипте Bash

Скажем, у вас есть скрипт , который считает слова в файле. Если вы хотите использовать этот сценарий для многих файлов, лучше передать имя файла в качестве аргумента, чтобы один и тот же сценарий можно было использовать для всех файлов, которые будут обрабатываться. Например, если имя файла для обработки – список песен, введите в командной строке следующее:

sh список песен

Доступ к аргументам осуществляется внутри скрипта с использованием переменных $ 1 , $ 2 , $ 3 и т. Д. Переменная $ 1 ссылается на первый аргумент, $ 2 – на второй аргумент, а $ 3 – на третий аргумент. Это иллюстрируется в следующем примере:

FILE1 = $ 1 wc $ FILE1

Для удобства чтения назначьте переменную с описательным именем значению первого аргумента ( $ 1 ), а затем вызовите утилиту подсчета слов (wc) для переменной $ FILE1 ,

Читайте также:  Как сбросить root-пароль Linux-сервера в облаке

Если у вас есть переменное число аргументов, используйте переменную $ @ , которая является массивом всех входных параметров. Это использует цикл for для итеративной обработки каждого из них, как показано в следующем примере:

для FILE1 в «$ @» do wc $ FILE1 сделано

Вот пример того, как вызвать этот скрипт с аргументами из командной строки:

sh songlist1 songlist2 songlist3

Если аргумент имеет пробелы, заключите его в одинарные кавычки. Например:

sh ‘songlist 1’ ‘songlist 2’ ‘songlist 3’

Флаги Метод

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

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

makereport -u jsmith -p notebooks -d 10-20-2011 -f pdf

Bash включает эту функцию с помощью функции getopts. Для приведенного выше примера используйте getopts следующим образом:

, пока getopts u: d: p: f: option do case «$ {option}» in u) USER = $ {OPTARG} ;; < br /> d) DATE = $ {OPTARG} ;; p) PRODUCT = $ {OPTARG} ;; f) FORMAT = $ OPTARG ;; esac выполнено < br />

Это цикл while, который использует функцию getopts и так называемую строку опций – в данном случае u: d: p: f: – для итерации аргументов. Цикл while проходит по строке optstring, которая содержит флаги, используемые для передачи аргументов, и присваивает значение аргумента, предоставленное для этого флага, переменной option . Затем оператор CASE присваивает значение переменной option глобальной переменной, которая используется после прочтения всех аргументов.

Значения для двоеточий

Двоеточие в строке опций означает, что значения необходимы для соответствующих флагов. В приведенном выше примере u: d: p: f: за всеми флагами следует двоеточие. Это означает, что все флаги нуждаются в значении. Если, например, флаги d и f , как ожидается, не будут иметь значения, строкой опций будет u: dp: f .

Двоеточие в начале строки опций (например, : u: d: p: f: ) имеет совершенно другое значение. Он обрабатывает флаги, которые не представлены в строке optstring. В этом случае значение переменной option установлено в ? и значение OPTARG устанавливается на неожиданный флаг. Это отображает подходящее сообщение об ошибке, информирующее вас об ошибке.

Аргументы, которым не предшествует флаг, игнорируются getopts. Если флаги, указанные в строке опций, не предоставляются при вызове скрипта, то ничего не происходит, если вы специально не обработаете этот случай в своем коде. Любые аргументы, не обрабатываемые getops, могут по-прежнему регистрироваться с помощью обычных переменных $ 1 , $ 2 и $ 3 .

Просмотр логов в Linux с помощью less .

При всей простоте и удобстве tail обладает одним существенным недостатком – он показывает только последние строки и вы не имеете возможности поглядеть, что происходило до этих записей или в определенный момент времени. Для таких ситуаций лучше подходит утилита less .

Откроем файл:

[[email protected] ~]# less /var/log/httpd/domains/

1 [hc@host~]# less /var/log/httpd/domains/

Как видите мы можем спокойно листать содержимое файла с помощью стрелок курсора и клавиш PgUp и PgDn . Запомните еще несколько полезных клавиш: q – выход; g – перейти в начало файла; G – перейти в конец файла; Ng – перейти на строку N (например, на 14 строку 14g); N% – перейти на позицию N% (например, 35%); F – перейти в режим отслеживания обновления файла, т.е. аналог tail -f ; /pattern – прямой (вниз по файлу) поиск по образцу pattern; ?pattern – обратный (вверх по файлу); n – следующее совпадение образца поиска; N – предыдущее совпадение; Выход из режима отслеживания Ctrl+C ; Полный список всех остальных клавиш и режимов вы можете поглядеть самостоятельно – нажав h – помощь (очень советую нажать).

Теперь давайте посмотрим какие ключи можно передать less .

+F – cразу запустить less в режиме считывания хвоста:

[[email protected] ~]# less +F /var/log/httpd/domains/

1 [hc@host~]# less +F /var/log/httpd/domains/

-I ? игнорировать регистр при поиске; -N ? отображать номера строк; -S ? усекать длинные строки;

Давайте подытожим – для просмотра логов в Linux удобно пользоваться утилитами tail и less . Первая отлично подходит для быстрого просмотра концовок лог-файлов или для отслеживания изменений сразу в нескольких файлах. Вторая более функциональна и лучше приспособлена для вдумчивого анализа.

Читайте также:  Программы для записи образа на флешку linux

whiptail

Классическое окно whiptail с сообщением в терминале

Интересовались ли вы когда-нибудь, как создаются эти милые всплывающие сообщения? Конечно же, с помощью whiptail. Это полезная специализированная утилита для отображения диалоговых окон непосредственно внутри терминала. Возможно, вы обратили внимание, что этот же стиль используется как в процессе установки Ubuntu, так и при других распространенных установках, выполняемых из командной строки.

Whiptail широко доступен и встроен во многие дистрибутивы для быстрого и простого использования. Эта утилита предоставляет большой выбор различных типов окон и полей для ввода данных:

whiptail
  • окна сообщений;
  • окна ввода произвольного текста;
  • окна ввода пароля;
  • окна с выбором “да”/“нет”;
  • окна меню с множественным выбором;
  • … и другие варианты!

С помощью whiptail попробуем создать в командной строке простое окно с выбором “yes”/“no”:

whiptail —yesno «would you like to continue?» 10 40

Этот случай применения whiptail с вариантом —yesno не вызывает никаких сложностей. Вы передаете тип окна, его размер и текст сообщения для вывода на экран. В итоге должен получиться подобный результат:

Окно с выбором “yes”/“no”, созданное с помощью whiptail

whiptail

Чтобы увидеть возвращаемое значение при выборе “yes” или “no”, можно вывести в консоль результат последней выполненной команды. Если вы просто введете echo $?, то увидите либо 0 в случае “yes’’, либо 1 при выборе “no”. Это можно легко включить в сценарий командной строки следующим образом: 

#!/bin/bash whiptail —yesno «would you like to continue?» 10 40 RESULT=$? if [ $RESULT = 0 ]; then echo «you clicked yes» else echo «you clicked no» fi

Синтаксис grep и find

Начнём с оператора find. Синтаксис файловой поисковой команды выглядит так:

find [где искать] [параметры] [-опции] [действия]

Некоторые употребительные параметры:

  • -depth : поиск в текущей папке и подкаталогах;
  • -version : вывести версию команды;
  • -print : показывать полные имена файлов (в Linux они могут быть сколь угодно большими);
  • -type f : поиск исключительно файлов;
  • -type d – поиск только директорий (папок).
Синтаксис grep и find

Перечень доступных опций (указываются через дефис):

  • name : файловый поиск по имени;
  • user : поиск по имени владельца файла;
  • perm : по атрибуту «режим доступа»;
  • mtime : по времени последнего изменения (редактирования) файла;
  • group : по группе;
  • atime : по дате последнего открытия файла;
  • newer : поиск файла с датой, более новой, чем заданная в шаблоне директивы;
  • size : по размеру файла в байтах;
  • nouser : поиск файлов, не имеющих введённого атрибута «владелец».

Синтаксис grep:

grep [опции] шаблон [где искать]

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

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

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

Синтаксис grep и find

Рассмотрим наиболее употребительные параметры grep:

  • -b : выводить номер блока перед выдачей результирующей строки;
  • -c : необходимо подсчитать число вхождений искомого фрагмента;
  • -i : поиск без учёта регистра;
  • -n : выдавать на стандартное устройство вывода номер строки, в которой найден искомый фрагмент или шаблон;
  • – l : в результате выдачи должны присутствовать только имена файлов с найденным поисковым фрагментом;
  • -s : игнорировать вывод ошибок;
  • -w : поиск фрагмента, опоясанного с двух сторон пробелами;
  • -v : инвертированный поиск, то есть отображение всех строк, не содержащих заданный фрагмент;
  • -e : параметр указывает, что далее следует регулярное выражение, имеющее собственный синтаксис;
  • -An : вывод искомого фрагмента и предыдущих n строк;
  • -Bn : то же, но со строками, идущими после шаблона.

Теперь имеет смысл перейти от теоретической части к практической.3

Команды Linux, дающие информацию о системе

whoami #вывести имя под которым Вы зарегистрированы date #вывести дату и время time <имя программы> #выполнить программу или команду и получить информацию о времени, #нужном для ее выполнения who #определить кто из пользователей работает на машине uname -a #вывести информацию о версии операционной системы cat /etc/issue #показать версию операционной системы (, etc.) lsb_release -a #название дистрибутива и версия uname -m #узнать, сколько бит в linux ОС free #вывести информацию по использованию памяти df -h #вывести информацию о свободном и используемом месте на дисках uptime #показывает текущее время, время, прошедшее после загрузки ОС, количество текущих #пользователей в компьютерной системе и нагрузку за последние 1, 5 и 15 минут работы после загрузки, #количество текущих пользователей в компьютерной системе и нагрузку за последние 1, 5 и 15 минут top (htop) #выводит список работающих в системе процессов и информацию о них ps axu | grep php #список процессов, в имени которых встречается php ps aux | head -n 1; ps aux | grep :searchd #процессы с пояснением параметров сверху netstat -lnp | grep :9000 #узнать, что висит на 9000 порту netstat -luntp #показывает все открытые порты с использующими их приложениями lsusb #информация об устройствах, подключенных через USB lscpu #характеристики процессора

Читайте также:  SSH Linux. Команды для настройки и работы.

Как завершить какой-нибудь процесс? Если во время вывода top нажать k (от слова kill), то будет предложено

PID to kill:

нужно ввести идентификатор (PID) процесса и затем нажать enter. Это нечто вроде диспетчера задач в Windows.

Синтаксис Grep

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

$ grep [опции] шаблон [имя файла…]

Синтаксис Grep

Или:

$ команда | grep [опции] шаблон

  • Опции — это дополнительные параметры, с помощью которых указывается различные настройки, поиска и вывода, например количество строк или режим инверсии.
  • Шаблон — это любая строка или регулярное выражение, по которому будет вестись поиск
  • Файл и команда — это то место где будет вестись поиск. Как вы увидите дальше grep позволяет искать в нескольких файлах и даже в каталоге используя рекурсивный режим.
Синтаксис Grep

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

Синтаксис

По умолчанию утилита печатает десять последних строк каждого файла стандартным способом вывода. Если указать более одного документа, то к каждому набору выходных данных будет добавлен заголовок с его именем. Если файл не указан или является одним тире (“-“), то 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 для выборочного мониторинга файлов журнала в режиме реального времени. Это весьма полезная функция, разобраться в которой сможет каждый специалист, чей уровень подготовки выше начального.