Команда head в linux

Работа с командной строкой, горячие клавиши и дополнительные символы

Базовые методы управления текстом в терминале.

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

history — показывает ранее использованные приложения и инструменты. Без дополнительных аргументов отображает 10 элементов. Но их количество можно изменить вручную, добавив к слову history любое число. history 13, к примеру.

whatis — дает однострочную справку к любой из установленных программ. Принцип работы следующий: вводим слово whatis, а за ним следом название приложения, о котором хотим узнать. Например, чтобы узнать о том, что такое nano, введем в терминал: whatis nano.

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

Дополнительные символы

Не совсем команды, но тоже текстовые элементы, причем полезные.

; — разделитель, необходимый, чтобы активировать сразу несколько команд подряд. Это выглядит так: cd ~/Documents; mkdir Novaya_papka; rmdir Staraya-papka. Команды будут выполняться друг за другом независимо от результата выполнения каждой из них.

&& — то же самое, что и ;, но с важным нюансом. Команды, соединенные с помощью &&, будут выполняться друг за другом, только если предыдущая завершилась успешно. Синтаксис аналогичный:

sudo apt-get update && sudo apt-get install wget

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

~ — сокращение от /home/имя учетной записи/. Часто фигурирует в инструкциях.

Горячие клавиши

Парочка полезных сочетаний клавиш.

Стрелка вверх — показывает предыдущую команду.

Ctrl+C — прерывает запущенный процесс.

Ctrl+A — перемещает курсор в начало строки.

Ctrl+E — перемещает курсор в конец строки.

Syntax

tail [{-c |--bytes=}num] [-f] [--follow[={name|descriptor}]] 
     [-F] [{-n |--lines=}num] [--max-unchanged-stats[=num]] 
     [--pid=pid] [{-p|--quiet|--silent}] [--retry] 
     [{-s |--sleep-interval=}num] [{-v|--verbose}] [file ...]
tail --help
tail --version

Options

Option Description
-c [+]num,—bytes=[+]num Output the last num bytes of each file.You can also use a plus sign before num to output everything starting at byte num. For instance, -c +1 prints everything.A multiplier suffix can be used after num to specify units: 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,—follow[={name|descriptor}] This option causes tail to loop forever, checking for new data at the end of the file(s). When new data appears, it will be printed.If you follow more than one file, a header will be printed to indicate which file’s data is being printed.If the file shrinks instead of grows, tail lets you know with a message.If you specify name, the file with that name is followed, regardless of its file descriptor.If you specify descriptor, the same file is followed, even if it’s renamed. This is the default behavior.
-F «Follow and retry». Same as using —follow=name —retry.
-n num,—lines=num Output the last num lines, instead of the default (10).If you put a plus sign before num, tail outputs all lines beginning with that line. For example, -n +1 prints every line.
—max-unchanged-stats=num If you are following a file with -f or —follow=name, tail continuously checks the file to see if its size has changed. If the size has changed, it reopens the file and looks for new data to print. The —max-unchanged-stats option reopens a file, even if its size has not changed, after every num checks.This option is useful if the file might be spontaneously unlinked or renamed, such as when log files are automatically rotated.
—pid=pid When following with -f or —follow, terminate operation after process ID pid dies.
-q,—quiet,—silent Never output headers.
—retry Keep trying to open a file even if it’s temporarily inaccessible; useful with the —follow=name option.
-s num,—sleep-interval=num When following with -f or —follow, sleep for approximately num seconds between file checks. With —pid=pid, check process pid at least once every num seconds.
-v,—verbose Always print headers.
—help Display a help message, and exit.
—version Display version information, and exit.

Выражения в скобках

Выражения в квадратных скобках позволяют сопоставить группу символов, заключив их в квадратные скобки . Например, найдите строки, содержащие «принять» или «акцент», вы можете использовать следующее выражение:

Если первый символ внутри скобок — это курсор , то он соответствует любому одиночному символу, не заключенному в скобки. Следующий шаблон будет соответствовать любой комбинации строк, начинающихся с «co», за которыми следует любая буква, кроме «l», за которой следует «la», например «coca», «cobalt» и т. Д., Но не будет соответствовать строкам, содержащим «cola». ”:

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

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

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

Квантификатор Классы персонажей
Буквенно-цифровые символы.
Буквенные символы.
Пробел и табуляция.
Цифры.
Строчные буквы.
Заглавные буквы.

Найти и удалить файлы

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

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

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

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

Когда дело доходит до каталогов, может удалять только пустые каталоги, как и .

Модуль 2. Файлы в UNIX

