Команды Bash

Команды Bash

Картинка к публикации: Команды Bash

Команды Bash

являются основными инструментами, которые помогают пользователям взаимодействовать с операционной системой Linux. Bash является стандартным интерпретатором командной строки для большинства дистрибутивов Linux, поэтому знание основных команд может значительно упростить работу с системой.

Ниже мы рассмотрим некоторые из наиболее полезных команд Bash, которые помогут вам стать более продуктивным и эффективным в работе с Linux.


cd

смена директории

Команда cd используется для изменения текущей рабочей директории. Например, если вы находитесь в домашней директории /home/user, вы можете перейти в папку Documents, выполнив команду:

$ cd Documents

У cd нет многих атрибутов, как у других команд, однако есть несколько флагов, которые можно использовать вместе с cd:

  • . - текущий каталог.
  • .. - родительский каталог.
  • - - перейти в предыдущий рабочий каталог.
  • -- - обозначает конец списка опций и аргументов.
  • ~ - перейти в домашнюю директорию

Например, чтобы перейти в родительский каталог, можно использовать следующую команду:

$ cd ..

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

$ cd -

Кроме того, cd может использоваться в скриптах для проверки, удалось ли перейти в заданный каталог. Для этого можно использовать переменную $?, которая будет содержать код возврата команды. Если cd удалось перейти в каталог, код возврата будет равен 0, иначе - 1:

$ cd /some/directory
if [ $? -eq 0 ]
then
    echo "Successfully changed directory"
else
    echo "Failed to change directory"
fi

ls

просмотр содержимого директории

Команда ls используется для просмотра содержимого текущей директории. Она выводит список файлов и папок, находящихся в текущей директории. Пример:

$ ls

Ниже приведены наиболее распространенные атрибуты команды ls:

  • -a - выводит скрытые файлы и директории, начинающиеся с точки.
  • -l - выводит детальную информацию о файлах и директориях, включая права доступа, владельца, группу, размер, дату изменения и имя файла.
  • -h - выводит размер файлов и директорий в удобочитаемом формате, например, "1K" вместо "1024".
  • -t - сортирует файлы и директории по дате и времени последнего изменения.
  • -r - сортирует файлы и директории в обратном порядке.
  • -S - сортирует файлы и директории по размеру.
  • -G - выводит информацию без цветовой подсветки.
  • -R - выводит рекурсивно содержимое всех поддиректорий.

Например, для вывода списка файлов и директорий в текущей директории с детальной информацией, удобочитаемым размером и сортировкой по дате изменения в обратном порядке, используйте команду:

$ ls -alhtr

mkdir

создание новой директории

Команда mkdir используется для создания новой директории. Например, если вы хотите создать папку my_folder, выполните следующую команду:

$ mkdir my_folder

Ниже приведены наиболее распространенные атрибуты команды mkdir:

  • -p - создает все промежуточные директории, если они не существуют. Например, команда mkdir -p /path/to/new/directory создаст директории /path, /path/to и /path/to/new/directory, если они не существуют.
  • -m - устанавливает права доступа к создаваемой директории. Например, команда mkdir -m 755 /path/to/new/directory создаст новую директорию с правами доступа 755.
  • -v - выводит подробную информацию о процессе создания директории.

Например, для создания новой директории newdir с правами доступа 755 и выводом информации о процессе создания, используйте команду:

$ mkdir -m 755 -v newdir

А для создания директории path/to/new/directory со всеми промежуточными директориями и выводом информации о процессе создания, используйте команду:

$ mkdir -p -v path/to/new/directory

touch

создание нового файла

Команда touch используется для создания нового пустого файла. Например, если вы хотите создать файл index.html, выполните следующую команду:

$ touch index.html

Ниже приведены наиболее распространенные атрибуты команды touch:

  • -a - изменяет время последнего доступа к файлу.
  • -c - не создает новый файл, если он не существует.
  • -d - устанавливает время и дату создания файла.
  • -m - изменяет время последней модификации файла.
  • -r - устанавливает время изменения файла в соответствии с указанным файлом.

Например, для создания нового файла newfile в текущей директории, используйте команду:

$ touch newfile

А для изменения времени последней модификации файла myfile.txt на текущее время, используйте команду:

$ touch -m myfile.txt

Или для установки времени изменения файла file1.txt в соответствии с временем изменения файла file2.txt, используйте команду:

$ touch -r file2.txt file1.txt

rm

удаление файлов и директорий

Команда rm используется для удаления файлов и директорий. Однако, будьте осторожны, используя эту команду, потому что удаленные файлы и директории не могут быть восстановлены. Пример:

$ rm file.txt

