Команды оболочки bash в Linux Ubuntu бывают 2 типов: встроенными и внешними. Последние расширяют базовую функциональность Ubuntu.
Основные термины
- Интерфейс — совокупность программных средств, обеспечивающих взаимодействие пользователя с аппаратной частью компьютера.
- Консоль — вид интерфейса, который позволяет управлять пользователями, файловой системой, протоколами и другими объектами операционной системы.
- Эмулятор консоли — специальная программа или совокупность программных средств, позволяющих представить консоль в виде окна операционной системы.
- Консольное окружение — совокупность консолей Ubuntu.
- Объекты операционной системы — логические единицы, с которыми осуществляется диалог на программном и пользовательском уровнях (аппаратная и программная части). Объектами операционной системы являются логические диски, каталоги, окна и т. д.
- Полное имя файла — путь к файлу с указанием логического диска и каталогов, в которых он находится, а также его название.
Активация консоли
После загрузки операционной системы создается 7 виртуальных консолей с текстовым интерфейсом (консольное окружение). Для навигации и их активации используется сочетание клавиш — Ctrl+Alt+F(1-7), где «F(1-7)» — соответствующие номера консолей.
Например, если требуется перейти во вторую консоль, то нужно нажать — Ctrl+Alt+F2. При переходе необходимо учитывать, что седьмая имеет графический интерфейс.
Работа в терминале
Новичкам рекомендуется начинать работу в терминале, который является эмулятором консоли.
В него можно зайти 2 способами:
- при помощи сочетания — Ctrl+Alt+T
- через контекстное меню — щелкнуть правой кнопкой мыши на пустой области рабочего стола и выбрать пункт «Открыть терминал».
Формат и правила набора
Общие правила
Команду можно копировать и вставить в терминал из браузера или документа. Для ее выполнения нужно указать в начале строки sudo.
При вводе команды вручную или копирования из источника необходимо активировать ее нажатием клавиши «Enter». Если работа в терминале только начинается, то нужно указать пароль, который при вводе не отображается.
При наборе команды требуется соблюдать общий формат: file_name_program_or_comand_name -key value («file_name_program_or_comand_name» — имя файла программы или команды, «key» — ключ и «value» — значение).
- Ключ: параметр, указываемый после имени исполняемого файла или внутренней команды. Используется для указания настроек или действий, которые необходимо выполнить.
- Значение: число или переменная, используемые при выполнении команды.
Ubuntu позволяет использовать пакетный файл, в котором прописывается последовательное выполнение команд. Для его создания требуется:
- открыть новый текстовый файл;
- указать в первой строке #!/bin/bash;
- ввести список команд в столбик, а затем сохранить изменения.
После этого в свойствах файла необходимо активировать флажок «Разрешить выполнение файла как программы» и закрыть окно.
При двойном нажатии левой кнопкой мыши произойдет активация скрипта. Ниже приведен пример пакетного файла, который модифицирует команду rm, удаляющую файлы.
Вышеописанный bash-скрипт создает папку «~/.archive» и перемещает в нее файлы, указывая в начале имени дату удаления.
Пакетный файл
Ubuntu позволяет использовать пакетный файл, в котором прописывается последовательное выполнение команд. Для его создания требуется:
- открыть новый текстовый файл;
- указать в первой строке #!/bin/bash;
- ввести список команд в столбик, а затем сохранить изменения.
После этого в свойствах файла необходимо активировать флажок «Разрешить выполнение файла как программы» и закрыть окно.
При двойном нажатии левой кнопкой мыши произойдет активация скрипта. Пример пакетного файла, который модифицирует команду rm, удаляющую файлы.
Вышеописанный bash-скрипт создает папку «~/.archive» и перемещает в нее файлы, указывая в начале имени дату удаления.
Экономия времени
Терминал Ubuntu поддерживает горячие клавиши, позволяющие экономить время при наборе однотипных команд.
- Ctrl+P или ↑ — прокрутка недавно набранных команд вверх (первая команда при одном нажатии).
- Ctrl+N или ↓ — прокрутка команд вниз, которые недавно набирались (последняя команда при единичном нажатии).
- Tab — автозаполнение при наборе команды.
- history — список всех вводимых команд. Для улучшения его читабельности необходимо указывать sudo history | less. Последовательное выполнение команд sudo history -с и sudo history -w позволяет очистить историю терминала.
- clear — очищает экран терминала, устанавливая курсор в первую строку.
Основные команды bash классифицируются на 10 групп
- Файловые — выполнение различных операций с объектами файловой системы, к которым относятся файлы и каталоги.
- Архивация — работа с архивами.
- Работа с deb-пакетами — установка и удаление приложений, просмотр файловой структуры инсталлятора и информации о пакете.
- Менеджер пакетов apt — действия с deb-пакетами на удаленных серверах или других интернет-ресурсах.
- Операции с текстом — позволяет выполнять манипуляции с содержимым текстовых файлов.
- Пользователь и система — информация о пользователях и сведения о системном окружении.
- Работа с правами доступа — изменение доступа к файлам и папкам.
- SSH-подключение — использование сетевого защищенного SSH-протокола для безопасного подключения к серверу.
- Операции с датой и временем — позволяет узнать текущее время, дату и день недели, а также отображать отдельные временные единицы (например, только дату).
- Управление процессами — позволяет просмотреть все запущенные процессы и управлять ими.
Файловые команды
- Навигация по директориям.
- Навигация по файловой системе осуществляется при помощи команды cd. Для перехода в домашнюю директорию нужно указать параметр «~», не прописывая ключи.
- Чтобы перейти в каталог, необходимо указать его путь. Например, для перехода из домашней директории в папку «music», находящейся в загрузках, требуется выполнить команду: sudo cd загрузки/music.
- Если требуется перейти на 2 директории выше, то следует набрать в терминале: cd /../... Для перехода в предыдущую папку необходимо ввести: cd —.
- При неверном указании пути в терминале появится предупреждение «слишком много аргументов». В этом случае необходимо проверить правильность пути к файлу или проверить ключи.
- Получение пути текущего каталога. Для получения информации о текущем положении пользователя в файловой системе используется команда pwd.
- Создание папки в текущем каталоге — mkdir name_folder1 name_folder2 («name_folder1» и «name_folder2» — имена каталогов, которые требуется создать).
- Создание нового файла — touch file_name («file_name» — имя нового файла).
- Перемещение — mv file_name_or_folder_name path_to_move («file_name_or_folder_name» — имя файла или папки, «path_to_move» — путь, куда нужно переместить объект).
- Переименование — mv file_name_or_folder_name, new_file_name_or_folder_name («file_name_or_folder_name» — имя файла или папки, «new_file_name_or_folder_name» — новое имя). По синтаксису команды похожи, но вместо пути указывается новое имя. Переименовывать можно папки и файлы.
- Копирование — cp file_name_or_folder_name, path_to_copy («file_name_or_folder_name» — имя файла или папки, «path_to_copy» — путь, куда нужно скопировать объект)
- Удаление — rm file_name и rm -rf folder_name («file_name» и «folder_name» — имена файла и папки соответственно).
- Поиск файлов — команда find.
Примеры:
- Поиск по заданным параметрам производится с помощью команды следующего вида: find folder_name key key_options file_operation («file_name» и «folder_name» — имена файла и директории соответственно, «key» — имя ключа; «key_options» — параметры ключа). Операции над найденными файлами производятся с помощью команды: file_operation.
- Например, так осуществляется поиск в директории «dir1» всех файлов, имена которых начинаются на «myfile»: find /tmp/1/dir1 -name ‘myfile*’.
- А так — поиск в директории «dir1» всех txt-файлов, имена которых начинаются на «myf» и содержат три любых символа: find /tmp/1/dir1 -name ‘myf???.txt’.
- Просмотр содержимого файла — cat file_name («file_name» — полное имя файла). Если данных в файле много, то команда cat применяется с параметром more для постраничного вывода. Пример: cat file_name | more.
- Вывод содержимого каталога — ls folder_name («folder_name» — имя каталога).
Команда применяется с ключами для удобного отображения информации:
- a — все файлы и директории;
- s — размеры файлов в байтах;
- h — показывает размеры файлов и директорий в КБ, МБ;
- l — имя пользователя и права доступа).
Ключи можно комбинировать между собой.
Работа с архивами
При помощи команды-архиватора tar можно создавать, разархивировать и просматривать любой tar-архив.
- Создание нового архива — tar — cf arhive_name file_name («arhive_name» — имя архива, в котором требуется указать расширение tar и «file_name» — имя файла или указание группы файлов). Например, если выполнить команду: tar — cf myarch.tar *.txt, то в архив «myarch.tar» будут добавлены все txt-файлы.
- Распаковка — tar — xvf arhive_name path_to_extract («arhive_name» — имя архива и «path_to_extract» — путь для распаковки файлов).
- Просмотр содержимого архива — tar — tf arhive_name («arhive_name» — имя архива).
Работа с deb-пакетами
Deb-пакеты используются для инсталляции программного обеспечения, т. е. являются установочными файлами в Ubuntu.
- Установка или обновление — dpkg -i package_name.deb («package_name.deb» — имя deb-файла).
- Удаление — dpkg -r package_name («package_name.deb» — имя deb-файла).
- Показать все пакеты — dpkg –l.
Менеджер пакетов APT
Менеджер APT — специальное программное обеспечение для установки, модификации или удаления программ. Он компилирует deb-пакеты с репозиториев для конкретной конфигурации операционной системы.
- Установка и обновление — apt-get install package_name («package_name» — имя приложения).
- Получение обновленных списков пакетов — apt-get update.
- Обновление пакетов, установленных на Ubuntu — apt-get upgrade.
- Удаление — apt-get remove package_name («package_name» — имя приложения).
- Проверка целостности пакетов и зависимостей — apt-get check.
Операции с текстом
Для работы с текстовыми файлами применяется специальная команда sed и sort.
Некоторые возможности sed
- Замена одной строки на другую — sed ‘s/stringa1/stringa2/g’ myfile.txt.
- Удаление пустых строк — sed ‘/^$/d’ myfile.txt.
- Удаление пустых строк и комментариев — sed ‘/ *#/d; /^$/d’ myfile.txt.
- Преобразование символов нижнего регистра в верхний — echo ‘esempio’ | tr ‘[:lower:]’ ‘[:upper:]’.
Сортировка
- Сортировка содержимого 2 файлов выполняется при помощи команды: sort file_name_1 file_name_2 («file_name_1» и «file_name_2» — имя первого и второго файла соответственно).
- Сортировка содержимого 2 файлов и запись результата в log-файл: sort filetxt file2.txt >> log.
Пользователь и система
Иногда появляется необходимость в получении информации о пользователях и системе, которая применяется для написания различных программных продуктов.
- whoami — информация о текущем авторизованном пользователе. Если указать команду sudo whoami, то можно получить данные об администраторе, указав его пароль.
- who — сведения о всех пользователя текущей операционной системы. Команда позволяет также узнать IP-адрес, с которого заходил пользователь.
- uname — данные об операционной системе.
- hostname — сетевое имя машины.
Перенаправление вывода информации
Стандартным средством вывода информации о результатах команды, выполненной в терминале, является экран дисплея. Однако можно использовать альтернативный метод, воспользовавшись символами «>» (содержимое файла перезаписывается) или «>>» (добавление информации к существующей).
Терминал позволяет выполнять несколько команд в одну строку. Например, нужно записать все имена txt-файлов в log: find Temp/music -name ‘acords*.txt’ >> log. Log-файл будет создан в текущей директории.
Работа с правами доступа
Команда chmod применяется для изменения прав доступа к файлам или каталогам. Она позволяет разрешить или запретить его, а также ограничить, используя параметры только для чтения.
- ls -lh — просмотр полномочий файлов и каталогов текущей директории.
- Добавление полномочий для директории — chmod 777 folder_name («folder_name» — имя каталога, для которого устанавливаются права доступа).
- Удаление полномочий для директории (только чтение) — chmod 400 folder_name («folder_name» — имя каталога).
- Назначение пользователя владельцем папки — chow user_name folder_name («user_name» — имя пользователя, «folder_name» — имя каталога).
- Удаление прав пользователя на папку — chow -R user_name folder_name («user_name» — имя пользователя, «folder_name» — имя каталога).
Список прав доступа
- 400 — только чтение.
- 644 — чтение и редактирование всеми пользователями.
- 660 — право на чтение и редактирование владельцем и группой.
- 666 — все пользователи могут читать и редактировать.
- 700 — запуск, редактирование и чтение только владельцем.
- 744 — пользователи могут только читать, а владелец читать, редактировать и запускать приложение.
- 755 — любой пользователь может читать и запускать на выполнение, а владелец получает полный доступ.
- 777 — все пользователи могут читать, редактировать и запускать приложение (полные права доступа).
- 1555 — право на удаление файла или папки имеет только владелец, а все остальные могут только читать и запускать на выполнение.
SSH-подключение
SSH позволяет безопасно передавать данные в незащищенной среде по шифрованному каналу. Он применяется для удаленного подключения к серверу и запуска приложений.
- Подключение к серверу, используя логин и пароль пользователя, имеющего на него права — sudo ssh user_name@IP_server («user_name» — имя пользователя, «IP-server» — IP или доменное имя сервера). После ввода команды требуется указать пароль для доступа к машине.
- Выполнение первой команды, но с использованием номера порта — sudo ssh user_name@IP_server -p:22 («user_name» — имя пользователя, «IP-server» — IP или доменное имя сервера, 22 — номер порта).
- Добавление ключа для авторизации без ввода пароля — sudo ssh-copy-id user_name@IP_server («user_name» — имя пользователя, «IP-server» — IP или доменное имя сервера).
Работа с датой и временем
- Дата, время и день недели выводится при помощи специальной утилиты date. Если ввести ее без параметров, то она выводит на экран текущую дату, время и день недели.
- Если выполнить команду sudo date —help или sudo man date, то можно получить полную информацию о ключах программы.
Управление процессами
Процесс — программа, которая выполняется в текущий момент.
- Для мониторинга процессов используется специальная утилита top. Она отображает полную информацию о программе, нагрузку на центральный процессор, оперативную память, дисковое пространство и сеть.
- Для вывода процессов текущего пользователя применяется утилита ps.
- Команда kill служит для остановки запущенной программы. Однако ее использовать не рекомендуется во избежание потери данных.