Лабораторные работы

  • Команды для работы с файловой системой

  • Команды чтения содержимого файлов

  • Текстовый редактор nano

  • Настройка командных интерпретаторов (комбинации клавиш, повтор и автоподстановка команд)
  • Команды фильтры (выполнить работу в теме перенаправления ввода вывода)
  • Команда tar (выполнить работу в конце курса)
  • Команды scp, wget (в лабораторных работах следующего модуля)

Вопросы

  1. Что обозначают ключи «a», «l» в команде ls?
  2. Какой командой можно создать файл?
  3. Что означает символы “~”, “.”, “..”, “/” в имени файла?
  4. Что обозначают ключи “h/H”, “v”, “r/R” во многих командах?
  5. Какие команды используются для анализа занятого места на диске/в каталоге?
  6. Какой командой можно удалить непустой каталог?
  7. Какие команды могут быть использованы для поиска файлов?
  8. Какие команды используются для просмотра содержимого файлов?
  9. Какая программа может быть использована для копирования файлов между UNIX и Windows по протоколу ssh?
  10. Какой ключ команды tail позволяет “в онлайне” наблюдать процесс появления новых записей в файле?
  11. Какая последовательность клавиш позволяет выйти из редактора vi без сохранения изменений?
  12. Какой командой можно найти содержимое в файле по шаблону?
  13. Какой ключ команды sort позволит отсортировать данные по числовому столбцу?
  14. Что обозначают символы “^”, “$”, “.”, “|” в регулярных выражениях?
  15. Что обозначают ключи “c”, “t”, “x”, “z”, “f” в команде tar
  16. Что появится на экране в результате последовательности команд:
    mkdir dir1; cd dir1/; touch echo ls; *
  17. Каким образом можно определить тип файла в UNIX?

Управление пользователями

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

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

passwd — задает пароль для учетной записи. Работает вкупе с предыдущей командой. То есть сразу после создания аккаунта, пишем: passwd имя новой учетной записи. После этого система попросит придумать и указать пароль для новой учетной записи.

Система безопасности в Linux не показывает во время ввода пароля даже звездочки, но это не значит, что он не вводится. Продолжайте набирать вслепую, а как закончите, нажмите Enter, и все сработает. И не бойтесь запутаться, вас попросят повторить придуманный пароль.

userdel — удаляет выбранную учетную запись. Синтаксис: userdel имя учетной записи, которую нужно стереть

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

  • -с — добавляет комментарий к аккаунту (можно вписать любой текст по желанию, чтобы запомнить для чего нужен выбранный пользователь).
  • -d — меняет расположение домашней директории выбранной учетной записи.
  • -e — указывает время, которое будет существовать аккаунт (после этого сработает автоматический userdel).
  • -g — меняет группу, к которой принадлежит аккаунт.
  • -G — привязывает аккаунт к выбранной группе.
  • -L — блокирует пользователя.
  • -m — перемещает контент из домашней папки пользователя в другую папку.
  • -p — устанавливает незашифрованный пароль (лучше так не делать).
  • -s — задает конкретную оболочку для нового аккаунта на усмотрение администратора компьютера.
  • -U — снимает блокировку с выбранной учетной записи.

Просматриваем начало или конец файла в Linux

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

Команда head по умолчанию показывает лишь 10 первых строчек в текстовом файле в Linux:

head /etc/passwd

Вот, что мы увидим:

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/false
daemon:x:2:2:daemon:/sbin:/bin/false
adm:x:3:4:adm:/var/adm:/bin/false
lp:x:4:7:lp:/var/spool/lpd:/bin/false
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
news:x:9:13:news:/var/spool/news:/bin/false
uucp:x:10:14:uucp:/var/spool/uucp:/bin/false

Кстати, тут мы тоже можем открыть сразу несколько текстовых файлов в Linux одновременно. Вот просмотр сразу двух файлов:

 head /etc/passwd /etc/shadow

Если же вас не интересуют все 10 строчек, то, как и в случае с cat, можно использовать опцию –n, цифрой указывая число строк к выводу:

 head -n5 /var/log/emerge.log

В итоге мы вывели только пять строк:

1394924012: Started emerge on: Mar 15, 2014 22:53:31
1394924012: *** emerge --sync
1394924012: === sync
1394924012: >>> Synchronization of repository 'gentoo' located in '/usr/portage'...
1394924027: >>> Starting rsync with rsync://212.113.35.39/gentoo-portage

По правде говоря, букву n можно и не использовать, достаточно просто передать цифру:

 head -5 /var/log/emerge.log

Кстати, выводить содержимое текстового файла в Linux можно не построчно, а посимвольно. Давайте зададим число символов, которое нужно вывести (используем опцию -с):

 head -c45 /var/log/emerge.log