Ниже приведены наиболее распространенные атрибуты команды rm:

  • -f - удаление файлов без подтверждения. Этот атрибут позволяет избежать запроса на подтверждение при удалении файлов, если они защищены от удаления или если их не существует.
  • -i - запрашивает подтверждение перед удалением каждого файла.
  • -r или -R - удаление директории и ее содержимого рекурсивно.
  • -v - выводит подробную информацию о процессе удаления файлов.

Например, чтобы удалить файл file1.txt без запроса на подтверждение, используйте команду:

$ rm -f file1.txt

А для удаления директории dir1 и ее содержимого, используйте команду:

$ rm -r dir1

Или для удаления файлов с запросом на подтверждение, используйте команду:

$ rm -i file1.txt file2.txt

cp

копирование файлов и директорий

Команда cp используется для копирования файлов и директорий. Например, если вы хотите скопировать файл file.txt в папку my_folder, выполните следующую команду:

$ cp file.txt my_folder/

Ниже приведены наиболее распространенные атрибуты команды cp:

  • -i - запрашивает подтверждение перед копированием файла, если файл с таким именем уже существует.
  • -r или -R - копирует директорию рекурсивно, включая все ее содержимое. Если не указать этот атрибут, то команда cp скопирует только сам файл, а не директорию.
  • -u - копирует файл только в том случае, если он новее, чем существующий файл с таким же именем.
  • -v - выводит подробную информацию о процессе копирования файлов.

Например, для копирования файла file1.txt в файл file2.txt, используйте команду:

$ cp file1.txt file2.txt

А для копирования директории dir1 и ее содержимого в директорию dir2, используйте команду:

$ cp -r dir1 dir2

Или для копирования файлов только в том случае, если они новее, используйте команду:

$ cp -u file1.txt file2.txt

mv

перемещение файлов и директорий

Команда mv используется для перемещения файлов и директорий. Например, если вы хотите переместить файл file.txt в папку my_folder, выполните следующую команду:

$ mv file.txt my_folder/

Ниже приведены наиболее распространенные атрибуты команды mv:

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

Например, для перемещения файла file1.txt из директории dir1 в директорию dir2, используйте команду:

$ mv dir1/file1.txt dir2/

А для переименования файла file1.txt в file2.txt, используйте команду:

$ mv file1.txt file2.txt

Или для перемещения директории dir1 в директорию dir2 с запросом на подтверждение, используйте команду:

$ mv -i dir1 dir2

cat

вывод содержимого файла

Команда cat используется для вывода содержимого файла в терминал. Например, если вы хотите просмотреть содержимое файла file.txt, выполните следующую команду:

$ cat file.txt

Ниже приведены наиболее распространенные атрибуты команды cat:

  • -n - нумерует каждую строку в выводе.
  • -E - добавляет знак $ в конец каждой строки в выводе, чтобы обозначить конец строки.
  • -T - заменяет знаки табуляции на соответствующее количество пробелов в выводе.
  • -s - сжимает пустые строки в выводе.

Например, для вывода содержимого файла file1.txt на экран с нумерацией строк, используйте команду:

$ cat -n file1.txt

А для вывода содержимого нескольких файлов file1.txt и file2.txt на экран с добавлением знака $ в конце каждой строки, используйте команду:

$ cat -E file1.txt file2.txt

Или для вывода содержимого файла file1.txt на экран с заменой знаков табуляции на пробелы и сжатием пустых строк, используйте команду:

$ cat -T -s file1.txt

grep

поиск строк в файле

Команда grep используется для поиска строк в файле. Например, если вы хотите найти все строки в файле file.txt, которые содержат слово "example", выполните следующую команду:

$ grep "example" file.txt

Ниже приведены наиболее распространенные атрибуты команды grep:

  • -i - делает поиск регистронезависимым.
  • -v - ищет строки, которые НЕ соответствуют шаблону.
  • -r - выполняет рекурсивный поиск во всех поддиректориях указанной директории.
  • -n - выводит номера строк, которые соответствуют шаблону.
  • -w - ищет только строки, которые содержат целые слова, соответствующие шаблону.

Например, для поиска всех строк, содержащих слово "example" в файле file1.txt, используйте команду:

$ grep example file1.txt

А для поиска всех строк, которые НЕ содержат слово "example" в файле file1.txt, используйте команду:

$ grep -v example file1.txt

Или для рекурсивного поиска всех строк, содержащих слово "example" во всех файлах в директории dir1, используйте команду:

$ grep -r example dir1/

Или для поиска всех строк, содержащих целое слово "example" в файле file1.txt, используйте команду:

$ grep -w example file1.txt

chmod

изменение прав доступа к файлам и директориям

