Шпаргалка по основным командам Bash
Неважно кто вы, разработчик ПО, специалист по данным, менеджер ИТ-инфраструктуры или просто любитель компьютеров — вам нужно знать, как пользоваться терминалом в Linux и macOS. Но сложность в том, что необходимо запомнить слишком много команд. И если у вас нет чудо-памяти, время от времени приходится искать в Интернете ту или иную команду.
Сегодня я поделюсь с вами самыми популярным и полезными командными интерпретаторами.
Основные
Помощь
Забыли аргументы для cp ? Какая опция у команды mkdir ? Вот вам подсказка:
Конвейер
Зачастую с его помощью перенаправляют вывод одной команды на ввод другой или приписывают команду к файлу:
Фильтрация вывода
Бывает, что команда выводится слишком долго. В этом случае вы либо разделите страницу с помощью команды more или less , либо выведите строки, которые содержат специальное слово или предложение с grep :
Очистка экрана
Слишком много текста в терминале? Просто напишите clear и продолжайте работать.
Система
Информация о системе
С этими командами вы с легкостью получите все подробности о компьютере:
Работам с процессами
Следующие команды предоставляют общие сведения о всех процессах, происходящих в системе. В macOS и некоторых дистрибутивах Linux htop не установлен, поэтому перед использованием нужно установить его с помощью стандартного менеджера пакетов (для macOS — Homebrew):
Смена пользователей
При открытии терминального окна все вводимые команды выполняются под текущим пользователем. Однако зачастую приходится выполнять команды от привилегированного пользователя, поэтому важно знать, как их сменять внутри оболочки.
Копирование и вставка в буфер обмена
Вы можете скопировать и вставить текст из/в терминал, выделив их и нажав Ctrl + C или Ctrl + V. Но иногда хочется напрямую получить доступ к буферу обмена. И как вы видите ниже, это не так уж и просто, что на Linux, что на macOS.
Переменные и путь
Можно двумя способами определить переменные внутри оболочки: в реальном времени, написав в терминале соответствующую команду, или же определить их в файле .bashrc в домашний каталог, где они будут храниться вечно.
Ещё один интересный инструмент — alias (псевдоним), сокращение для длинных команд. Посмотрим, как он строится:
Для тех, кто не знает, путь (Path) – это каталоги, в которых ОС ищет файлы для исполнения. С его помощью можно запустить файл, написав лишь название, даже не нужно знать его расположение. Кроме того, в путь можно добавить папку, а также найти каталог, где находится исполняемый файл, с помощью команд:
Файлы и каталоги
Смена текущего каталога
Для перехода между каталогами файловой системы вам лишь нужно знать, как применять команду cd .
Содержимое каталога
Чтобы вывести в каталоге файлы, папки, а также их свойства, не обойтись без команды ls .
Скачать файл из Интернета
Самый простой способ скачать файл с веб-серверов — это команда wget .
Создать каталог
Если вы хотите создать папку, используйте команду mkdir .
Копирование, перемещение и удаление
Как правило, функции копирования, перемещения и удаления выполняют через файловый менеджер, но можно делать это и через терминал.
Права доступа и владельцы
Права доступа и владельца файла или каталога можно изменить с помощью команды chmod и chown .
Поиск файлов
Забыли где файл contacts.json ? Хотите вывести все PDF файлы, находящиеся в папке? С помощью команды find вы можете сделать это и многое другое.
Вычисление контрольной суммы SHA256 файла
При скачивании любой программы из Интернета, рекомендуется проверить контрольную сумму SHA, чтобы убедиться, всё ли верно скачалось. И сделать это гораздо легче через терминал:
Сжатие и распаковка TAR/ZIP файлов
Неважно, что у вас TAR или ZIP файл, вы можете распаковать его через терминал или же создать из существующих папок:
Свободное место на диске
Хотите узнать доступное место на жестком диске? Или на внешнем? Или в текущем каталоге? В этих вопросах помогает команда df .
Просмотр содержимого файла
Через терминал можно не только просматривать содержимое текстового файла, но и проводить анализы, например сортировать и менять порядок строк по содержанию, подсчитывать количество строк, слов, символов, и выделить столбцы, если это табличный файл. Рассмотрим их в действии:
Базовые команды в Linux для начинающих
Для пользователей из мира Windows взаимодействие с командной строкой в Linux поначалу может показаться несколько пугающей и запутанной затеей. Однако использовать её не так уж и сложно. В этой статье мы рассмотрим наиболее распространенные команды в Linux.
Навигация по файловой системе
При навигации по файловой системе в Linux можно использовать как абсолютный, так и относительный пути к ресурсу.
Абсолютный (или полный) путь начинается с корневого каталога, обозначаемого символом / , а относительный путь начинается с текущего каталога (в котором в данный момент работает пользователь).
Команда pwd
Команда pwd (от англ. «present working directory») позволяет узнать, в каком каталоге вы находитесь в данный момент:
Результатом будет путь к текущему рабочему каталогу:
Команда cd
Команда cd (от англ. «change directory») используется для смены текущего рабочего каталога. При использовании без каких-либо параметров, команда cd перенесет вас в ваш домашний каталог:
Чтобы перейти в другой каталог, вы можете использовать абсолютный или относительный путь. Например, перейти в папку Downloads, расположенную в текущем каталоге, можно как через относительный путь:
Так и через абсолютный путь:
Две точки .. обозначают родительский каталог или каталог уровнем выше текущего. Предположим, что в данный момент вы находитесь в каталоге /usr/local/bin. Чтобы перейти в каталог /usr/local (на один уровень выше текущего каталога), необходимо ввести:
Чтобы подняться на два уровня вверх:
Чтобы вернуться к предыдущему рабочему каталогу, используйте символ тире – в качестве опции:
Если каталог, который вы хотите изменить, имеет пробелы в своем имени, то вы должны либо взять путь в кавычки, либо использовать символ обратной косой черты \ :
$ cd имя\ каталога\ с\ пробелами
Работа с файлами и каталогами
Команда ls
Команда ls (от англ. «list») выводит информацию о файлах и каталогах внутри заданного каталога. При использовании без параметров, данная команда отобразит в алфавитном порядке список имен всех файлов в текущем рабочем каталоге:
Чтобы вывести содержимое конкретного каталога, достаточно указать путь к этому каталогу в качестве параметра:
По умолчанию, команда ls отображает только имена файлов и каталогов. Для более подробного вывода применяется опция -l :
Выходные данные будут содержать информацию о типе файла, разрешениях, количестве ссылок на него, владельце, группе, размере, дату и имя файла:
-rw-r—r— 1 root root 337 Oct 4 11:31 /etc/hosts
По умолчанию, команда ls не показывает скрытые файлы (файлы, имена которых начинаются с точки . ). Чтобы отобразить все файлы, включая скрытые, используйте опцию -a :
Для вывода списка всех файлов в подкаталогах используйте опцию -R :
Команда file
Файлы в Linux не обязаны всегда иметь расширения для того, чтобы с ними можно было работать. Поэтому пользователю иногда трудно определить, что за файл перед ним. Команда file помогает решить данную проблему, отображая информацию о типе файла на основе его содержания:
/etc/fstab: ASCII text
Команда file может работать и с директориями, например:
/tmp/: sticky, directory
Команда touch
Команда touch используется для создания новых пустых файлов, а также для обновления временных меток в уже существующих файлов и каталогов.
Чтобы создать новый файл, используйте команду touch с именем (создаваемого) файла в качестве параметра:
Если файл уже существует, команда touch изменит отметку о времени последнего доступа (или изменения) к нему.
Команда mkdir
Команда mkdir (от англ. «make directory») позволяет создавать новые каталоги. Для этого укажите имя каталога в качестве параметра:
В качестве параметров команда mkdir может принимать одно или несколько имен каталогов. Если параметром является имя каталога без полного пути, то новый каталог создастся в текущем рабочем каталоге.
Для создания родительских каталогов используется опция -p :
$ mkdir -p Projects/ravesli.com/src/assets/images
Вышеприведенная команда создаст полную структуру каталогов.
При использовании команды mkdir с опцией -p , она создает каталог только в том случае, если он изначально отсутствует.
Команда rmdir
Команда rmdir (от англ. «remove directory») используется для удаления (только) пустых каталогов:
Команда ln
Команда ln (от англ. «link») используется для создания символьных ссылок. Символьная ссылка — это особый тип файла, который указывает на другой файл или каталог. Чтобы создать символьную ссылку, используйте команду ln -s , указывая имя файла в качестве первого параметра и имя символьной ссылки в качестве второго параметра:
$ ln -s имя_файла имя_ссылки
Если в качестве параметра указан только файл, команда ln создаст в текущем рабочем каталоге ссылку на этот файл с тем же именем, что у файла.
Команда rm
Команда rm (от англ. «remove») используется для удаления файлов и каталогов. При указании без параметров данная команда удаляет только файлы. Стоит отметить, что при этом команда не запрашивает у пользователя подтверждения на продолжение удаления файлов.
Чтобы удалить файл или символьную ссылку, используйте команду rm и имя файла в качестве параметра:
Также в качестве параметров допускается указывать одно или несколько имен файлов или каталогов.
Опция -i указывает команде rm запрашивать у пользователя подтверждение перед удалением файла:
rm: удалить пустой обычный файл ‘file.txt’?
Опция -d используется для удаления одного или нескольких пустых каталогов:
Чтобы рекурсивно удалить непустые каталоги и все файлы в них, используйте опцию -r (от англ. «recursive»):
Опция -f указывает команде rm никогда не запрашивать подтверждения у пользователя и игнорировать несуществующие файлы.
Примечание: Будьте очень осторожны с командой rm -rf и дважды проверьте, в каком каталоге вы находитесь, т.к. вызов rm -rf безвозвратно (и без дополнительного подтверждения) удалит все файлы и папки из него.
Команда cp
Команда cp (от англ. «copy») позволяет копировать файлы и каталоги. Чтобы скопировать файл в текущий рабочий каталог, используйте исходный файл в качестве первого параметра, а новый файл — в качестве второго:
$ cp file file_backup
Чтобы скопировать файл в другой каталог, укажите абсолютный или относительный путь к целевому каталогу. Если в качестве места назначения указано только имя каталога, то скопированный файл будет иметь то же имя, что и исходный файл.
$ cp file.txt /backup
По умолчанию, если файл назначения существует, он будет перезаписан.
Чтобы скопировать каталог, вместе с его файлами и подкаталогами, используйте опцию -R или -r :
$ cp -R Pictures /opt/backup
Команда mv
Команда mv (от англ. «move») используется для перемещения файлов и каталогов из одного места в другое, а также для переименования файлов. Например, чтобы переместить файл file.txt в каталог /tmp, вы должны выполнить:
Чтобы переименовать файл, необходимо указать имя целевого файла, а затем его новое имя:
$ mv file.txt file1.txt
Синтаксис перемещения каталогов такой же, как и при перемещении файлов. Чтобы одновременно переместить несколько файлов и каталогов, укажите конечный каталог в качестве последнего параметра:
$ mv file.tx1 file1.txt /tmp
Команда tar
Команда tar является наиболее часто используемой командой для объединения нескольких файлов в один *.tar-архив — распространенный формат файлов Linux (похожий на формат .zip), причем процедура сжатия для него не является обязательной.
Предположим, что нам нужно создать .tar-архив каталога /etc, для этого необходимо использовать следующую команду:
$ tar -cvf myarchive.tar /etc
Опция -c указывает команде tar на то, что мы создаем .tar-файл, опция -v отображает список обрабатываемых файлов, а опция -f применяется для указания имени архивного файла.
Если вы хотите добавить файл к уже существующему .tar-архиву, то вместо опции -c используется опция -r . Например, давайте добавим к нашему архиву myarchive.tar файл /etc/fstab:
$ tar -rvf myarchive.tar /etc/fstab
Примечание: К уже сжатому .tar-файлу добавить новый файл или каталог не получится.
Извлечение в текущую папку файлов и каталогов из архивного файла выполняется с помощью опции -x :
$ tar -xvf myarchive.tar
Опция -C дает пользователю возможность самостоятельно указывать путь для извлекаемых файлов:
$ tar -xvf myarchive.tar -C /tmp/
Команды zip и unzip
Команда zip применяется для сжатия файлов в .zip-архив, а команда unzip — для извлечения заархивированных файлов из .zip-архива.
Чтобы создать архив из нескольких файлов, просто укажите имя создаваемого архива и перечислите список помещаемых в него файлов:
$ zip newarchive.zip file1 file2 file3
Если вы хотите сжать каталог вместе с вложенными в него файлами, то необходимо использовать опцию -r :
$ zip –r newarchive.zip /home/diego/mydocs/
Также, цифрами от 0 (без сжатия, быстро) до 9 (максимальное сжатие, медленно) вы можете указывать степень сжатия будущего архива. По умолчанию, используется 6-й уровень сжатия:
$ zip -9 –r newarchive.zip /home/diego/mytxtfiles/
Для извлечения содержимого архива в текущий каталог используется команда unzip :
Опция -d позволяет распаковать содержимое архива в указанную папку, например:
$ unzip myarchive.zip –d /tmp/
Команда find
Команда find выполняет поиск файлов и каталогов в заданном каталоге. Например, следующая команда будет искать файл с именем notes.txt в каталоге /home и его подкаталогах:
$ find /home/ -name notes.txt
Команда df
Команда df (от англ. «disk free») используется для получения отчета об использовании дискового пространства системы, отображаемого в процентах и килобайтах. Если вы хотите просмотреть отчет в мегабайтах, используйте:
Команда du
Команда du (от англ. «disk usage») используется для проверки того, сколько места занимает указанный файл или каталог. Чтобы увидеть занимаемое дисковое пространство в байтах, килобайтах или мегабайтах, добавьте опцию -h :
Владение файлами и права доступа
Команда chmod
Команда chmod (от англ. «change mode») позволяет изменить права доступа к файлам. Она работает в двух режимах: символьном и числовом.
При использовании числового режима вы можете установить разрешения для владельца, группы и всех остальных при помощи заданного набора чисел. Разрешения на запись, чтение и выполнение имеют следующие числовые значения:
x (выполнение) = 1
нет разрешений = 0
Совокупность разрешений для определенного класса пользователей описывается суммой соответствующих значений разрешений. Например, чтобы дать владельцу файла права на чтение и запись, а также только права на чтение членам группы и всем другим пользователям, необходимо выполнить:
$ chmod 644 имя_файла
Только пользователь root, владелец файла или пользователь с правами sudo могут изменять права доступа к файлу.
Для рекурсивного изменения прав всех файлов и папок в заданном каталоге, используйте команду chmod с опцией -R :
$ chmod -R 755 имя_каталога
Команда chown
Команда chown (от англ. «change owner») позволяет изменить владельца и группу заданного файла, каталога или символьной ссылки.
Чтобы изменить владельца файла, достаточно выполнить:
$ chown имя_пользователя имя_файла
Чтобы изменить как владельца, так и группу файла, вызовите:
$ chown имя_пользователя:имя_группы имя_файла
Используйте опцию -R , чтобы рекурсивно обработать все файлы и каталоги в заданном каталоге:
$ chown -R имя_пользователя:имя_группы имя_каталога
Команда sudo
Команда sudo (от англ. «Substitute User and do« = «подменить пользователя и выполнить») позволяет запускать программы от имени другого пользователя (по умолчанию, используется пользователь root). Использование команды sudo , вместо входа в систему под учетной записью пользователя root, более безопасно, поскольку вы можете предоставить ограниченные административные привилегии отдельным пользователям, не зная пароля пользователя root.
Чтобы использовать sudo , просто добавьте префикс sudo перед командой:
Управление пользователями и группами
Команда uname
Команда uname с опцией -a выведет подробную информацию о вашей системе: имя машины, версия операционной системы, ядра и т.д.
Linux debian 5.10.0-6-amd64 #1 SMP Debian 5.10.28-1 (2021-04-09) x86_64 GNU/Linux
Команды useradd и passwd
Команда useradd позволяет создавать новых пользователей. Чтобы создать новую учетную запись пользователя, вызовите команду useradd вместе с именем нового пользователя:
После создания пользователя установите ему пароль, выполнив команду passwd:
Команда userdel
Команда userdel используется для удаления учетной записи пользователя:
Опция -r удаляет домашний каталог пользователя и связанные с ним данные:
$ userdel -r имя_пользователя
Команды groupadd и groupdel
Команда groupadd используется для создания новой группы. Просто укажите название группы в качестве параметра:
Чтобы удалить группу, используйте команду groupdel с именем группы в качестве параметра:
Команда usermod
Чтобы добавить существующего пользователя в группу, используйте команду usermod с опцией -G и именем группы:
$ usermod -a -G sudo ravesligroup
Управление процессами
Команда top
Команда top отображает в режиме реального времени список запущенных процессов, их числовые идентификаторы (сокр. «PID» от англ. «Process IDentificator») и насколько сильно каждый из них нагружает CPU:
Команда kill
Если у вас есть зависшая программа, то вы можете вручную завершить её работу, послав с помощью команды kill соответствующий сигнал.
Всего существует 64 различных сигнала, но самыми популярными являются два:
SIGTERM (15) — сигнал завершения работы программы, при котором ей дается некоторое время, чтобы сохранить свой прогресс и данные.
SIGKILL (9) — сигнал, требующий от программы немедленного завершения. Все несохраненные данные при этом будут потеряны.
Например, зная PID нужного вам процесса, послать ему сигнал можно следующим образом:
В этом примере параметр -9 отвечает за сигнал SIGKILL (9), а 3501 — это идентификатор (PID) нужного вам процесса.
Работа с сетью
Команда ping
Команда ping применяется в тех случаях, когда необходимо проверить состояние подключения к серверу. Например:
Данная команда проверит, сможете ли вы подключиться к сайту Ravesli, а также измерит и отобразит время отклика.
Команда wget
Команда wget пригодится вам, если вы собираетесь загрузить из Интернета какие-либо файлы (или страницы сайтов). Она поддерживает протоколы HTTP, HTTPS, FTP, а также работу через прокси-серверы. Для загрузки нужного вам файла просто передайте его адрес в качестве параметра команде wget :
Команда hostname
Команда hostname используется для проверки имени вашего хоста. Добавление опции -I в её конец покажет его IP-адрес.
Работа с текстом
Команда head
Команда head используется для просмотра первых строк любого текстового файла. По умолчанию она будет показывать первые десять строк, но с помощью опции -n вы можете изменить это число. Например, для отображения только первых пяти строк, введите:
$ head -n 5 filename.txt
Команда tail
Команда tail отображает последние десять строк текстового файла:
$ tail -n filename.txt
Команда diff
Команда diff (от англ. «difference») производит построчное сравнение содержимого двух файлов. После анализа файлов, выводится список несовпадающих строк. Программисты часто используют данную команду, когда им нужно внести некоторые изменения в исходный код программы:
$ diff file1.txt file2.txt
Команда grep
Команда grep (от англ. «search globally for lines matching the regular expression, and print them») позволяет искать указанный текст в указанном файле, например:
$ grep blue notepad.txt
Вышеприведенная команда будет искать слово blue в файле notepad.txt и выведет все строки, в которых содержится искомое слово.
Команда echo
Команда echo используется для вывода в терминал строки, указанной ей в качестве параметра. Часто команда echo применяется для перемещения некоторых данных в файл. Например, если вы хотите добавить строку «Hello, world!» в файл с именем name.txt, выполните:
$ echo «Hello, world!» >> name.txt
Команда cat
Команда cat (от англ. «concatenate») склеивает файлы, а также позволяет вывести на экран содержимое одного или нескольких файлов. Чтобы отобразить содержимое файла, необходимо указать его имя в качестве параметра команды cat :
Установка и удаление пакетов
Менеджер пакетов — это инструмент, который позволяет устанавливать, обновлять, удалять и управлять пакетами программного обеспечения, специфичными для дистрибутива Linux. Различные дистрибутивы Linux имеют различные менеджеры и форматы пакетов.
Только root или пользователь с привилегиями sudo может устанавливать и удалять пакеты.
apt (Ubuntu и Debian)
apt (от англ. «Advanced Package Tool») — это система управления пакетами, используемая дистрибутивами на базе Debian. В дистрибутивах на базе Debian существует несколько инструментов управления пакетами с помощью командной строки, причем наиболее часто используются apt и apt-get.
Перед установкой нового пакета сначала необходимо обновить информацию о пакетах:
Индекс apt — это база данных, содержащая записи доступных в репозиториях пакетов, подключенных в вашей системе.
Чтобы обновить установленные пакеты до последних версий, выполните:
Установка пакетов так же проста:
$ apt install имя_пакета
Чтобы удалить установленный пакет, введите:
$ apt remove имя_пакета
dnf (CentOS и Fedora)
rpm (сокр. от англ. «Red Hat Package Manager») — это мощная система управления пакетами, используемая в дистрибутивах от Red Hat и производных дистрибутивах, таких как: CentOS и Fedora. С rpm также связаны команда rpm и .rpm-формат пакетов.
Чтобы установить новый пакет в дистрибутивах от Red Hat, вы можете использовать команду yum или dnf:
$ dnf install имя_пакета
Начиная с CentOS 8, dnf заменил yum в качестве менеджера пакетов по умолчанию, при этом dnf обратно совместим с yum .
Чтобы обновить установленные пакеты до последних версий, введите:
Удаление пакетов так же просто, как:
$ dnf remove имя_пакета
Справка
Параметр help
Большинство команд имеют параметр —help , при помощи которого выводится короткое сообщение о том, как использовать указанную команду:
Команда man
Почти все команды в Linux распространяются вместе с man-страницами (от англ. «manual») — документация, которая объясняет, что делает команда, приводит примеры ее использования и сообщает какие параметры и опции она поддерживает.
Команда man применяется для отображения страницы руководства по заданной команде:
Например, чтобы открыть главную страницу справки по команде cd , вы должны ввести:
Для навигации по справочным страницам используйте клавиши со стрелочками вверх и вниз. Также вы можете нажать:
клавишу Enter для перемещения на одну строку за раз;
клавишу (Пробел) для перехода к следующему экрану;
клавишу b для возврата на один экран назад;
клавишу q для выхода из справочной страницы.
Команда history
Если вы используете Linux в течение определенного периода времени, вы быстро заметите, что можете выполнять десятки (если не сотни) команд каждый день. Таким образом, запуск команды history особенно полезен, если вы хотите просмотреть ранее введенные команды:
Команда whereis
Команда whereis отображает полный путь к исполняемому файлу программы (или к исходным файлам, если они присутствуют в системе). Например:
gcc: /usr/bin/gcc /usr/lib/gcc /usr/share/gcc
Дополнительно
Команда clear используется для очистки терминала, если он загроможден слишком большим количеством данных от прошлых команд
Нажатие на клавишу TAB (табуляция) приведет к автоматическому дополнению того, что вы в данный момент набираете в терминале. Например, если вам нужно перейти в папку Documents, то начните вводить команду cd Docu , а затем нажмите на клавишу TAB и терминал автоматически дополнит команду до cd Documents .
Сочетания клавиш:
Ctrl+C — останавливает и завершает команду;
Ctrl+Z — ставит выполнение команды на паузу;
Ctrl+S — временно приостанавливает вывод информации в терминал;
Ctrl+Q — продолжает вывод информации в терминал;
Ctrl+A — перемещает вас в начало строки;
Ctrl+E — перемещает вас в конец строки.
Вы можете запускать несколько команд в одной строке, отделяя их с помощью символа ; , например:
$ команда1; команда2; команда3
Если вместо ; использовать && , то следующая команда выполнится только после успешного выполнения предыдущей.
Основные linux-команды для новичка
Linux — это операционная система. Как винда (windows), только более защищенная. В винде легко подхватить вирус, в линуксе это практически невозможно. А еще линукс бесплатный, и ты сам себе хозяин: никаких тебе неотключаемых автообновлений системы!
Правда, разобраться в нем немного посложнее… Потому что большинство операций выполняется в командной строке. И если вы видите в вакансии «знание linux» — от вас ожидают как раз умение выполнять простейшие операции — перейти в другую директорию, скопировать файл, создать папочку… В этой статье я расскажу про типовые операции, которые стоит уметь делать новичку. Ну и плюс пара полезняшек для тестировщиков.
Я дам кратенькое описание основных команд с примерами (примеры я все проверяла на cent os, red hat based системе) + ссылки на статьи, где можно почитать подробнее. Если же хочется копнуть еще глубже, то см раздел «Книги и видео по теме». А еще комментарии к статье, там много полезного написали)
Содержание
Где я? Как понять, где находишься
Очень полезная команда, когда у вас нет ничего, кроме командной строки под рукой. Расшифровывается как Print Working Directory. Запомните ее, пригодится.
Как понять, что находится в папке
Команда ls позволяет просмотреть содержимое каталога:
Хотя лучше использовать команду сразу с флагом «l»:
Такая команда выведет более читабельный список, где можно будет сразу увидеть дату создания файла, его размер, автора и выданные файлу права.
У команды есть и другие флаги, но чаще всего вы будете использовать именно «ls – l».
См также:
Команда ls Linux — подробнее о команде и всех ее флагах
Команда ls – просмотр каталога — о команде для новичков (без перечисления всех флагов)
Как перейти в другую директорию
С помощью команды cd:
Путь может быть абсолютным или относительным.
По абсолютному пути
Либо у вас где-то записан путь, «куда идти», либо вы подсмотрели его в графическом интерфейсе (например, в WinSCP).
Вставляем путь в командную строку после «cd»
Ну вот, мы переместились из домашней директории (обозначается как
) в /home/student/log.
По относительному пути
Относительный путь — относительно вашей текущей директории, где вы сейчас находитесь. Если я уже нахожусь в /home/student, а мне надо в /home/student/log, команда будет такой:
Если мне надо из /home/student/photo в /home/student/photo/city/msk/2017/cat_1, команда будет такой:
Я не пишу /home/student/photo, так как я уже там.
В линуксе можно задавать путь относительно домашней папки текущего пользователя. Домашняя директория обозначается
/. Дальше вы уже можете указывать подпапки:
Эта команда будет работать отовсюду. И переместит нас в /home/user/log.
Вот пример, где я вошла под пользователем students. Исходно была в директории /var, а попала в /home/students/log:
С автодополнением
Если вы начнете набирать название папки и нажмете Tab, система сама его подставит. Если просто нажмете Tab, ничего не вводя, система начнет перебирать возможные варианты:
— (cd tab) Может, ты имел в виду папку 1?
— (tab) Нет? Может, папку 2?
— (tab) Снова нет? Может, папку 3?
— (tab) Снова нет? Может, файл 1 (она перебирает имена всех файлов и директорий, которые есть в той, где вы сейчас находитесь)?
— (tab) У меня кончились варианты, поехали сначала. Папка 1?
cd lon(Tab) → cd long-long-long-long-name-folder — начали вводить название папки и система сама подставила имя (из тех, что есть в директории, где мы находимся).
cd (Tab)(Tab)(Tab) — система перебирает все файлы / папки в текущей директории.
Это очень удобно, когда перемещаешься в командной строке. Не надо вспоминать точное название папки, но можно вспомнить первую букву-две, это сократит количество вариантов.
Подняться наверх
Подняться на уровень выше:
Если нужно поднять на два уровня выше, то
И так до бесконечности =) Можно использовать файл, лежащий на уровне выше или просто сменить директорию.
Обратите внимание, что команда для линукса отличается от команды для винды — слеш другой. В винде это «cd ..\..», а в линуксе именно «cd ../..».
Как создать директорию
Используйте команду mkdir:
Можно и в другом месте создать папку:
Когда это нужно? Например, если вам надо сделать бекап логов. Создаете папку и сохраняете туда нужные логи. Или если вы читаете инструкцию по установке ПО и видите там «создать папку». Через командную строку это делается именно так.
Как создать файл
Командой touch:
Такая команда создаст пустой файл с названием «app.log». А потом уже можно открыть файл в редакторе и редактировать.
Как отредактировать файл
Вот честное слово, лучше делать это через графический интерфейс!
Но если такой возможности нет, чтож… Если использовать программы, которые есть везде, то у вас два варианта:
- nano — более простая программа, рассчитана на новичков
- vim — более сложная, но позволяет сделать кучу всего
Для перемещения по файлу используйте кнопки со стрелками. После того, как закончите редактировать файл, нажмите:
- Ctrl+O — чтобы сохранить
- Ctrl+X — для выхода
А вот с vim с этим сложнее. В него легко зайти:
Войти вошли, а как выйти то, аааа? Тут начинается легкая паника, потому что ни одна из стандартных комбинаций не срабатывает: Esc, ctrl + x, ctrl + q… Если под рукой есть второй ноутбук или хотя бы телефон / планшет с интернетом, можно прогуглить «как выйти из vim», а если у вас только одно окно с терминалом, которое вы заблокировали редактором?
Делюсь секретом, для выхода надо набрать:
- :q — закрыть редактор
- :q! — закрыть редактор без сохранения (если что-то меняли, то просто «:q» не проканает)
Исходно, когда мы открываем файл через vim, то видим его содержимое, а внизу информацию о файле:
Когда нажимаем двоеточие, оно печатается внизу:
Если не печатается, не паникуем! Тогда попробуйте нажать Esc (вернуться в нормальный режим), потом Enter (подтвердить команду), а потом снова печатайте. Фух, помогло, мы вышли оттуда.
На самом деле сейчас всё не так страшно. Даже если вас заслали работать в банк, где нет доступа в интернет, а вы вошли в vi и не знаете как выйти, всегда можно погулить выход с телефона. Слава мобильному интернету! Ну а если вы знаете логин-пароль от сервера, то можно просто закрыть терминал и открыть его снова.
Если нужно выйти, сохранив изменения, используйте команду
Ну а про возможности редактирования см статьи ниже =)
См также:
Как редактировать файлы в Ubuntu — подробнее о разных способах
Как пользоваться текстовым редактором vim — подробнее о vim и всех его опциях
Как выйти из редактора Vi или Vim? — зачем нажимать Esc
Как перенести / скопировать файл
Допустим, у нас в директории /opt/app/log находится app.log, который мы хотим сохранить в другом месте. Как перенести лог в нужное место, если нет графического интерфейса, только командная строка?
Скопировать файл
Если мы находимся в директории /opt/app/log:
В данном примере мы использовали относительный путь для «что копировать» — мы уже находимся рядом с логом, поэтому просто берем его. А для «куда копировать» используем абсолютный путь — копируем в /home/olga.
Можно сразу переименовать файл:
В этом случае мы взяли app.log и поместили его в папку /home/olga, переименовав при этом в app_test_2020_03_08.log. А то мало ли, сколько логов у вас в этом папке уже лежит, чтобы различать их, можно давать файлу более говорящее имя.
Если в «куда копировать» файл с таким именем уже есть, система не будет ничего спрашивать, просто перезапишет его. Для примера положим в папку log внутри домашней директории файл «app.log», который там уже есть:
Никаких ошибок, система просто выполнила команду.
Скопировать директорию
Команда остается та же, «cp», только используется ключ R — «копировать папку рекурсивно»:
Так в директории /home/olga появится папка «log».
Переместить файл
Если надо переместить файл, а не скопировать его, то вместо cp (copy) используем mv (move).
Можно использовать относительные и абсолютные пути:
Можно сразу переименовать файл:
Переместить директорию
Аналогично перемещению файла, команда mv
Как удалить файл
С помощью команды rm (remove):
Если нужно удалить все файлы в текущей директории (скажем, вычищаем старые логи перед переустановкой приложения), используйте «*»:
Если нужно удалить папку, надо добавить флаг -r (recursive):
Если вы пытаетесь удалить файлы, которые уже используются в программе или доступны только для чтения, система будет переспрашивать:
А теперь представьте, что вы чистите много файлов. И на каждый система переспрашивает, и надо постоянно отвечать «да, да, да. » (y – enter, y – enter, y – enter)… Чтобы удалить все без вопросов, используйте флаг -f (force):
Но учтите, что это довольно опасная команда! Вот так надоест подстверждать удаление и введешь «-rf», а директорию неправильно укажешь… Ну и все, прости-прощай нужные файлы. Аккуратнее с этой командой, особенно если у вас есть root-полномочия!
Опция -v показывает имена удаляемых файлов:
Тут вы хотя бы можете осознать, что натворили )))
Как изменить владельца файла
Если у вас есть root-доступ, то вы наверняка будете выполнять все действия под ним. Ну или многие… И тогда любой созданный файл, любая папка будут принадлежать root-пользователю.
Это плохо, потому что никто другой с ними работать уже не сможет. Но можно создать файл под root-ом, а потом изменить его владельца с помощью команды chown.
Допустим, что я поднимаю сервис testbase. И он должен иметь доступ к директории user и файлу test.txt в другой директории. Так как никому другому эти файлики не нужны, а создала я их под рутом, то просто меняю владельца:
В итоге был владелец root, а стал testbase. То, что надо!
Как установить приложение
Если вы привыкли к винде, то для вас установка приложения — это скачать некий setup файлик, запустить и до упора тыкать «далее-далее-далее». В линуксе все немного по-другому. Тут приложения ставятся как пакеты. И для каждой системы есть свой менеджер пакетов:
- yum — red hat, centos
- dpkg, apt — debian
Давайте посмотрим на примере, как это работает. В командной строке очень удобно работать с Midnight Commander (mc) — это как FAR на windows. К сожалению, программа далеко не всегда есть в «чистом» дистрибутиве.
И вот вы подняли виртуалку на centos 7, хотите вызвать Midnight Commander, но облом-с.
Ничего страшного, установите это приложение через yum:
Он там будет что-то делать, качать, а потом уточнит, согласны ли вы поставить программу с учетом ее размеров. Если да, печатаем «y»:
И система заканчивает установку.
Вот и все! Никаких тебе унылых «далее-далее-далее», сказал «установи», программа установилась! Теперь, если напечатать «mc» в командной строке, запустится Midnight Commander:
Как запустить приложение
Некоторые приложения запускаются через скрипты. Например, чтобы запустить сервер приложения WildFly, нужно перейти в папку bin и запустить там standalone.sh. Файл с расширением .sh — это скрипт.
Чтобы запустить скрипт, нужно указать полный путь к нему:
Это важно! Даже если вы находитесь в той папке, где и скрипт, он не будет найден, если просто указать название sh-скрипта. Надо написать так:
Поиск идет только в каталогах, записанных в переменную PATH. Так что если скрипт используется часто, добавляйте путь туда и вызывайте просто по названию:
См также:
Запуск скрипта sh в Linux — подробнее о скриптах
Если же приложение запускается как сервис, то все еще проще:
Чтобы сервис test запускался автоматически при рестарте системы, используйте команду:
Она добавит службу в автозапуск.
Как понять, где установлено приложение
Вот, например, для интеграции Jenkins и newman в Jenkins надо прописать полный путь к ньюману в параметре PATH. Но как это сделать, если newman ставился автоматически через команду install? И вы уже забыли, какой путь установки он вывел? Или вообще не вы ставили?
Чтобы узнать, куда приложение установилось, используйте whereis (без пробела):
Как создать архив
Стандартная утилита, которая будет работать даже на «голой» системе — tar. Правда, для ее использования надо запомнить флаги. Для создания архива стандартная комбинация cvzf:
В данном примере мы упаковали директорию /home/test, внутри которой было две картинки — 502.jpg и 504.jpg.
Для распаковки меняем флаг «c» на «x» и убираем «z»:
Хотя система пишет, что распаковала «/home/test», на самом деле папка «test» появляется там, где мы сейчас находимся.
Давайте разберемся, что все эти флаги означают:
- c — создать архив в linux
- x — извлечь файлы из архива
- v — показать подробную информацию о процессе работы (без него мы бы не увидели, какие файлики запаковались / распаковались)
- f — файл для записи архива
- z — сжатие
Если очень хочется использовать rar, то придется изгаляться. Через yum установка не прокатит:
Говорит, нет такого пакета:
Придется выполнить целую пачку команд! Сначала скачиваем, разархивируем и компилируем:
Как посмотреть использованные ранее команды
Вот, допустим, вы выполняли какие-то сложные действия. Или даже не вы, а разработчик или админ! У вас что-то сломалось, пришел коллега, вжух-вжух ручками, magic — работает. А что он делал? Интересно же!
Или, может, вы писали длинную команду, а теперь ее надо повторить. Снова набирать ручками? Неохота! Тем более что есть помощники:
Если надо «отмотать» недалеко, проще через стрелочку пролистать команды. Один раз нажали — система показала последнюю команду. Еще раз нажали — предпоследнюю. И так до 1000 раз (потому что именно столько хранится в истории).
Большой бонус в том, что линукс хранит историю даже при перезапуске консоли. Это вам не как в винде — скопировал текст, скопировал другой, а первый уже потерялся. А при перезагрузке системы вообще все потерялось.
Если тыкать в стрелочку не хочется, или команды была давно, можно напечатать «history» и внимательно изучить команды.
См также:
История команд Linux — больше о возможностях history
Как посмотреть свободное место
Сколько места свободно на дисках
Сколько весит директория
Как узнать IP компьютера
Если у вас настроены DNS-имена, вы подключаетесь к linux-машине именно по ним. Ведь так проще запомнить — это testbase, это bugred… Но иногда нужен именно IP. Например, если подключение по DNS работает только внутри рабочей сети, а коллега хочет подключиться из дома, вот и уточняет айпишник.
Чтобы узнать IP машины, используйте команду:
Также можно использовать ifconfig:
Как узнать версию OS
Сидите вы у Заказчика на линуксовой машине. Пытаетесь что-то установить — не работает. Лезете гуглить, а способы установки разные для разных операционных систем. Но как понять, какая установлена на данной машине?
На этой виртуалке стоит CentOs 7.
Если нужна версия ядра:
Как узнать, как работает команда
Если вы не знаете, как работает команда, всегда можно спросить о ней саму систему, используя встроенную команду man:
Закрыть мануал можно с помощью клавиши q. Для того, кто первый раз в линуксовой консоли, это совсем не очевидно, а подсказки есть не везде.
Команда удобна тем, что не надо даже уходить из командной строки, сразу получаешь всю информацию. К тому же это всегда актуальная информация. А что вы там нагуглите — неизвестно =))
Хотя лично мне проще какую-то команду прогуглить, ведь так я получу русское описание + сначала самые главные флаги (а их может быть много). Но я сама новичок в линуксе, это подход новичка. А лучше сразу учиться прокачивать навык поиска по man-у. Он вам очень пригодится для более сложных задач!
Если man у программы нет, используйте флаг -h (—help):
Как создать много тестовых папок и файлов
Допустим, у нас есть некая папка test. Создадим в ней сотню директорий и кучу файликов в каждой:
Вот и все, дальше можно играться с ними!
- mkdir — создать директорию
- touch — создать файл (или изменить существующий, но если файла с таким именем нет, то команда создаст новый, пустой)
- <000..100>— пробежится по всем числам от 0 до 100
— пробежится по всем буквам английского алфавита от A до Z
Символ $ при описании команд означает начало строки, куда мы пишем команду. Так мы отделяем то, что ввели сами (pwd) от ответа системы (/home/test).
Ага, в домашней директории. Создам себе песочницу:
Вот в ней и буду творить!
А потом можно проверить, что получилось:
Как-то так! Имхо, полезные команды.
Я нашла их в книге «Командная строка Linux. Полное руководство», они используются для того, чтобы создать песочницу для прощупывания команды find. Я, как и автор, восхищаюсь мощью командной строки в данном случае. Всего 2 строчки, а сколько боли бы принесло сделать похожую структуру через графический интерфейс!
И, главное, тестировщику полезно — может пригодиться для тестов.
Как протестировать IOPS на Linux
Это очень полезно делать, если машину вам дает заказчик. Там точно SSD-диски? И они дают хороший iops? Если вы разрабатываете серверное приложение, и от вас требуют выдерживать нагрузку, нужно быть уверенными в том, что диски вам выдали по ТЗ.
Наше приложение активно использует диск. Поэтому, если заказчик хочет видеть хорошие результаты по нагрузке, мы хотим видеть хорошие результаты по производительности самих дисков.
Но верить админам другой стороны на слово нельзя. Если приложение работает медленно, они, разумеется, будут говорить, что у них то все хорошо, это «они» виноваты. Поэтому надо тестировать диски самим.
Я расскажу о том, как мы тестировали диски. Как проверили, сколько IOPS они выдают.
1) Скачиваем последнюю версию, распаковываем, переходим в каталог. В командах ниже нужно заменить «fio-3.19» на актуальную версию из списка
2) Должны стоять пакеты для сборки
Какие должны быть результаты:
- Средний SSD, выпущенный 2-3 года назад — 50 тысяч IOPS.
- Свежий Samsung 960 Pro, который стоит на одной из железок у нас в офисе — 350 тысяч IOPS.
Если должно быть 50 тысяч, а диск выдает сильно меньше, то:
— он не SSD;
— есть сетевые задержки;
— неправильно примонтирован;
— с ними что-то еще плохое случилось и стоит поднять алярм.
И это все?
Еще полезно изучить команду find и регулярные выражения. Тестировщику как минимум надо уметь «грепать логи» — использовать grep. Но это уже остается на самостоятельный гуглеж.
База, которая всегда нужна — pwd, cp, mv, mkdir, touch. Остальное можно легко гуглить, как только возникает необходимость.
Вот вам еще пара ссылочек от меня:
-
— а то вроде про «>» знаешь еще по винде, а что значит «>>»? Вот в статье и ответ! — очень полезная штука, если у вас есть доступы на продакшен. Обезопасьте себя )))
Книги и видео по теме
Где тренироваться
Можно поднять виртуалку. Правда, тут сначала придется разбираться, как поднимать виртуалку )))
А можно купить облачную машину. Когда мне надо было поиграться с линуксом, я пошла на SimpleCloud (он мне в гугле одним из первых выпал и у него дружелюбный интерфейс. Но можно выбрать любой аналог) и купила самую дешманскую машину — за 150 руб в месяц. Месяца вам за глаза, чтобы «пощупать-потыркать», и этой машины с минимумом памяти тоже.
У меня был когда-то план самой платить эти 150р за то, чтобы дать машину в общий доступ. Но увы. Как я не пыталась ее огородить (закрывала команды типа ssh, ping и прочая), у меня не получилось. Всегда есть люди, которых хлебом не корми, дай испортить чужое. Выложил в общий доступ пароли? На тебе ддос-атаку с твоего сервера. Ну и сервер блокируют. После N-ой блокировки я плюнула на это дело. Кто хочет научиться, найдет 150р.
Команды Linux для работы с файлами
Чтобы быть профессионалом в использовании терминала Linux, нужно научится управлять файлами через терминал. Это чуть ли не основа всего, включая редактирование конфигурационных файлов, сборку программ, администрирование и множество других вещей. Просмотр содержимого папок, переход между папками, создание и удаление файлов — это необходимая база, для удобной работы в терминале.
В этой статье мы рассмотрим самые часто используемые команды Linux для работы с файлами и каталогами, после их освоения терминал больше не будет казаться таким непонятным и объемлемым. Вот какие команды будут нас сегодня интересовать:
- ls — список файлов в директории;
- cd — переход между директориями;
- rm — удалить файл;
- rmdir — удалить папку;
- mv — переместить файл;
- cp — скопировать файл;
- mkdir — создать папку;
- ln — создать ссылку;
- chmod — изменить права файла;
- touch — создать пустой файл.
А теперь перейдем к подробному рассмотрению всех этих команд.
1. ls — просмотр содержимого папки
Команда ls позволяет вывести список файлов заданной папки, по умолчанию, будет выведен список файлов текущей папки:
Вы можете вывести список файлов из всех подкаталогов рекурсивно, для этого используйте опцию -R:
Чтобы вывести список файлов нужной папки, вы можете передать ее адрес утилите, например, /home:
Чтобы получить больше информации и вывести все имена файлов в виде списка используйте опцию -l:
2. cd — изменить папку
Команда cd позволяет изменить текущую папку на другую. По умолчанию, текущей считается домашняя папка, например, cd Desktop меняет папку на рабочий стол, если вы выполните ее из домашнего каталога:
Вы также можете указать полный путь к папке:
Команда cd .. переходит в папку, которая находится выше на одну в файловой системе:
Вы также можете вернуться в предыдущую рабочую папку:
3. rm — удалить файлы
Команда rm позволяет удалить файл. Будьте очень осторожны с ней, она не будет спрашивать подтверждения:
Например, rm file удалит файл с именем file, который находится в текущей папке. Как и в предыдущих вариантах, вы можете указать полный путь к файлу linux. Например:
Если вы хотите удалить папку, то нужно использовать опцию -r. Она включает рекурсивное удаление всех файлов и папок на всех уровнях вложенности:
rm -r /home/user/photo/
Будьте осторожны, потому что эта команда удаляет файлы безвозвратно.
4. rmdir — удалить папку
Команда rmdir позволяет удалить пустую папку. Например, команда rmdir directory удалит папку directory, которая находится в текущей папке:
Если вам нужно удалить папку с файлами, то нужно использовать утилиту rm вместе с опцией -r.
5. mv — перемещение файлов
Команда mv перемещает файл в новое место. Она также может использоваться для переименования файлов. Например, mv file newfile переименует файл file в newfile:
mv file newfile
Чтобы переместить файл в другую папку нужно указать путь к ней, например, переместим файл file в папку /home/user/tmp/
mv file /home/user/tmp/
6. cp — копирование файлов
Эта cp и mv — это похожие команды linux для работы с файлами. Они работают аналогичным образом, только исходный файл остается на своем месте.
cp file newfile
Вы также можете рекурсивно скопировать всю папку с помощью команды cp -r. Эта команда скопирует всю папку вместе со всеми файлами и вложенными папками в новое место. Например, скопируем папку /etc/:
cp -r /etc /etc_back
7. mkdir — создать папку
Команда mkdir позволяет создать новую папку mkdir test создаст папку в текущем каталоге:
Если нужно создать папку в другом каталоге, укажите полный путь к нему:
8. ln — создание ссылок
Утилита ln позволяет создавать жесткие и символические ссылки на файлы или папки. Для создания символической ссылки используется опция -s. Например, вы создадим ссылку на папку с загрузками:
ln -s /home/user/Downloads/ /home/user/test/
Для создания жесткой ссылки никаких опций задавать не нужно:
ln /home/user/Downloads/ /home/user/test/
9. chmod — изменить права
chmod позволяет изменить права доступа к файлам. Например, chmod +x script.sh добавляет флаг исполняемости к файлу script.sh:
chmod +x script.sh
Чтобы убрать флаг исполняемый используйте опцию -x:
chmod -x script.sh
Подробнее о том, как работают разрешения для файлов смотрите в статье права доступа к файлам в Linux.
10. touch — создать файл
Команда touch создает пустой файл. Например, touch file создаст пустой файл в текущей папке с именем file:
Для создания файлов через терминал существует еще несколько команд, они рассмотрены в статье как создать файл в linux.
11. mc
Работа с файлами Linux через терминал может выполняться не только с помощью обычных консольных команд, каждая из которых выполняет только определенное действие. Вы можете использовать полнофункциональный файловый менеджер с псевдографическим интерфейсом на основе ncurses. Midnight Commander — это файловый менеджер, который можно использовать прямо в терминале. Для установки mc в Ubuntu выполните:
sudo apt install mc
После завершения установки достаточно выполнить команду mc:
Используйте клавиши со стрелками для перемещения по файлах, Tab для перехода на другую панель, Alt+1 для просмотра справки и Alt+2 для вывода меню:
Если терминальное окружение поддерживает мышь, то вы можете ее использовать в Midnight Commander.
Выводы
В этой статье мы рассмотрели как выполняется работа с файлами и каталогами в linux, с помощью терминала. Когда вы освоите все эти команды, вы сможете сделать большинство основных действий в терминале. А как часто вы пользуетесь терминалом? Используете его для работы с файлами? Напишите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.