Bash: 23 продвинутые команды для глубокого изучения Linux

0
4722
Добавить в избранное

Знать всё: продвинутые команды Bash для глубокого погружения в терминал с разбором внутреннего устройства Linux.

Bash

Уже освоили команды Bash для новичков? Тогда двигаемся дальше, к продвинутому уровню.

Пробуждаем силу суперпользователя

Посмотрите на команду whoami, которая проверяет имя пользователя:

А вот как можно запустить команду bash от имени другого пользователя, с sudo -u username:

Когда не указан флаг -u, команда выполняется от имени суперпользователя root без ограничений:

Хотите стать другим пользователем? С su это реально. Чтобы вернуться в свою учетную запись, используйте exit:

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

Введите команду заново, используя sudo:

Или используйте !! для возврата к предыдущей команде:

По умолчанию после использования sudo система не запрашивает пароль в течении 15 минут. А вот далее для sudo нужно заново вводить пароль суперпользователя.

Разбираемся с правами доступа

Файлы доступны для чтения (r), записи (w) и исполнения (x) пользователям или группам. Просматривайте права доступа к файлам с помощью ls -l:

Права представлены первыми десятью символами.

Первый символ представляет тип файла: d – директория, l – ссылка, - – файл. Дальше следуют три группы из трёх символов, которые отражают разрешения пользователя, владельца, группы и остальных пользователей.

r означает, что группа или пользователь имеют права на чтение файла. w – это права на изменение, а x – на выполнение. Пока что ничего сложного, правда?

Эти разрешения также представляются трехзначным числом, где x увеличивает значение на 1, w, если включен, – на 2 и r – на 4. Поэтому в бинарном представлении, директории выше имеют права доступа 644 и 755. Например r-x -> 101 -> 5.

Следующие строки – имя и группа владельца. За ними следуют размер, дата последнего изменения и название файла. Флаг -h означает «human-readable» и печатает 4.0K вместо 4096 байт.

chmod изменяет разрешения файла, устанавливая биты доступа:

Или добавлением и удалением разрешений флагами + и -:

chown изменяет владельца:

chgrp меняет группу владельцев:

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

Переходим к самому интересному списку команд bash, а именно к тем, которые затрагивают юзеров и группы.

users отображает авторизованных пользователей. Некоторые из них могут быть авторизованы несколько раз, например, при разных сессиях ssh.

Чтобы посмотреть всех пользователей (даже тех, кто не авторизован), проверьте /etc/passwd. Но не вносите изменения в файл! Вы можете повредить его и сделать невозможной авторизацию пользователей.

Добавляйте пользователей командой useradd:

Удаляйте их командой userdel:

groups показывает группы, в которых состоит текущий пользователь:

Нужно посмотреть все группы в системе? Для этого есть команда /etc/groups. Не модифицируйте файл, если не уверены в том, что делаете.

Добавляйте группы с помощью groupadd:

А удаляйте посредством groupdel:

Работаем с текстом

uniq печатает повторяющиеся строки:

sort сортирует строки по алфавиту или номеру:

diff покажет отличия между двумя файлами:

cmp показывает отличия в байтах:

cut используется для деления строки на разделы и подходит для обработки CSV. -d указывает символ деления, а -f – отрезок для печати:

sed меняет строки:

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

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

Хотите узнать больше о чудо-команде? Не вопрос. Полезные ссылки для изучения sed:

Ищем и сопоставляем

grep ищет строки в файлах по заданному шаблону:

Или по заданному слову:

Используйте расширенные регулярные выражения с помощью флага -E, сопоставляйте несколько строк одновременно (-F) и рекурсивно выполняйте поиск по файлам в каталоге (-r).

awk – это язык сопоставления шаблонов, построенный для чтения и манипулирования файлами данных, таких как CSV.

Как правило, grep хорош для поиска строк и шаблонов, sed – для замены строк в файлах, а awk – для извлечения строк и шаблонов в целях анализа.

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

Зациклим строки, добавим число к сумме, увеличим счетчик, найдем среднее:

awk, как и sed, является полной по Тьюрингу. Обе команды чрезвычайно полезны в сопоставлении по шаблону и в обработке текста. Для их описания будет мало и книги, поэтому читайте о них больше в отдельных статьях!

Копируем файлы по SSH

ssh – это сетевой протокол взаимодействия машин под управлением Unix-подобных ОС:

Заметьте, как поменялось приглашение после авторизации на другой машине:

Создадим новый файл на своей машине:

Скопируем файл на удаленный компьютер с помощью scp:

Зайдем на удаленную машину:

И увидим наш файл:

А как насчет оптимизации процесса? Здесь пригодится rsync – инструмент копирования файлов, который минимизирует объем копируемых данных путем поиска различий между файлами.

Предположим, есть директории a и b, содержащие один и два файла соответственно:

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

Теперь a и b содержат одинаковые файлы:

rsync работает по ssh:

Запускаем длительные процессы

Иногда соединение ssh может прерваться из-за неполадок с сетью или оборудованием. При этом процессы, запущенные отключившимся пользователем, прерываются. Команда nohup предотвращает прерывания процессов даже после отключения пользователя. Отличная страховка! Вот как ею пользоваться.

Запустим команду yes с nohup:

ps покажет процессы, запущенные текущим пользователем:

Теперь выйдем из сессии, зайдем снова и увидим, что процесс исчез:

Но постойте! Процесс виден в выводе команд top и htop:

Завершим процесс командой kill -9 с указанием PID:

Проверим видимость в top и увидим, что процесса нет, потому что он был завершен:

cron предоставляет легкие автоматизацию и планирование.

Можно настроить задачи в текстовом редакторе командой crontab -e. Вставим следующую строку:

Теперь cron вызывает команду date каждую минуты и записывает вывод в текстовый файл оператором >>:

Удалите строку в crontab, чтобы остановить выполнение задачи. cron можно настроить на выполнение задач поминутно в течении каждого часа (0 — 59), ежечасно в течении дня (0-23), ежедневно в течении месяца (1-31), ежемесячно в течении года (1-12) или в указанные дни недели (0-6, Пн-Вс). Это отображается пятью звездочками в начале. Замените звезды нужным числом, чтобы настроить расписание.

Хотите больше команд Bash и информации о Linux? Вас заинтересуют:

Источник: 101 команда Bash для начинающих и экспертов

Интересуетесь Linux?

Подпишитесь на нашу рассылку, чтобы получать больше интересных материалов:

И не беспокойтесь, мы тоже не любим спам. Отписаться можно в любое время.




Добавить комментарий