Упражнения по работе с командной строкой linux

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

В Linux все является файлом

Часто цитируемая фраза о том, что всё в Linux является файлом, является своего рода правдой. Файл представляет собой набор байтов. Программы и устройства (принтер, экран, клавиатура, мышь, терминал, сетевая карта) могут генерировать или принимать потоки байт, и в этом качестве они сами проявляются как файлы. Многие системные компоненты, такие как клавиатуры, сокеты, принтеры и коммуникационные процессы, принимают или генерируют потоки байтов. Поскольку они принимают, генерируют или принимают и генерируют потоки байтов, эти устройства могут обрабатываться — на очень низком уровне — как файлы. Кроме обычных файлов, файлами также являются директории (папки), сетевые сокеты (подключения по сети), устройства (диски, терминалы, клавиатура, мышь и прочее — это всё файлы), pipe (технология обмена данными между процессами).

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

Файлы данных и программ, которые находятся на вашем жёстком диске, являются обычными файлами файловой системы. Мы можем использовать команду ls, чтобы вывести их и узнать некоторые детали о них. Но как мы узнаем обо всех других процессах и устройствах, которые рассматриваются как файлы? Для этого используется команда lsof. Она выводит списки открытых файлов в системе. То есть она перечисляет всё, что обрабатывается, как если бы это был файл.

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

Как посмотреть текущую рабочую директорию? ответ

pwd

Как сменить рабочую директорию? ответ

cd

например, cd /var/www/

Как перейти в родительскую директорию? ответ

cd ..

Как вернуться в домашнюю директорию? ответ

cd — вызов команды без аргументов приводит к переходу в директорию, указанную в переменной окружения $HOME.

Читайте также:  Создание и настройка удалённого рабочего стола

Как вывести список файлов в директории? ответ

ls — вывести список файлов в текущей директории

ls /var/log/ — вывести список файлов в директории /var/log/

ls -l — вывести подробный список файлов

Как посмотреть вермя последнего изменения/доступа к файлу /tmp/ ответ

ls -l /tmp/ — посмотреть время последнего изменения файла

ls -lu /tmp/ — посмотреть время последнего доступа к файлу

stat /tmp/ — показывает 3 временные метки:

  • Access — время последнего доступа к файлу (любое открытие файла для чтения: просмотр, поиск по файлу и т.п.)
  • Modify — время последнего изменения файла
  • Change — время изменения статуса файла (прав доступа, владельца, изменение файла).

Как создать новую директорию test? ответ

mkdir test

Как создать пустой файл? ответ

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

  • cp — скопировать любой другой пустой файл
  • touch — «потрогать» несуществующий файл
  • :> — перенаправить в файл вывод команды, которая ничего не делает
  • vi , затем сразу :wq — открыть файл и сохранить его пустым

Как создать файл /tmp/ размером 2Mb? ответ

dd if=/dev/zero of= bs=1M count=2

если в предыдущей команде задать bs=1MB, то файл будет размером 2_000_000 байт.

в данном примере файл будет заполнен нулевыми байтами (0x00).

Как узнать тип файла? ответ

file

например

$ file : empty $ file /usr/bin/perl /usr/bin/perl: symbolic link to `’ $ file /usr/bin/ /usr/bin/: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux , stripped $ file : HTML document, UTF-8 Unicode text, with very long lines

Как переименовать файл? ответ

mv имя_файла новое_имя_файла

Как удалить файл/директорию? ответ

rm имя_файла — удалить файл

rmdir имя_директории или rm -r имя_директории — удалить директорию

shred -uv имя_файла — удаление файла для параноиков (без опции -u просто перезаписывает содержимое файла мусором)

Как создать символическую/жесткую ссылку на файл/директорию? ответ

Как посмотреть размер файла? ответ

ls -l имя_файла — размер файла в байтах

ls -lh имя_файла — размер файла в более привычном формате

Как как узнать размер директории? ответ

du -s имя_директории — размер места в килобайтах (блоках по 1024 байт), которое директория со всем своим содержимым занимает на диске

Читайте также:  Скачать iOS 14.2 и iPadOS 14.2 ФИНАЛ (+ прямые IPSW-ссылки)

du -sh имя_директории — в более привычном формате

Как узнать сколько свободного места осталось на разделе диска? ответ

при помощи команды df место_монтирования_раздела или просто df

df -h выведет размеры не в килобайтах, а в более удобном формате.

df -ih выведет информацию о количестве использованных и свободных инодов

Вывод

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

  • head — просмотр первых n строк данных.
  • tail — просмотр последних n строк данных.
  • sort — организуйте данные в порядке.
  • nl — напечатайте номера строк перед данными.
  • wc — распечатать количество строк, слов и символов.
  • cut — разрезать данные на поля и отображать только указанные поля.
  • sed — сделайте поиск и замените данные.
  • uniq — удалить дубликаты строк.
  • tac — распечатайте данные в обратном порядке.

Оператор OR (||)

Оператор OR (||) очень похож на оператор «else» в программировании. Вышеуказанный оператор позволяет вам выполнять вторую команду только в случае сбоя при выполнении первой команды, то есть состояние выхода первой команды равно «1» — программа выполнена НЕ успешно».

Например, я хочу выполнить «apt-get update» из учетной записи без полномочий root, и если первая команда не будет выполнена, тогда будет выполнена вторая команда «links ».

sudo apt update || links

В приведенной выше команде, поскольку пользователю не было разрешено обновить систему, это означает, что состояние выхода первой команды равно «1» и, следовательно, выполняется последняя команда «links ».

Что, если первая команда выполнена успешно, со статусом выхода ««? Очевидно! Вторая команда не будет выполнена.

mkdir test || links

Здесь пользователь создает папку «test» в своем домашнем каталоге, где ему это разрешено. Команда выполнена успешно, что дает статус выхода ««, и, следовательно, последняя часть команды не выполняется.

Особенности использования команды ls

Когда команда ls обрабатывает не «обычные» файлы, а специальные файлы устройств (хотя это тоже самые обычные файлы). То для них она выводит несколько иную информацию:

Читайте также:  Как передавать файлы между Android и Linux

$ ls -l /dev/tty0 cr—w—- 1 root tty 4,0 фев 28 14:27 /dev/tty0

Вместо размера файла выводится старший и младший номера (4, 0) устройства tty0 – это первая виртуальная консоль, управляемая драйвером устройства 4, который является драйвером терминала.

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

$ ls -li ‘Рабочий стол’ 3276880 ‘Рабочий стол’

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

$ find точка_монтирования -xdev -inum индексный_дескриптор

Данный пример — лишь одно из важных практических применений команды ls. Следует также отметить некоторые особенно полезные опции команды ls:

-a – отображает все файлы и каталоги. Включая скрытые (имена которых начинаются с точки), а также «всевдокаталоги» с именами «.» и «. .»;

-t – отображает результаты в отсортированном (по времени изменения файлов) порядке. А опция -tr то же, но в обратном порядке;

-F – выделяет каталоги и исполняемые файлы в общем выводе;

-h – отображает размеры файлов и каталогов в «человекопонятных» единицах, к примеру 4k или 10M;

-R – рекурсивный вывод, выполнение которого прерывается нажатием сочетания клавиш .

Иногда возникает путаница в использовании опций -l и —d. Дело в том, что опция -d предназначена для дополнения работы опции -l (которая выводит подробную информацию об атрибутах). Когда необходимо получить атрибуты именно конкретного каталога:

$ ls -ld ~/htdocs drwxrwxr-x 12 john john 4096 фев 11 12:56 /home/john/htdocs