11 основных консольных команд *nix, которые должен знать каждый разработчик
Командная строка, во многом, делает нашу жизнь несколько проще, так как благодаря ей мы можем автоматизировать некоторые повседневные задачи и сделать работу более простой. Вместо того, чтобы щёлкать по графическому интерфейсу (GUI), мы можем быстро запустить несколько команд, которые выполнят все нужные задачи.
Unix shell - это интерпретатор командной строки или оболочка, которая предоставляет пользовательский интерфейс для работы из командной строки для Unix-подобных операционных систем. Shell является одновременно интерактивным языком команд и языком скриптов, и он используется операционной системой для управления работой системы с использованием встроенных скриптов оболочки.
Любая операционная система на базе Linux или Mac имеет командную строку, доступную по умолчанию, именуемую как "Терминал". Командная строка (CLI) позволяет нам легко создавать, перемещать, удалять, переименовывать файлы, сортировать данные и перемещаться по папкам, просматривая содержимое.
Без лишних слов, вот 11 применений командной строки, которые сделают вашу жизнь проще.
Повысьте свою продуктивность с помощью этих консольных команд
1. grep
grep "some string" file
Unix команда grep предназначена для поиска. Эта команда ищет строку в файлах по шаблону. Она также ищет шаблоны, разделенные символами перехода на новую строку, и печатает в консоли каждую строку, соответствующую этому шаблону.
Например, выполним команду grep, чтобы найти в файле все совпадения со строкой
json
Опция -i
позволяет нам искать строку в данном файле без учета регистра. Он соответствует словам типа "JSON", "JsoN" и "Json".
Мы так же можем получить количество строк, которое соответствует данной строке/шаблону указав флаг -c
(count).
grep -c "json" index.js
Эта команда подсчитывает, сколько раз в файле было найдено совпадение со строкой
json
Вот, кстати, забавный и интересный комикс посвящённый команде grep
, который я нашел в интернете (на английском).
Кроме того, есть вариант вызова программ egrep
и fgrep
что тождественно вызову grep -E
и grep -F
соответственно. Эти варианты устарели, но предусмотрены для сохранения обратной совместимости.
Можете детальнее познакомиться с grep
на странице документации.
2. ls
ls
Unix команда ls
выводит список файлов и каталогов по текущему активному пути. Если путь представляет собой файл, ls
отображает информацию о файле в соответствии с указанными параметрами. Если путь является папкой, ls
отображает информацию о файлах и подпапках в нём.
Используя команду
ls
, выводим список всей файлов и папок в текущей директории
Возможно, вы заметили, что файлы на скриншоте отображаются серым цветом, а папки - голубоватыми. Это здорово помогает отличать папки от файлов при просмотре из консоли.
3. pwd
pwd
Выводи полный путь к текущей активной директории
Команда pwd
- это утилита командной строки для печати текущего рабочего каталога. Вывод выведет полный системный путь текущего рабочего каталога в консоль. По умолчанию команда pwd
игнорирует символические ссылки, хотя полный физический путь к текущему каталогу может быть показан с опцией.
4. cat
cat <filename>
Отображает содержимое указанного файла
Unix команда cat
имеет три функциональные способности в контексте текстового файла:
- Отображение содержимого файла
- Объединение копий
- Создание новых файлов
Самым распространенным случаем использования cat
является чтение содержимого файлов, и, к слову, cat
часто является наиболее удобной программой для подобных целей.
В следующем примере стандартный вывод cat
перенаправляется с помощью оператора перенаправления вывода (который представлен угловой скобкой, направленной вправо >
) в файл somefile2
:
cat somefile > somefile2
Создание и копирование содержимого файлов с помощью
cat
5. echo
echo "some text"
Команда echo
в Linux используется для отображения строки текста/строки, переданной в качестве аргумента. Команда echo
является встроенной, она, в основном используется в shell-скриптах и пакетных файлах для вывода текста состояния на экран или в файл.
Вы можете передавать этой функции как заданный текст, так и результат из переменной.
6. touch
touch <filename>
Команда touch
используется для создания файла без какого-либо содержимого. Команда touch
может использоваться, когда у пользователя на момент создания файла ещё нет данных о его содержимом.
Создание нового файла с помощью функции touch
Обратите внимание, на изображении выше мы использовали команду touch
для создания файла, а cat
- для его просмотра. Поскольку только созданный файл test.txt
пуст, команда cat
ничего не возвращает.
Есть несколько ключевых различий между cat
и touch
:
cat
- используется для создания файла с содержимым.touch
- создаёт пустой файл, без содержимого. Помните, что файл, созданный с помощьюtouct
- пуст. Эта команда полезна, когда у пользователя нет данных содержимого файла во время его создания.
7 mkdir
mkdir <directory name>
Как вы уже догадались, команда mkdir
создаёт новую папку по текущему активному пути. Вместо того, чтобы создавать новую папку через редактор или в графическом интерфейсе, используйте эту команду.
Создание новой папки командой mkdir
Обратите внимание, что мы можем просмотреть содержимое каталога с помощью предыдущей команды ls.
7.1 rm
rm <directory name>
Команда rm
выполняет удаление папки или файла.
Удаление файла/папки командой
rm
По умолчанию команда rm
не удаляет папки. Для того, чтобы удалить папку командой rm
нужно указать дополнительно флаг -rf
.
rm -rf <directory name>
Запомните, что для удаления папки нужно передавать дополнительный флаг
Эта команда удаляет каталог безвозвратно, независимо от того, содержит ли каталог внутри файлы/папки, или нет.
7.2 rmdir
rmdir <directory name>
Команда rmdir
удаляет именно папку, если в неё нет никакого содержимого.
Удаление пустой папки командой rmdir
8. tail
tail <file name>
Команда tail
читает файл и выводит его последнюю, завершающую часть ("хвост").
Выводим последние строчки содержимого файла
Команда tail
полезна при просмотре отчетов о сбоях или длинных журналов логов. Вот пример его полезности при работе с файловыми логами:
# tail /var/log/messages
Mar 20 12:42:22 hameda1d1c dhclient[4334]: DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x280436dd)
Mar 20 12:42:24 hameda1d1c avahi-daemon[2027]: Registering new address record for fe80::4639:c4ff:fe53:4908 on eth0.*.
Mar 20 12:42:28 hameda1d1c dhclient[4334]: DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x280436dd)
Mar 20 12:42:28 hameda1d1c dhclient[4334]: DHCPACK from 10.76.198.1 (xid=0x280436dd)
Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: Joining mDNS multicast group on interface eth0.IPv4 with address 10.76.199.87.
Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: New relevant interface eth0.IPv4 for mDNS.
Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: Registering new address record for 10.76.199.87 on eth0.IPv4.
Mar 20 12:42:30 hameda1d1c NET[4385]: /sbin/dhclient-script : updated /etc/resolv.conf
Mar 20 12:42:30 hameda1d1c dhclient[4334]: bound to 10.76.199.87 -- renewal in 74685 seconds.
Mar 20 12:45:39 hameda1d1c kernel: usb 3-7: USB disconnect, device number 2
9. wget
wget <some url>
GNU Wget - это бесплатное программное обеспечение для получения файлов по HTTP, HTTPS, FTP и FTPS - наиболее широко используемых интернет-протоколов. Это неинтерактивный инструмент командной строки, поэтому его легко вызывать из скриптов, CRON-задач, терминала без поддержки X-Windows и т.д.
Мы ещё раньше разбирали работу с этой программой, рассматривая основные опции и возможность парсинга и сохранения сайтов с её помощью.
Сохраняем главную страницу всеми нами любимого сайта
GNU Wget обладает множеством функций, облегчающих получение больших файлов или выкачивание всего веб-сайта или FTP-сайта. Wget обладает такими преимуществами, в том числе:
- Может возобновить прерванные загрузки, используя REST и RANGE
- Может использовать шаблоны имени файла и рекурсивно скачивать каталоги, воссоздавая зеркальную структуру папок на локальной машине
- Опционально преобразует абсолютные ссылки скачиваемых документов в относительные, чтобы загруженные документы могли ссылаться друг на друга и корректно отображаться локально
- Кроссплатформенность: работает в большинстве UNIX-подобных операционных систем, а также в Microsoft Windows
- Поддерживает HTTP прокси
- Поддерживает HTTP куки
- Поддерживает постоянное HTTP-соединение
- Автоматическая / фоновая работа
- Использует локальные временные метки файлов, для определения необходимости повторной загрузки документа при выкачивании в зеркальной структуре.
В одной из прошлыъ статей мы ужа рассматривали работу с Wget, и его пользу при парсинге сайтов. Советую ознакомиться с этой статьей подробнее по ссылке.
10. find
find path -name <filename>
Команда find
позволяет быстро найти файл или папку. Это полезно, когда вы работаете над большим проектом с сотнями файлов и папок.
Поиск файла с названием CallbackApiService.php
Поиск файлов определенного типа
Команда find
также позволяет вам искать файлы в каталоге (и его подкаталогах) конкретного типа. Например, следующая команда будет искать все файлы с расширением .js
в вашем текущем рабочем каталоге.
find . -name "*.js"
Поиск всех файлов с расширением
.js
в директории
11. mv
mv <filename> </to/some/other/path>
Команда mv
перемещает файлы или каталоги из одного места в другое. Команда mv
поддерживает перемещение отдельных файлов, или, одновременно, нескольких файлов и каталогов.
Перемещаем файл в другую папку
Резюме
Спасибо за чтение этой статьи, надеюсь, вы узнали что-то новое. Оставайтесь голодными и жадными к новым знаниям! В этой статье я рассмотрел основные unix команды терминала, которые каждый день используются при разработке, или деплое на сервер.
Я создал для вас небольшой справочник команд unix, которые обязан знать каждый разработчик, администратор, или обычный пользователь *unix-овых систем. Этот справочник покрывает все аспекты реального пользования операционной системой, и содержит: unix команды для копирования, создания, удаления и фильтра файлов.