Итак, выводим 45 символов:

1394924012: Started emerge on: Mar 15, 2014 2

Не верите, что их действительно 45? Проверить можно командой wc:

 head -c45 /var/log/emerge.log | wc -c
45

С «головой» разобрались, давайте поговорим про «хвост». Очевидно, что команда tail работает наоборот, выводя десять последних строк текстового Linux-файла:

 tail /var/log/emerge.log

Количество строк при выводе тоже можно менять. Однако в tail есть такая полезная опция, как -f. С её помощью содержимое текстового файла будет постоянно обновляться, в результате чего вы станете видеть изменения сразу (постоянно открывать и закрывать файл не придётся). Это весьма удобно, если вы хотите просматривать логи Linux в реальном времени:

 tail -f /var/log/emerge.log

Модуль 3. Процессы в UNIX

Лабораторные работы

  • Перенаправление потоков ввода/вывода

  • Настройка командных интерпретаторов (управление приглашением ко вводу PS1)
  • Коды завершения

  • Развертывание виртуальной машины в VirtualBox
  • Лабораторная работа из курса по Asterisk
  • Пакет screen

  • Управление ПО в Linux, сервиса Asterisk
  • Сигналы, Управление сервисами в Linux,

# asterisk -x 'sip show users'

# ps ax | grep asterisk

# kill -s HUP НОМЕР_ПРОЦЕССА

# kill -s HUP `cat /var/run/asterisk/asterisk.pid`

Управление заданиями bg, fg, jobs (демонстрирует преподаватель)

Вопросы

  1. Что обозначают ключи “a”, “x” в команде ps?
  2. Что такое STDIN, STDOUT, STDERR и какие у них номера?
  3. Что обозначают элементы “<”, “>”, “2>”, “&1”, “|” в выражениях shell
  4. Объясните, как работает конструкция
    :> file1
  5. Чем отличается команда set от команды env?
  6. Что влияет на выбор языка интерфейса в *NIX программах?
  7. Как посмотреть код завершения процесса и какое он должен иметь значение, если не было ошибок?
  8. Что обозначают элементы “&&”, “||”, “;”, “&” в выражениях shell
  9. Объясните, что происходит при использовании комбинаций “Ctrl C”, “Ctrl D”, “Ctrl Z”?
  10. Как обрабатываются сигналы “HUP”, “INT”, “TERM”, “KILL”, “TSTP” процессами?

Использование команды id

Синтаксис команды следующий:

Если имя пользователя не указано, команда отображает информацию о текущем вошедшем в систему пользователе.

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

Если SELinux включен, то также выводит контекст безопасности ( ) пользователя:

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

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

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

Примеры использования

С теорией покончено, теперь перейдём к практике. Рассмотрим несколько основных примеров поиска внутри файлов Linux с помощью grep, которые могут вам понадобиться в повседневной жизни.

Поиск текста в файлах

В первом примере мы будем искать пользователя User в файле паролей Linux. Чтобы выполнить поиск текста grep в файле /etc/passwd введите следующую команду:

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

А теперь не будем учитывать регистр во время поиска. Тогда комбинации ABC, abc и Abc с точки зрения программы будут одинаковы:

Вывести несколько строк

Например, мы хотим выбрать все ошибки из лог-файла, но знаем, что в следующей строчке после ошибки может содержаться полезная информация, тогда с помощью grep отобразим несколько строк. Ошибки будем искать в Xorg.log по шаблону «EE»:

Выведет строку с вхождением и 4 строчки после неё:

Выведет целевую строку и 4 строчки до неё:

Выведет по две строки с верху и снизу от вхождения.

Регулярные выражения в grep

Регулярные выражения grep — очень мощный инструмент в разы расширяющий возможности поиска текста в файлах. Для активации этого режима используйте опцию -e. Рассмотрим несколько примеров:

Поиск вхождения в начале строки с помощью спецсимвола «^», например, выведем все сообщения за ноябрь:

Поиск в конце строки — спецсимвол «$»:

Найдём все строки, которые содержат цифры:

Вообще, регулярные выражения grep — это очень обширная тема, в этой статье я лишь показал несколько примеров. Как вы увидели, поиск текста в файлах grep становиться ещё эффективнее. Но на полное объяснение этой темы нужна целая статья, поэтому пока пропустим её и пойдем дальше.

Рекурсивное использование grep

Если вам нужно провести поиск текста в нескольких файлах, размещённых в одном каталоге или подкаталогах, например в файлах конфигурации Apache — /etc/apache2/, используйте рекурсивный поиск. Для включения рекурсивного поиска в grep есть опция -r. Следующая команда займётся поиском текста в файлах Linux во всех подкаталогах /etc/apache2 на предмет вхождения строки mydomain.com:

В выводе вы получите:

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

Поиск слов в grep

Когда вы ищете строку abc, grep будет выводить также kbabc, abc123, aafrabc32 и тому подобные комбинации. Вы можете заставить утилиту искать по содержимому файлов в Linux только те строки, которые выключают искомые слова с помощью опции -w:

Количество вхождений строки

Утилита grep может сообщить, сколько раз определённая строка была найдена в каждом файле. Для этого используется опция -c (счетчик):

C помощью опции -n можно выводить номер строки, в которой найдено вхождение, например:

Получим:

Инвертированный поиск в grep

Команда grep Linux может быть использована для поиска строк в файле, которые не содержат указанное слово. Например, вывести только те строки, которые не содержат слово пар:

Вывод имени файла

Вы можете указать grep выводить только имя файла, в котором было найдено заданное слово с помощью опции -l. Например, следующая команда выведет все имена файлов, при поиске по содержимому которых было обнаружено вхождение primary:

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

Общий синтаксис команды следующий:

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

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

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

Ниже приведен пример использования квадратных скобок:

такое же, как:

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

Потоки процесса показаны под родительским процессом и отображаются с использованием имени процесса в фигурных скобках. Вот пример:

Используйте опцию чтобы показать полные имена потоков. Если вы хотите скрыть потоки и показать только процессы, используйте параметр .

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

Если в качестве аргумента имя пользователя, показывает только процессы, принадлежащие этому пользователю. Например, следующая команда покажет только те процессы, которые были запущены пользователем с именем «linuxize»:

Когда PID указан в качестве аргумента, отображает дерево с данным процессом в качестве корня дерева. Вот пример:

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

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

Синтаксис команды следующий:

Команда не принимает никаких других параметров, кроме стандартных и .

Давайте посмотрим на следующий пример:

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

Если вы выйдете из системы или закроете терминал, процесс не завершится.

Запуск команды в фоновом режиме

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

Чтобы запустить команду в фоновом режиме , добавьте символ в конце команды:

Вывод включает идентификатор задания оболочки (в скобках) и идентификатор процесса:

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

Если по какой-то причине вы хотите прервать процесс, используйте команду за которой следует идентификатор процесса:

Перенаправление вывода в файл

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

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

Чтобы перенаправить стандартный вывод и стандартную ошибку в разные файлы:

chattr Синтаксис

Команда имеет следующую общую форму:

Значение части может быть одним из следующих символов:

  • — Оператор «плюс» сообщает о необходимости добавления указанных атрибутов к существующим.
  • — Оператор минус указывает удалить указанные атрибуты из существующих.
  • — Оператор равенства сообщает о необходимости установить указанные атрибуты как единственные.

За оператором следует один или несколько флагов которые вы хотите добавить или удалить из атрибутов файла. Ниже приведен список нескольких общих атрибутов и связанных флагов:

  • — если этот атрибут установлен, файл можно открыть только в режиме добавления для записи.
  • — Когда файл с этим установленным атрибутом открыт, его временная запись не изменяется. atime (время доступа) — это время последнего доступа / открытия файла какой-либо командой или приложением.
  • — этот атрибут означает, что файл использует экстенты для сопоставления блоков на диске. Атрибут нельзя изменить с помощью .
  • — этот атрибут указывает, что файл неизменяемый, что означает, что файл нельзя удалить или переименовать.

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

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

Формат длинных списков

По умолчанию вывод команды показывает только имена файлов и каталогов, что не очень информативно.

Параметр (нижний регистр L) указывает печатать файлы в формате длинного списка.

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

  • Тип файла.
  • Права доступа к файлу.
  • Количество жестких ссылок на файл.
  • Владелец файла.
  • Файловая группа.
  • Размер файла.
  • Дата и время.
  • Имя файла.

Вот пример:

Давайте объясним самые важные столбцы вывода.

Первый символ показывает тип файла. В этом примере первый символ , что указывает на обычный файл. Значения для других типов файлов следующие:

  • — Обычный файл.
  • — Заблокировать специальный файл.
  • — Символьный специальный файл.
  • — Справочник.
  • — символическая ссылка.
  • — Сетевой файл.
  • — ФИФО.
  • — Розетка.

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

  • — Разрешение на чтение файла.
  • — Разрешение на запись в файл.
  • — Разрешение на выполнение файла.
  • — бит .
  • — бит.

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

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

— дата и время последнего изменения файла.

Последний столбец — это имя файла.

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

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