Использование командной строки является важным компонентом работы в операционной системе Linux. Некоторые задачи невозможно выполнить с помощью графического интерфейса, в то время как работа через командную строку предоставляет полный контроль над системой.
Ознакомление с командами linux становится крайне важным в повседневной работе, поскольку многие задачи эффективнее и быстрее выполнять через команды в терминале. Например, поиск файлов по содержимому, изменение файлов, их копирование и перемещение и т.д.
В условиях отсутствия графического интерфейса, терминал становится ключевым инструментом для управления сервером. Это особенно актуально в случае удаленных серверов, где графический интерфейс не устанавливается.
Цель этой статьи — ближе познакомить пользователей с основными командами, которые разработчики используют в повседневной работе.
Получение информации о команде
Для вызова различных программ или команд часто требуется использовать разнообразные флаги, которые может быть трудно запомнить. Удобно обращаться сразу в терминале к руководствам, предоставляющим подробное описание синтаксиса команды, ее опций, параметров и возможных вариантов использования. Чтобы получить доступ к информации в терминале и составить запрос, соответствующий требуемой задаче, можно использовать:
-
man — это сокращение от «manual» (руководство). Выполняйте
man, когда нужно получить руководство по различным программам и утилитам в UNIX-подобных операционных системах. Например командаman psотобразит подробное руководство по использованию командыps. В этом руководстве вы найдете информацию о синтаксисе команды, параметрах, переменных окружения и других важных аспектах работы с командной. Вы можете использоватьmanдля получения справки по практически любой команде или программе в вашей системе.
Выход из руководства: клавиша Q (в англ раскладке). -
Флаг —help является распространенным стандартом в командной строке для получения справочной информации о программе или команде. Когда вы добавляете
--helpк выполнению команды, программа обычно выводит краткую справку, объясняющую основные опции и функциональность команды.
Напримерgrep --helpвыведет информацию о том, как используется команда grep. Флаг--helpв основном дает информацию по использованию команды (флаги, переменные и т.д.) его удобнее использовать как подсказку, тогда какmanвыдает полную информацию о программе.
Работа с процессами:
-
ps — используется для отображения текущих процессов.
Пример:
-
Вывод всех процессов, запущенных в системе
ps aux. -
Вывод всех процессов, запущенных в системе с фильтром по названию (достаточно составить шаблон названия)
ps aux | grep -i '*название_процесса*'мы разберем дальше.
grep
-
-
top — в операционных системах предоставляет интерактивный и динамический просмотр информации о загрузке системы и работающих процессах.
-
kill — используется для удаления процесса
Пример:
-
Удалить процесс по id (id можно посмотреть командой
ps)kill PID -
Завершение процесса по имени процесса
pkill имя_процесса
-
-
df — используется в операционных системах, предоставляет информацию о доступном месте на диске.
-
du — используется для получения размеров файлов и директорий в текущем каталоге
-
делает вывод более читаемым для человека, переводя размеры в килобайты, мегабайты, гигабайты и т.д.
du -h /путь/к/директории -
наиболее частоиспользуемые опции:
-
-sили--summarize: показывает общий размер директории. -
-cили--total: показывает общий размер нескольких директорий. -
-k,-m,-g: изменяют единицы измерения на килобайты, мегабайты и гигабайты соответственно.
-
-
На основе команды
duможно составить более сложную команду с применением других утилит для поиска наиболее тяжелых файлов в директории:-
Найти топ 5 тяжелых файлов
du -ahx . | sort -rh | head -5
-
-
Работа с файловой системой
-
ls — используется для просмотра содержимого директории. Стандартно команду используют с флагами
-lah, выведет скрытые файлы (которые начинаются с точки) и выведет больше информации о файлах (их размер, дата последнего изменения, права доступа). Командаlsимеет множество опций для настройки вывода в соответствии с вашими потребностями. Для получения более подробной информации о доступных опциях, вы можете использовать командуmanилиls --help.
Пример использования:ls -lah -
pwd — используется для вывода полного пути текущей рабочей директории. Команда
pwdполезна, когда вам нужно знать, в какой директории вы находитесь, особенно при написании скриптов или команд в терминале. -
cd — используеется для навигации в терминале по директориям, для смены текущей рабочей директории в командной строке.
Основные примеры использования:
-
Прямой путь
cd /home/user/Documents/work/project -
Относительный путь
cd Documents/work/project -
На каталог вверх
cd .. -
Перейти в домашнюю директорию
cd -
Перейти в предыдущую директорию
cd - -
Перейти в директорию начиная с домашней (чтобы не указывать полный путь)
cd ~/Documents/work/project
-
-
mkdir — используется для создания новых директорий.
Несколько примеров использования:
-
Создание новой директории в текущей
mkdir directory_name -
Создание нескольких директорий сразу
mkdir dir1 dir2 dir3 -
Создание вложенных директорий
mkdir -p path/to/nested/directory
Флаг-pпозволяет создавать вложенные директории. В данном случае, будет создана структура директорийpath/to/nested/directory, и все промежуточные директории будут созданы автоматически, если их нет. -
Создание дирректории и утановка прав доступа
mkdir -m 755 new_directory
-
-
touch — предоставляет возможность создавать файлы и редактировать временные метки файла из терминала. Чаще используется для создания нового пустого файла через командную строку. Для создания файла я обычно использую
vimесли нужно сразу записать какие-то данные в файл, если нет —vimфайл пустой не создаст. Командуvimразберем дальше.Примеры использования:
-
Создание файла
touch filename.txt
Если файлfilename.txtуже существует, командаtouchобновит его временные метки, не затрагивая содержимое файла. -
Создание нескольких файлов сразу
touch file1.txt file2.txt file3.txt -
Создание файла с использованием абсолютного пути
touch /path/to/newfile.txt
-
-
cp — команда используется для копирования файлов и директорий.
Примеры:
-
Команда
cp from.txt to.txtкопирует содержимое файлаfrom.txtв файлto.txt. Если файлto.txtне существует, эта утилита создаст его. -
Копирование файла
source_file.txtв директориюdestinationcp source_file.txt destination/ -
Копирование нескольких файлов в директорию
directorycp file1.txt file2.txt directory/ -
Копирование файла с изменением имени
cp file.txt directory/new_name.txt -
Копирование дирректории
cp -r source_directory/ destination/ -
Копирование с подтверждением (вопрос перед перезаписью)
cp -i source_file.txt destination/Флаг-iзапрашивает подтверждение, если файл с таким именем уже существует в целевой директории.
-
-
mv — команда в терминале, предназначенная для перемещения файлов и директорий.
Эту команду также часто используют для переименования файлов.
-
Перемещение файла в другую директорию
mv text.txt /path/new-dir/ -
Переименование файла
mv old-file.txt new-file.txt -
Перемещение всех файлов из одной директории в другую
mv /path/dir/* /path/new-dir/ -
Перемещение файла в текущую директорию (использование
.)mv /path/dir/file.txt . -
Перемещение нескольких файлов в директорию
mv file-1.txt file-2.txt /path/dir/ -
Интерактивное перемещение с запросом подтверждения
mv -i file.txt /path/new-dir/Флаг-iзапрашивает подтверждение, если файл с таким именем уже существует в целевой директории.
-
-
rm — для удаления файлов, для удаления каталогов с файлами внутри нужно использовать флаг
rm -rЭта команда не перемещает файлы или директории в корзину, что делает их восстановление невозможным. Поэтому будьте осторожны, используя эту магию!
-
Удаление с подтверждением
rm -i file.txt -
Удаление файлов с использованием шаблонов
rm *.txt -
Удаление нескольких файлов
rm file-1.txt file-2.txt
-
Важно!
При использовании команд cp и mv если вторым аргументом использовать существующий файл — его затрет файл из первого аргумента, его будет невозможно восстановить!
Пример:
Есть 2 файла file1.txt и file2.txt.
Вызываем команду mv file1.txt file2.txtФайл file1.txt стал file2.txt при этом данные из изначального файла file2.txt затираются, их не восстановить.
Чтобы избежать такого поведения нужно использовать флаг -i, в этом случае будет предупреждение, что выбранный файл будет записан поверх уже существующего в каталоге назначения. Будет возможность отменить это действие прописав n и нажав Еnter.
Лайфхак:
Чтобы избежать неприятных последствий, очень удобно прописать один раз в элиасах:
alias mv="mv -i" alias cp="cp -i" alias rm="rm -i"
С концепцией элиасов мы познакомимся в следующей статье.
-
find — используется для поиска файлов и директорий в файловой системе на основе различных критериев.
Интерфейс (самый простой, команду можно задавать очень гибко через флаги):
find `где искать` -name `имя файла, можно использовать паттерн`Примеры:
-
Поиск файла по имени
find ./ -name "file" -
Поиск файлов по расширению
find /abs/path/dir -name "*.js" -
Поиск файлов в директории
./dir/, измененных в течение последних 7 дней
find ./dir/ -mtime -7Можно указать максимальную глубину (если мы хотим найти только в нашей папке или ограничить несколькими уровнями вложенности)
-maxdepth 2
-
Работа с файлами
-
cat — конкатенация, часто используется для вывода содержимого файлов на экран терминала.
Примеры:
-
Вывод содержимого файла на экран
cat file.txt -
Объединение содержимого файлов
cat file-1.txt file-2.txt -
Вывод всех файлов в директории
cat * -
Вывод всех файлов в директории с расширением js (можно прописать любой паттерн)
cat *.js -
Нумерация строк при выводе файла
cat -n file-1.txt
-
-
grep — утилита, используемая для поиска текста в файлах или выводе других команд. Можно задавать регексом искомый текст.
Пример
grep -E -i '^(linux|unix)' file-name.txtфлаг-Eиспользуем для регэкс, флаг-iдля игнорирования регистра.-
Простой поиск текста в файле
grep "искомый_текст" file.txt -
Поиск текста в нескольких файлах
grep "искомый_текст" file-1.txt file-2.txt -
Рекурсивный поиск в директории
grep -r "искомый_текст" ./dir/ -
Подсветка совпадений
grep --color=auto "искомый_текст" file.txt -
Исключение строк с совпадениями
grep -v "искомый_текст" file.txt -
Найти строку подходящую под регэкс
'^(linux|unix)'в текущем каталоге (проходя по всем файлам рекурсивно) при этом в вывод попадет файл и сторкаgrep '^(linux|unix)' -insr ./grep — очень полезная утилита, особенно при работе с логами приложений на сервере.
-
-
head — используется для просмотра первых строк любого текстового файла.
Пример:
head -30 file.txtвыводит 30 первых строк файлаfile.txt -
tail — команда имеет функцию, аналогичную команде
head, но вместо отображения первых строк tail выводит последниеnстрок текстового файла.Пример:
tail -100 file.txtвыводит 100 последних строк файлаfile.txt -
diff — сравнивает содержимое двух файлов построчно. После анализа файлов будут выведены строки, которые не совпадают.
Пример:
diff file1.txt file2.txt -
vim — это текстовый редактор в UNIX-подобных системах, который предоставляет обширные возможности для редактирования текстовых файлов. Основные команды и концепции, связанные с использованием
vim:-
vim filename.txtкоманда открывает файлfilename.txtв редактореvim. -
Режимы
vim:-
Normal Mode: Режим, в котором можно перемещаться по тексту, удалять строки, копировать и вставлять текст. После запуска
vim filename.txt, вы обычно начинаете в Normal Mode. -
Insert Mode: Режим для ввода текста.
-
Visual Mode: Режим для выделения блоков текста.
-
-
Переход между режимами:
-
Для входа в режим Insert Mode, нажмите клавишу
iв Normal Mode. -
Для входа в режим Visual Mode, нажмите
vв Normal Mode. -
Для возврата в Normal Mode из режимов Insert или Visual, нажмите клавишу
Esc.
-
-
Сохранение изменений и выход:
-
В Normal Mode, введите
:wи нажмитеEnter, чтобы сохранить изменения. -
Введите
:qи нажмитеEnter, чтобы выйти изvim. -
Для сохранения и выхода одновременно введите
:wqи нажмитеEnter. -
Чтобы выйти без сохранения изменений воспользуйтесь сочитанием
:q!и нажмитеEnter. Вы выйдете изvim, отменив все изменения.
-
-
Вставка текста:
-
В Normal Mode, переместите курсор в нужное место.
-
Перейдите в режим вставки, нажав
i. -
Введите текст.
-
Вернитесь в Normal Mode, нажав
Esc.
-
-
Поиск и замена:
-
В Normal Mode, введите
/и введите текст для поиска. НажмитеEnter. -
Для замены введите
:%s/старый_текст/новый_текст/gи нажмитеEnter.
-
vimпредоставляет множество функций, и освоение всех их может занять время. Однако, овладев базовыми командами, вы сможете эффективно редактировать текстовые файлы прямо из терминала.vimиnano— это два текстовых редактора в командной строке, у них есть различия в стиле использования и функциональности, однако в базовом функционале они сходятся, в этой статье мы разобрали основной функционалvimт.к. я предпочитаю использоватьvimиз-за его расширенных возможностей. Вы можете использоватьnanoвместо него, зависит от ваших предпочтений и требований команды. -
Паттерны для поиска
Создание паттерна для команд find, grep и подобных может быть полезным для поиска и фильтрации файлов и данных, паттерн очень похож на регэкс, но с урезанным функционалом. Как составлять паттерн:
-
Использование метасимволов:
-
*Заменяет любое количество символов. -
?Заменяет один символ. -
[]Позволяют указать диапазон символов.
-
Примеры:
-
Поиск всех файлов с расширением .txt
find /путь -type f -name "*.txt" -
Поиск всех файлов, содержащих «ключевое-слово»
find /путь -name "*ключевое-слово*"
Создание эффективных паттернов зависит от конкретных задач поиска, и их можно настраивать в зависимости от вашего конкретного сценария использования.
В grep можно использовать регулярные выражения для более сложного поиска, для этого укажите флаг -E.
Заключение
Использование команд в терминале – неотъемлемая часть повседневной работы разработчика, предоставляющая мощный и эффективный инструментарий для управления файлами, процессами и системой в целом.
Многие задачи можно выполнять значительно быстрее и проще через терминал, особенно когда речь идет о работе с файлами, поиском, обновлением и управлением пакетами, работе с процессами и мониторингом.
Изучение команд терминала – это важный этап профессионального роста для разработчика, поскольку они предоставляют возможность оптимизировать рутинные операции, легко управлять процессами, мониторить ресурсы, а также иметь полный контроль над файловой системой.
Также полезно ознакомиться с важными концепциями, которые помогают эффективно и быстро работать в терминале. Среди них права доступа к файлам и директориям, использование конвейеров, управление потоками и перенаправление ввода-вывода, а также освоение функционала элиасов.
ссылка на оригинал статьи https://habr.com/ru/articles/788970/
Добавить комментарий