Команда chmod используется для изменения прав доступа к файлам и директориям. Например, если вы хотите разрешить чтение, запись и выполнение файла file.txt для всех пользователей, выполните следующую команду:

$ chmod 777 file.txt

Ниже приведены наиболее распространенные атрибуты команды chmod:

  • -r или -R: устанавливает рекурсивный режим изменения прав на все файлы и директории внутри указанной директории;
  • -c показывает только изменения прав, сделанные при операции;
  • -f отключает вывод ошибок;
  • -v показывает подробную информацию о выполнении операции;
  • u - изменение прав доступа для владельца файла;
  • g - изменение прав доступа для группы, которой принадлежит файл;
  • o - изменение прав доступа для всех остальных пользователей (не владельцев файла и не входящих в группу);
  • a - изменение прав доступа для всех пользователей (владельца, группы и всех остальных);
  • + - добавление прав доступа;
  • - - удаление прав доступа;
  • = - установка прав доступа.

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

  • r - чтение файла.
  • w - запись в файл.
  • x - запуск файла (в случае скрипта или исполняемого файла).
  • s - установка бита SUID или SGID на исполняемый файл или директорию.
  • t - установка бита sticky на директорию.

Например, чтобы установить права чтения и записи для владельца файла file1.txt, используйте команду:

$ chmod u+rw file1.txt

А чтобы установить права чтения и выполнения для всех пользователей для файла file1.txt, используйте команду:

$ chmod a+rx file1.txt

Или чтобы установить бит SUID для исполняемого файла script.sh, используйте команду:

$ chmod +s script.sh

ps

вывод списка процессов

Команда ps используется для вывода списка запущенных процессов в терминале. Например, если вы хотите узнать, какие процессы запущены в данный момент, выполните следующую команду:

$ ps -aux

Ниже приведены наиболее распространенные атрибуты команды ps:

  • a - отображение всех процессов в системе.
  • u - отображение расширенной информации о процессах (включая имя пользователя, запустившего процесс, время запуска процесса, использование процессора и памяти и т.д.).
  • x - отображение процессов, не связанных с терминалом.
  • f - отображение процессов в иерархической структуре (дереве процессов).
  • e - отображение окружения процесса.
  • C - фильтрация по имени процесса (команде запуска).
  • p - фильтрация по идентификатору процесса.
  • r - отображение только работающих процессов.
  • S - сортировка по использованию памяти.
  • T - сортировка по использованию процессора.

Например, чтобы отобразить список всех процессов в системе с расширенной информацией, используйте команду:

$ ps aux

А чтобы отобразить только процессы, связанные с определенным пользователем, используйте команду:

$ ps -u username

Или чтобы отобразить дерево процессов для определенного процесса, используйте команду:

$ ps -f --pid <pid>

top

мониторинг процессов

Команда top используется для мониторинга запущенных процессов в реальном времени. Она позволяет узнать, какие процессы используют больше всего ресурсов системы. Пример:

$ top

Ниже приведены наиболее распространенные атрибуты команды top:

  • d - установить задержку между обновлениями вывода.
  • n - количество отображаемых процессов.
  • p - отображение информации о конкретном процессе с заданным идентификатором.
  • u - отображение процессов только для указанного пользователя.
  • k - отправка сигнала процессу, выбранному по его идентификатору.
  • q - выход из top.
  • r - изменение приоритета процессов.
  • s - изменение интервала сортировки процессов.
  • c - отображение полного имени команды.

Например, чтобы отобразить список процессов, отсортированных по использованию процессора, используйте команду:

$ top -o %CPU

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

$ top -u username

Или чтобы отобразить информацию только о процессе с определенным идентификатором, используйте команду:

$ top -p <pid>

history

просмотр истории команд

Команда history используется для просмотра истории выполненных команд в терминале. Например, если вы хотите просмотреть последние 10 выполненных команд, выполните следующую команду:

$ history 10

Есть несколько атрибутов, которые можно использовать в команде history:

  • -c - очистка истории команд.
  • -a - добавление всех новых команд в историю в режиме реального времени.
  • -r - перечитать содержимое файла истории команд из диска и использовать его для обновления текущей истории.
  • -w - запись текущей истории команд в файл.

Например, чтобы очистить историю команд, выполненных в терминале, используйте команду:

$ history -c

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

$ history -w filename

Где filename - это имя файла, в который нужно записать историю команд.


curl

передача данных по сети

Команда curl используется для передачи данных по сети с использованием различных протоколов, таких как HTTP, FTP, SMTP и другие. Например, если вы хотите загрузить содержимое веб-страницы в терминал, выполните следующую команду:

$ curl https://example.com

