Команды 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¶m2=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 по использованию памяти в обратном порядке.