
Bash (Bourne-Again SHell) - это командная оболочка для Unix-подобных операционных систем, таких как Linux и macOS. Она предоставляет пользователю интерфейс командной строки для работы с операционной системой. Bash является одной из самых распространенных командных оболочек в мире, и ее функциональность может быть значительно расширена с помощью различных утилит и скриптов.
Основные команды Bash позволяют пользователю выполнять различные задачи в командной строке. Это может быть навигация по файловой системе, управление процессами, работа с текстовыми файлами и многое другое.
Общие команды
man
Команда man в bash является универсальным инструментом для получения справочной информации о любой команде в операционной системе. Кратко говоря, man (от англ. manual) предоставляет доступ к руководству пользователя (man-странице) для любой установленной команды в Linux или Unix.
Синтаксис команды:
$ man <команда>
Вот несколько распространенных опций, которые можно использовать с командой man в bash:
- -a, --all - отображает все страницы руководства, связанные с заданной командой, вместо первой страницы.
- -f, --whatis - выводит краткое описание заданной команды. Эта опция эквивалентна команде whatis.
- -k, --apropos - ищет команды, содержащие указанное ключевое слово в их описании.
- -w, --where - отображает путь к странице руководства, связанной с заданной командой.
- -C, --config-file - указывает файл конфигурации для использования вместо стандартного файлового пути.
- -P. --pager - позволяет указать программу-пейджер для использования вместо стандартного.
- -S, --section - позволяет выбрать раздел руководства, в котором будет производиться поиск. Например, -S 2 покажет страницу руководства для системных вызовов.
- -h, --help - отображает справочную информацию о команде man и ее опциях.
Это далеко не все опции, доступные для команды man. Чтобы узнать о них более подробно, можно обратиться к руководству пользователя (man-странице) команды man, введя в терминале "man man".
clear
Команда "clear" в bash используется для очистки терминала от предыдущих команд и вывода новой командной строки в верхней части экрана. Это может быть полезно, когда вы работаете в терминале и хотите убрать лишние данные с экрана, чтобы начать новую работу.
Синтаксис команды очень простой - достаточно ввести "clear" в командной строке терминала и нажать Enter. Это приведет к тому, что все предыдущие данные на экране будут удалены, и вы увидите чистый экран с новой командной строкой вверху.
Навигация
Для навигации по файловой системе в Bash есть три основных команды - pwd, ls и cd
pwd
Команда pwd (Print Working Directory) отображает полный путь к текущей рабочей директории. Это может быть полезно, когда вам нужно знать, в каком месте файловой системы вы находитесь. Команда pwd не принимает аргументов. Просто введите pwd в терминале и нажмите Enter, чтобы узнать текущую рабочую директорию.
$ pwd
/home/user/Documents
ls
Команда ls (List) используется для отображения содержимого текущей директории. Эта команда позволяет просматривать и управлять файлами и директориями.
Синтаксис команды:
$ ls [опции]
. .. file1.txt file2.txt .hidden_directory
Некоторые из наиболее распространенных аргументов команды ls в Bash:
- -a - отобразить скрытые файлы и директории, начинающиеся с точки.
- -l - отобразить длинный формат вывода, включая подробную информацию о файлах и директориях, такую как права доступа, владелец, группа, дата изменения и размер.
- -h - использовать человекочитаемый формат для размеров файлов и директорий (например, "10K" вместо "10240").
- -r - отобразить файлы и директории в обратном алфавитном порядке.
- -t - отобразить файлы и директории в порядке последнего изменения.
- -S - отобразить файлы и директории в порядке убывания размера.
- -R - отобразить содержимое всех поддиректорий рекурсивно.
- -i - отобразить индексный номер (i-node) для каждого файла и директории.
cd
Команда cd (Change Directory) используется для изменения текущей рабочей директории. Эта команда позволяет перемещаться по файловой системе. Команда cd может принимать абсолютный или относительный путь к директории.
Примеры использования
Перейти в домашнюю директорию:
$ cd ~
Перейти в корневую директорию:
$ cd /
Перейти в родительскую директорию:
$ cd ..
Перейти в директорию Documents в текущей директории:
$ cd Documents/
Перейти в предыдущую директорию:
$ cd -
Перейти в директорию, используя абсолютный путь:
$ cd /home/user/Documents/
Перейти в директорию, используя относительный путь:
$ cd ../../Desktop/
Операции с файлами и директориями
Мы научились перемещаться по директориям, теперь давайте освоим операции создания, удаления, копирования и перемещения файлов и директорий используя команды Bash
touch
Команда touch в Bash используется для создания файлов или обновления временных меток (timestamp) у существующих файлов.
Если файл уже существует, команда touch обновит его временные метки до текущего времени. Если файл не существует, команда touch создаст его.
Синтаксис команды touch:
$ touch [опции] имя_файла
Опции команды touch:
- -a -изменить только время последнего доступа к файлу
- -c - не создавать новый файл, если он не существует
- -m - изменить только время последней модификации файла
- -t - устанавливает временные метки на основе заданного времени в формате [[CC]YY]MMDDhhmm[.ss], где CC - первые две цифры года, YY - последние две цифры года, MM - месяц, DD - день, hh - часы, mm - минуты, ss - секунды
- -d - устанавливает временные метки на основе заданной даты и времени в формате, который может быть распознан командой date
- --time - устанавливает только указанный тип временной метки, например, --time=atime для времени последнего доступа, --time=ctime для времени последнего изменения метаданных файла, --time=mtime для времени последней модификации содержимого файла
Команда touch также может использоваться для установки временных меток на основе другого файла с помощью опции -r. Например, touch -r file1.txt file2.txt установит временные метки для файла file2.txt на основе временных меток файла file1.txt.
mkdir
Команда mkdir (от англ. make directory) используется в операционной системе Linux/Unix для создания новых каталогов (папок) в файловой системе.
Синтаксис команды:
$ mkdir [опции] <имя каталога>
Опции команды mkdir:
- -m, --mode=РЕЖИМ - задает права доступа к создаваемому каталогу в восьмеричной системе счисления. Например, -m 755 задаст права на чтение, запись и выполнение для владельца каталога и на чтение и выполнение для всех остальных.
- -p, --parents - создает промежуточные каталоги, если они не существуют. Например, mkdir -p /home/user/new_directory создаст каталоги /home, /home/user и /home/user/new_directory.
- -v, --verbose - выводит информацию о созданных каталогах.
- -Z, --context[=CTX] - устанавливает контекст безопасности SELinux для создаваемого каталога (для систем, где SELinux включен).
rm
Команда rm (remove) в bash используется для удаления файлов или каталогов.
Синтаксис команды:
$ rm [опции] <имя каталога или файла>
Опции команды rm:
- -f - игнорировать ошибки и не запрашивать подтверждение удаления файлов
- -r - рекурсивное удаление каталогов и их содержимого
- -i - запрашивать подтверждение перед удалением каждого файла
Примеры использования
$ rm file.txt
Удаление файла file.txt
$ rm -r directory
Удаление каталога directory и его содержимого
$ rm -f file.txt
Удаление файла file.txt без запрашивания подтверждения
$ rm -i file.txt
Запрос на подтверждение перед удалением файла file.txt
$ rm -r -f directory
Удаление каталога directory и его содержимого без запрашивания подтверждения и без вывода сообщений об ошибках
Важно помнить, что команда rm без опции -r не может удалить каталоги. Также необходимо быть осторожным при использовании опции -f, так как она может привести к удалению важных файлов без возможности их восстановления.
rmdir
Команда rmdir в bash используется для удаления пустых каталогов (папок) в файловой системе. Если каталог не пустой, то команда выдаст ошибку.
Синтаксис команды:
$ rmdir [опции] directory
Опции команды rmdir:
- -p, --parents - удаляет родительские каталоги, если они стали пустыми после удаления целевого каталога
- -v, --verbose - выводит информацию о каждом удаленном каталоге
cp
Команда "cp" (от англ. "copy") в операционной системе Linux используется для копирования файлов и директорий из одного места в другое. Команда имеет множество опций, которые позволяют настраивать ее поведение в соответствии с нуждами пользователя.
Синтаксис команды:
$ cp [опции] <имя каталога или файла>
Опции команды cp:
- -a - копирует файлы с сохранением всех атрибутов, включая права доступа, дату создания и модификации, владельца и группу;
- -b - создает резервную копию файла, если он уже существует в целевой директории;
- -i - запрашивает подтверждение перед перезаписью файла, если файл с таким именем уже существует в целевой директории;
- -f - принудительно перезаписывает файлы без запроса подтверждения;
- -n - не перезаписывает файлы, если файл с таким именем уже существует в целевой директории;
- -r - копирует директорию и ее содержимое рекурсивно;
- -p - сохраняет все атрибуты файла, кроме владельца и группы;
- -S - создает резервную копию файла и сохраняет ее с указанным расширением.
- -u - копирует только те файлы, которые новее, чем уже существующие файлы с тем же именем в целевой директории;
- -v - выводит информацию о каждом скопированном файле на экран.
mv
Команда mv в операционной системе Linux используется для перемещения или переименования файлов и директорий.
Синтаксис команды:
$ mv [опции] исходный_файл/директория целевая_директория/новое_имя
Опции команды mv:
- -i - запрашивать подтверждение перед перезаписью файла, если файл с таким именем уже существует в целевой директории.
- -f - перезаписать файл, даже если он уже существует в целевой директории и не запрашивать подтверждение.
- -n - не перезаписывать файл, если файл с таким именем уже существует в целевой директории.
- -v - выводить на экран информацию о перемещении файлов.
Примеры использования команды mv:
-
Переименование файла:
$ mv file.txt newfile.txt
Эта команда переименует файл file.txt в newfile.txt.
-
Перемещение файла в другую директорию:
$ mv file.txt /home/user/documents/
Эта команда переместит файл file.txt в директорию /home/user/documents/.
-
Перемещение файла и переименование его:
$ mv file.txt /home/user/documents/newfile.txt
Эта команда переместит файл file.txt в директорию /home/user/documents/ и переименует его в newfile.txt.
-
Перемещение директории с содержимым:
$ mv /home/user/documents /home/user/newdocuments
Эта команда переместит директорию documents в директорию newdocuments. Если директория newdocuments не существует, то она будет создана.
Просмотр и редактирование файлов
head
Команда head в Bash используется для вывода первых строк из указанных файлов или стандартного ввода. По умолчанию, head выводит первые 10 строк из каждого файла, но это поведение может быть изменено с помощью опций.
$ head [опции] <имя файла>
Опции команды head:
- -n - указывает количество строк для вывода. Например, head -n 5 file.txt выведет первые 5 строк файла file.txt.
- -c - указывает количество байт для вывода. Например, head -c 100 file.txt выведет первые 100 байт из файла file.txt.
- -q - если команда head используется для вывода содержимого нескольких файлов, опция -q подавляет вывод имен файлов.
- -v - если команда head используется для вывода содержимого нескольких файлов, опция -v позволяет выводить имена файлов перед выводимыми строками.
- -z - указывает, что входные файлы являются сжатыми с помощью gzip. head будет читать данные из таких файлов и выводить первые строки, не распаковывая файлы.
tail
Команда tail в Bash используется для вывода последних строк из файла или потока данных. Она может быть полезна при мониторинге логов или других файлов, которые постоянно обновляются.
$ tail [опции] <имя файла>
Опции команды tail:
- -n <число> - позволяет указать количество выводимых строк. Например, tail -n 10 file.txt выводит последние 10 строк из файла file.txt.
- -f - следит за изменениями в файле и выводит новые строки по мере появления. Эта опция может быть полезна для мониторинга логов в реальном времени.
- -q - не выводит заголовок файла при выводе нескольких файлов.
- -v - выводит заголовок файла при выводе нескольких файлов.
- -c <байты> - позволяет указать количество выводимых байт вместо строк. Например, tail -c 100 file.txt выведет последние 100 байт из файла file.txt.
- --pid=<идентификатор процесса> - следит за изменениями в файле, связанном с указанным идентификатором процесса.
cat / tac
Команды cat и tac являются утилитами командной строки, которые используются для чтения, объединения и вывода содержимого файлов.
Команда cat (от англ. concatenate — объединять) читает содержимое одного или нескольких файлов и выводит его в стандартный вывод (обычно в терминал). Синтаксис команды:
$ cat [опции] <файлы>
Некоторые из доступных опций команды cat:
- -n - нумерует каждую строку вывода
- -b - нумерует только строки, которые не являются пустыми
- -s - объединяет повторяющиеся пустые строки в одну
- -E - добавляет символ $ в конце каждой строки вывода
- -T - заменяет символы табуляции на соответствующее количество пробелов
Например, команда cat -n file.txt выведет содержимое файла file.txt с нумерацией строк.
Команда tac делает то же самое, что и cat, но выводит содержимое файлов в обратном порядке.
Синтаксис команды:
$ tac [опции] <файлы>
Опции для команды tac идентичны опциям для команды cat. Например, команда tac -n file.txt выведет содержимое файла file.txt в обратном порядке с нумерацией строк.