Вот некоторые наиболее часто используемые атрибуты команды curl:

  • -o или --output - сохранить полученный файл на локальном диске.
  • -O - сохранить полученный файл на локальном диске с тем же именем, что и на сервере.
  • -C или --continue-at - продолжить скачивание файла с места, где остановилось ранее.
  • -L или --location - следовать перенаправлениям сервера.
  • -I или --head - выполнить HTTP HEAD запрос вместо HTTP GET запроса.
  • -X или --request - использовать определенный метод запроса (например, GET, POST, PUT, DELETE).
  • -H или --header - добавить дополнительный заголовок к запросу.
  • -d или --data - отправить данные с запросом в теле сообщения (например, для отправки POST запросов).
  • -u или --user - указать имя пользователя и пароль для аутентификации на сервере.
  • -s или --silent - не выводить информацию о ходе выполнения команды.


Например, чтобы загрузить файл с сервера и сохранить его на локальном диске, используйте команду:

curl -o filename https://example.com/file

Где filename - это имя файла, под которым файл будет сохранен на локальном диске.

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

curl -X POST -d "param1=value1&param2=value2" https://example.com/api

Где param1 и param2 - это названия параметров, а value1 и value2 - соответствующие значения, которые будут отправлены на сервер в теле сообщения.


tar

создание и распаковка архивов

Команда tar используется для создания и распаковки архивов. Например, если вы хотите создать архив из папки my_folder, выполните следующую команду:

$ tar -czvf my_folder.tar.gz my_folder/

Вот несколько распространенных атрибутов tar:

  • c - создать новый архив.
  • x - распаковать файлы из архива.
  • v - вывести список файлов, добавленных или извлеченных из архива.
  • f - указать имя архивного файла.
  • z - использовать сжатие gzip для создания или распаковки архива.
  • j - использовать сжатие bzip2 для создания или распаковки архива.
  • t - вывести список файлов, содержащихся в архиве, без извлечения их.
  • p - сохранить права доступа к файлам, содержащимся в архиве.
  • u - добавить файлы в архив только тогда, когда они новее, чем их аналоги в архиве.
  • r - добавить файлы в конец архива без изменения существующих файлов.
  • C - указать каталог, в котором нужно выполнить распаковку файлов из архива.

Например, чтобы создать архив из каталога, используйте следующую команду:

tar -czvf archive.tar.gz directory

Где c означает создание нового архива, z - использование сжатия gzip, v - вывод списка файлов, добавленных в архив, f - указание имени архивного файла, directory - каталог, который нужно заархивировать.

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

tar -xzvf archive.tar.gz

Где x - распаковка файлов из архива, z - использование сжатия gzip, v - вывод списка файлов, которые будут извлечены из архива, f - указание имени архивного файла.


ps + grep

Команда ps позволяет просматривать информацию о запущенных процессах в системе, а grep используется для поиска строк в выводе команд. Совместное использование ps и grep позволяет находить нужные процессы по их именам или другим атрибутам. Например, можно найти процессы, связанные с определенным пользователем или с определенным именем программы.

Примеры совместного использования ps и grep:

Найти все процессы, запущенные от имени пользователя user1:

$ ps aux | grep user1

Найти все процессы, связанные с программой nginx:

$ ps aux | grep nginx

Найти все процессы, запущенные от имени пользователя user1 и связанные с программой nginx:

$ ps aux | grep user1 | grep nginx

Найти все процессы, запущенные от имени пользователя user1 и связанные с программой nginx, и отобразить только их идентификаторы процессов (PID):

$ ps aux | grep user1 | grep nginx | awk '{print $2}'

Найти все процессы, запущенные от имени пользователя user1, связанные с программой nginx и запущенные в последние 5 минут:

$ ps aux --sort=-start_time | grep user1 | grep nginx | awk '{if (time()-mktime(gensub(/:/," ","g",$9)" "$(strftime("%Y %m %d"))" GMT")<=300) print $0}'

# Здесь мы использовали дополнительную команду awk, чтобы фильтровать вывод ps и оставить только процессы, запущенные в последние 5 минут.

Найти все процессы, запущенные от имени пользователя user1, связанные с программой nginx и отсортированные по использованию ЦП:

$ ps aux --sort=-%cpu | grep user1 | grep nginx

# Здесь мы использовали флаг --sort, чтобы отсортировать вывод ps по использованию ЦП в обратном порядке.

Найти все процессы, запущенные от имени пользователя user1, связанные с программой nginx и отсортированные по использованию памяти:

$ ps aux --sort=-%mem | grep user1 | grep nginx

# Здесь мы использовали флаг --sort, чтобы отсортировать вывод ps по использованию памяти в обратном порядке.

Читайте также:

ChatGPT
Eva
💫 Eva assistant