Команда
К сожалению, искусство применения языка awk сейчас практически утрачено, поскольку его заменили более развитые языки, такие как Python.
Очень многие пользователи используют команду awk с единственной целью: чтобы выбрать отдельное поле из потока ввода, например:
Эта команда выводит пятое поле из отчета команды ls (размер файла). В результате получится список, содержащий размеры файлов.
awk не является простой командой с единственным способом применения; на самом деле это мощный C-подобный скриптовый язык построчного разбора и обработки входного потока по заданным шаблонам, которому посвящены целые книги.К сожалению, искусство применения языка awk сейчас практически утрачено, поскольку его заменили более развитые языки, такие как Python.
Очень многие пользователи используют команду awk с единственной целью: чтобы выбрать отдельное поле из потока ввода, например:
ls -l | awk '{print $5}' Эта команда выводит пятое поле из отчета команды ls (размер файла). В результате получится список, содержащий размеры файлов.
Использование кавычек может привести к некоторым запутанным моментам.
Допустим, вы желаете напечатать строку $100 и для этого набираете следующее:
Получаем:
Почему? Потому что оболочка увидела фрагмент $1, который является переменной оболочки.
Вы могли бы решить, что, если поместить текст в кавычки, оболочка не заметит фрагмент $1. Но это тоже не работает:
Получаем:
Тогда вы спрашиваете об этом у приятеля, который отвечает, что необходимо вместо двойных кавычек использовать одинарные:
Получаем:
Допустим, вы желаете напечатать строку $100 и для этого набираете следующее:
echo $100 Получаем:
00 Почему? Потому что оболочка увидела фрагмент $1, который является переменной оболочки.
Вы могли бы решить, что, если поместить текст в кавычки, оболочка не заметит фрагмент $1. Но это тоже не работает:
echo "$100"Получаем:
00Тогда вы спрашиваете об этом у приятеля, который отвечает, что необходимо вместо двойных кавычек использовать одинарные:
echo '$100' Получаем:
$100Если необходимо использовать арифметические операторы в сценариях оболочки, поможет команда
Например:
Полный перечень операций:
Если вам часто приходится заниматься ими, то, лучше использовать что-то вроде Python.
expr (которая выполняет даже некоторые операции со строками). Например:
expr 5 + 2 выводит результат 7. Полный перечень операций:
expr --help
expr не хранит результат, а по умолчанию просто печатает ответ. Но никто не запрещает сохранять результат в переменные: A=$( expr 12 - 7 )
echo $A # 5
Применение команды expr — это неуклюжий и медленный способ выполнения математических вычислений. Если вам часто приходится заниматься ими, то, лучше использовать что-то вроде Python.
Как сохранить изменения и выйти в текстовом редакторе nano
NANO простой текстовый редактор. Чтобы сохранить изменения нужно нажать сочетание клавиш
Однако, если вы попытаетесь сохранить данные в файл, к которому у вас нет доступа, то получите ошибку: "Ошибка записи /имя/файла: Отказано в доступе"
Проще всего, закрыть редактор, нажав
Если изменения не хочется терять, во время запроса имени файла можно указать путь к новому файлу в вашей домашней директории.
Новый файл сохранится туда, потом вы сможете переместить его вместо старого в помощью команды
NANO простой текстовый редактор. Чтобы сохранить изменения нужно нажать сочетание клавиш
Ctrl + O , после этого редактор попросит ввести имя файла для сохранение. И когда все готово, достаточно нажать Enter. Чтобы выйти — Ctrl+XОднако, если вы попытаетесь сохранить данные в файл, к которому у вас нет доступа, то получите ошибку: "Ошибка записи /имя/файла: Отказано в доступе"
Проще всего, закрыть редактор, нажав
Ctrl+X не сохраняя изменений. На вопрос редактора про сохранение буфера надо ответить No. А затем открыть редактор уже от имени суперпользователя.Если изменения не хочется терять, во время запроса имени файла можно указать путь к новому файлу в вашей домашней директории.
Новый файл сохранится туда, потом вы сможете переместить его вместо старого в помощью команды
mv уже используя sudo.Команда more
Утилита more предназначена для постраничного просмотра файлов в терминале Linux. Команда more — одна из самых примитивных команд для работы с текстом.
Примеры использования:
Для того, чтобы просмотреть текст из файла filename.txt:
Также в команде можно перечислить несколько имён файлов одно за другим, разделяя их пробелом. Содержимое этих файлов будет выведено в том же порядке:
Порой необходимо вывести на экран не весь текст, а только его часть. Для таких случаев предусмотрены опции - (минус) и + (плюс), рядом с которыми указывается число строк. Чтобы увидеть содержимое файла, начиная с 8-й строки, следует добавить к команде опцию +8, а чтобы команда выводила результат, состоящий максимум из 5-ти строк, опцию -5:
Также more умеет работать не только с выводами других команд:
Утилита more предназначена для постраничного просмотра файлов в терминале Linux. Команда more — одна из самых примитивных команд для работы с текстом.
Примеры использования:
Для того, чтобы просмотреть текст из файла filename.txt:
more filename.txtТакже в команде можно перечислить несколько имён файлов одно за другим, разделяя их пробелом. Содержимое этих файлов будет выведено в том же порядке:
more file1.txt file2.txtПорой необходимо вывести на экран не весь текст, а только его часть. Для таких случаев предусмотрены опции - (минус) и + (плюс), рядом с которыми указывается число строк. Чтобы увидеть содержимое файла, начиная с 8-й строки, следует добавить к команде опцию +8, а чтобы команда выводила результат, состоящий максимум из 5-ти строк, опцию -5:
more +8 -5 filename.txtТакже more умеет работать не только с выводами других команд:
locate bin | more -10Инициализация физических томов
Команда
Команда инициализации
Для инициализации отдельных разделов применяется команда
Команда
pvcreate позволяет инициализировать блочное устройство как физический том. Принципиально инициализация подобна форматированию файловой системы. Команда инициализации
/dev/sdd1, /dev/sde1 и /dev/sdf1 выглядит так:pvcreate /dev/sdd1 /dev/sde1 /dev/sdf1Для инициализации отдельных разделов применяется команда
pvcreate. Следующий пример инициализирует /dev/hdb1 как физический том для дальнейшего включения в логический том LVM.pvcreate /dev/hdb1.IMG файл
Файл
Файлы
Прежде чем использовать файл
Файл
IMG представляет собой файл образа диска, созданный различными приложениями для работы с образами дисков, такими как H+H Software Virtual CD. Он хранит точную копию данных на CD или DVD и используется для резервного копирования и записи новых дисков.Файлы
IMG, созданные разными программами создания образа диска, могут использовать разные форматы. Например, файлы IMG, созданные SlySoft CloneCD, должны быть объединены в пару с соответствующими файлами .CCD и .SUB, прежде чем их можно будет использовать для создания диска. Прежде чем использовать файл
IMG для создания нового диска, вы должны попытаться определить, какая программа создала файл IMG, и проверить, может ли ваша программа создания дисков записывать файлы, сохраненные в этом формате.Команда nl
Нумерация строк облегчает чтение и упрощает запоминание вашего места или указания на конкретный раздел.
Используя
Самый простой способ использования команды
А если вам нравится использовать
Нумерация строк облегчает чтение и упрощает запоминание вашего места или указания на конкретный раздел.
Используя
nl, вы можете буквально нумеровать строки. Принятие некоторого текста на стандартный ввод дает тот же результат, но с номерами строк. Самый простой способ использования команды
nl:cat <file> | nlА если вам нравится использовать
less для просмотра больших файлов, вы можете просто передать аргумент -N при открытии файла, чтобы автоматически пронумеровать строки.Поиск блочных устройств
Блочное устройство (block device) — вид файла устройств в UNIX/Linux-системах, обеспечивающий интерфейс к устройству, реальному или виртуальному, в виде файла в файловой системе.
Типичные примеры блочных устройств: жёсткий диск, CD-ROM, НГМД.
Чтобы выполнить поиск блочных устройств для создания физических томов на их основе, можно воспользоваться командой
Блочное устройство (block device) — вид файла устройств в UNIX/Linux-системах, обеспечивающий интерфейс к устройству, реальному или виртуальному, в виде файла в файловой системе.
Типичные примеры блочных устройств: жёсткий диск, CD-ROM, НГМД.
Чтобы выполнить поиск блочных устройств для создания физических томов на их основе, можно воспользоваться командой
lvmdiskscan.Копирование файлов по ssh
Чтобы скопировать локальный файл
А наоборот, скопировать файл с удаленного компьютера в текущую директорию:
Также копировать можно не только файлы, но и и целые директории.
Чтобы скопировать с локального компьютера директорию
Чтобы скопировать локальный файл
myfile.txt на компьютер с IP адресом 192.168.12.124 в директорию /home/mycomputer:scp myfile.txt mycomputer@192.168.12.124:/home/mycomputerА наоборот, скопировать файл с удаленного компьютера в текущую директорию:
scp mycomputer@192.168.12.124:/home/mycomputerТакже копировать можно не только файлы, но и и целые директории.
Чтобы скопировать с локального компьютера директорию
~/mydir на удаленный компьютер в директорию /home/mycomputer:scp -r ~/mydir mycomputer@192.168.1.17:/home/mycomputerInxi — утилита командной строки для отображения подробной информации о системе в Linux и других Unix-подобных ОС. Она предоставляет обширные данные о конфигурации системы, включая информацию о железе, сети, процессах и многом другом.
Для получения подробной информации о системе, можно запустить команду:
Для большинства дистрибутивов Inxi доступен через стандартные репозитории:
В Ubuntu/Debian:
В Fedora:
В Arch Linux:
Для получения подробной информации о системе, можно запустить команду:
inxi -F (Параметр -F (или --full) выводит полную информацию о системе, включая аппаратные и программные компоненты).inxi -x: выводит более подробную информацию о процессоре и памяти.inxi -S: показывает информацию только о системе, такой как дистрибутив, версия ядра и архитектура.inxi -G: отображает только информацию о графической карте.Для большинства дистрибутивов Inxi доступен через стандартные репозитории:
В Ubuntu/Debian:
sudo apt install inxiВ Fedora:
sudo dnf install inxiВ Arch Linux:
sudo pacman -S inxihttpie
Инструмент командной строки, который упрощает взаимодействие с веб-API, предоставляя более человекочитаемый вывод по сравнению с curl. Он предоставляет удобный синтаксис для отправки HTTP-запросов.
Из преимуществ:
- Удобный формат вывода (JSON, HTML).
- Автоматическая обработка ошибок.
- Легкость в отправке запросов с JSON-данными.
Debian, Ubuntu:
AlmaLinux, CentOS:
Fedora:
Пример использования:
Для отправки POST-запроса:
Инструмент командной строки, который упрощает взаимодействие с веб-API, предоставляя более человекочитаемый вывод по сравнению с curl. Он предоставляет удобный синтаксис для отправки HTTP-запросов.
Из преимуществ:
- Удобный формат вывода (JSON, HTML).
- Автоматическая обработка ошибок.
- Легкость в отправке запросов с JSON-данными.
Debian, Ubuntu:
sudo apt install httpieAlmaLinux, CentOS:
sudo yum install httpieFedora:
sudo dnf install httpieПример использования:
http GET https://example.comДля отправки POST-запроса:
http POST https://example.com key=valueСвободные лицензии
Выделяют две группы:
Взаимные лицензии — они обязуют пользователя распространять модифицированную программу на тех же условиях, что и исходную. К таким лицензиям относятся все виды
Разрешительные лицензии — содержат минимум пользовательских требований и разрешают создавать проприетарный софт на основе исходной программы. С другой стороны, разрешительные лицензии не позволяют автору исходного кода контролировать судьбу модифицированной версии ПО. К ним относятся:
Совместимость лицензий означает, что программы, распространяемые под этими лицензиями, могут быть объединены или код одной программы может быть использован в другой. Разрешительные лицензии в основном совместимы между собой, а вот версии
Выделяют две группы:
Взаимные лицензии — они обязуют пользователя распространять модифицированную программу на тех же условиях, что и исходную. К таким лицензиям относятся все виды
GPL, LGPL и AGPL.Разрешительные лицензии — содержат минимум пользовательских требований и разрешают создавать проприетарный софт на основе исходной программы. С другой стороны, разрешительные лицензии не позволяют автору исходного кода контролировать судьбу модифицированной версии ПО. К ним относятся:
BSD, MIT и Apache.Совместимость лицензий означает, что программы, распространяемые под этими лицензиями, могут быть объединены или код одной программы может быть использован в другой. Разрешительные лицензии в основном совместимы между собой, а вот версии
GPL — нет.Команда modinfo
Выводит информации о модуле: файл модуля, краткое описание, авторы, лицензия, параметры.
Если имя модуля не является именем файла, то будет выполнен поиск в каталоге /lib/modules/версия
Опции:
Выводит информации о модуле: файл модуля, краткое описание, авторы, лицензия, параметры.
modinfo <опция> <имя_модуля|имя_файла>Если имя модуля не является именем файла, то будет выполнен поиск в каталоге /lib/modules/версия
Опции:
-V либо --version — Вывести версию modinfo.-F либо --field — Вывести только значение этого поля, по одному в строке. -k — Предоставить информацию о другом ядре, а не о используемом в настоящее время. Эта возможность может потребоваться для извлечения информации из недавно установленного набора модулей.Процесс загрузки Linux
Как только ядро Linux получает контроль над системой, оно подготавливает свои области памяти и драйвера. Затем оно передает управление init, чьей задачей является дальнейшая подготовка системы и проверка того, что в конце процесса загрузки, все необходимые сервисы запущены и пользователь способен войти в систему.
Init делает это с помощью запуска демона udev, Когда udev запущен, все оставшиеся файловые системы, которые не были примонтированы, монтируются, и запускаются остальные сервисы.
Для систем, где все необходимые файлы и инструменты располагаются на той же самой файловой системе, приложение init может легко управлять дальнейшим процессом загрузки.
Но когда определены множественные файловые системы , этот процесс может стать немного более усложненным, но с давних пор решением для этой проблемы является использование "initrd" (initial root device).
Как только ядро Linux получает контроль над системой, оно подготавливает свои области памяти и драйвера. Затем оно передает управление init, чьей задачей является дальнейшая подготовка системы и проверка того, что в конце процесса загрузки, все необходимые сервисы запущены и пользователь способен войти в систему.
Init делает это с помощью запуска демона udev, Когда udev запущен, все оставшиеся файловые системы, которые не были примонтированы, монтируются, и запускаются остальные сервисы.
Для систем, где все необходимые файлы и инструменты располагаются на той же самой файловой системе, приложение init может легко управлять дальнейшим процессом загрузки.
Но когда определены множественные файловые системы , этот процесс может стать немного более усложненным, но с давних пор решением для этой проблемы является использование "initrd" (initial root device).
Управление буфером обмена из командной строки
Устанавливаем Xclip в Ubuntu:
Примеры использования:
Предположим, вы хотите скопировать имя любого веб-сайта в буфер обмена, а затем, позже, вы также можете вставить его с помощью:
отобразить дату и время с помощью буфера обмена:
Копирование содержимого любого текстового файла и затем вставка его в терминал:
Буфер обмена — непостоянное хранилище на вашем компьютере данных, которые пользователь хочет скопировать с одного пути на другой.
Xclip — отличный инструмент, который используется в качестве буфера обмена. Устанавливаем Xclip в Ubuntu:
sudo apt install xclipПримеры использования:
Предположим, вы хотите скопировать имя любого веб-сайта в буфер обмена, а затем, позже, вы также можете вставить его с помощью:
echo "<URL>" | xclipотобразить дату и время с помощью буфера обмена:
date | xclipКопирование содержимого любого текстового файла и затем вставка его в терминал:
cat textfile.txt | xclipКак правильно запускать gdb, чтобы не было ошибок
Иногда при запуске программы в
Чтобы эта ошибка больше не появлялась, есть несколько способов:
1. Добавить дополнительный флаг
2. Также вместо
3. Уже при запущенном gdb можно использовать команду
где main - это наша скомпилированная программа.
Иногда при запуске программы в
gdb (GNU Debugger) может возникать ошибка: "No symbol table is loaded"Чтобы эта ошибка больше не появлялась, есть несколько способов:
1. Добавить дополнительный флаг
-g при компиляции программы. Например: gcc -g main.c file.c -o main2. Также вместо
-g программу можно скомпилировать с флагом -ggdb.3. Уже при запущенном gdb можно использовать команду
file(gdb) file main
Reading symbols from /home/usr/main… done.где main - это наша скомпилированная программа.
Найти и заменить строку с помощью sed
Общая форма поиска и замены текста с помощью
где
Sed — это неинтерактивный строчный редактор. С помощью sed вы можете искать, находить и заменять, вставлять и удалять слова и строки.Общая форма поиска и замены текста с помощью
sed имеет следующий вид: sed -i 's/SEARCH_REGEX/REPLACEMENT/g' INPUTFILEгде
-i — опция, указывающая sed редактировать файлы на месте. s — заменяющая команда/ — Символ-разделительSEARCH_REGEX — обычная строка или регулярное выражение для поискаREPLACEMENT — строка заменыg — Флаг глобальной заменыINPUTFILE — имя файла, для которого вы хотите запустить командуВыборка файлов для поиска с помощью grep
Команда
Чтобы выполнить поиск только по файлам с определенным расширением, например,
А для того чтобы исключить все файлы с расширением
Команда
grep позволяет фильтровать файлы, в которых нужно искать текст. Чтобы выполнить поиск только по файлам с определенным расширением, например,
.txt нужно использовать опцию --include:grep -r --include=«*.txt» <слово> </путь/к/папке>А для того чтобы исключить все файлы с расширением
.txt используйте опцию --exclude:grep -r --exclude=«*.txt» <слово> </путь/к/папке>Если вам когда-нибудь станет скучно и захочется чем-нибудь заняться, то попробуйте изучить вопрос: «Какие форматы ключей SSH лучше использовать?»
Споры на эту тему бесконечны... используйте RSA, ECDSA и ED25519 и избегайте DSA. Удалите DSA-ключ хоста, а остальные оставьте.
RSA — самый старый тип. Ключи этого типа достаточно стойкие и обеспечивают максимальную совместимость.
ECDSA и ED25519 — более новые типы ключей, очень эффективные и менее затратные в вычислительном отношении.
Некоторые старые клиенты SSH не поддерживают ECDSA и ED25519. Надеюсь, вы не используете их, поскольку ECDSA и ED25519 появились вместе с OpenSSH 6.5 в 2014 году. Чрезвычайно важно обновлять службы безопасности и не использовать старые и небезопасные клиенты.
Споры на эту тему бесконечны... используйте RSA, ECDSA и ED25519 и избегайте DSA. Удалите DSA-ключ хоста, а остальные оставьте.
RSA — самый старый тип. Ключи этого типа достаточно стойкие и обеспечивают максимальную совместимость.
ECDSA и ED25519 — более новые типы ключей, очень эффективные и менее затратные в вычислительном отношении.
Некоторые старые клиенты SSH не поддерживают ECDSA и ED25519. Надеюсь, вы не используете их, поскольку ECDSA и ED25519 появились вместе с OpenSSH 6.5 в 2014 году. Чрезвычайно важно обновлять службы безопасности и не использовать старые и небезопасные клиенты.