/ Ubuntu

11 основных консольных команд *nix, которые должен знать каждый разработчик

Командная строка, во многом, делает нашу жизнь несколько проще, так как благодаря ей мы можем автоматизировать некоторые повседневные задачи и сделать работу более простой. Вместо того, чтобы щёлкать по графическому интерфейсу (GUI), мы можем быстро запустить несколько команд, которые выполнят все нужные задачи.

Unix shell - это интерпретатор командной строки или оболочка, которая предоставляет пользовательский интерфейс для работы из командной строки для Unix-подобных операционных систем. Shell является одновременно интерактивным языком команд и языком скриптов, и он используется операционной системой для управления работой системы с использованием встроенных скриптов оболочки.

Любая операционная система на базе Linux или Mac имеет командную строку, доступную по умолчанию, именуемую как "Терминал". Командная строка (CLI) позволяет нам легко создавать, перемещать, удалять, переименовывать файлы, сортировать данные и перемещаться по папкам, просматривая содержимое.

Без лишних слов, вот 11 применений командной строки, которые сделают вашу жизнь проще.

Повысьте свою продуктивность с помощью этих консольных команд

1. grep


grep "some string" file

Unix команда grep предназначена для поиска. Эта команда ищет строку в файлах по шаблону. Она также ищет шаблоны, разделенные символами перехода на новую строку, и печатает в консоли каждую строку, соответствующую этому шаблону.

grep

Например, выполним команду grep, чтобы найти в файле все совпадения со строкой json

Опция -i позволяет нам искать строку в данном файле без учета регистра. Он соответствует словам типа "JSON", "JsoN" и "Json".

Мы так же можем получить количество строк, которое соответствует данной строке/шаблону указав флаг -c (count).

grep -c "json" index.js

grep_c

Эта команда подсчитывает, сколько раз в файле было найдено совпадение со строкой json

Вот, кстати, забавный и интересный комикс посвящённый команде grep, который я нашел в интернете (на английском).

grem-meme

Кроме того, есть вариант вызова программ egrep и fgrep что тождественно вызову grep -E и grep -F соответственно. Эти варианты устарели, но предусмотрены для сохранения обратной совместимости.

Можете детальнее познакомиться с grep на странице документации.

2. ls


ls

Unix команда ls выводит список файлов и каталогов по текущему активному пути. Если путь представляет собой файл, ls отображает информацию о файле в соответствии с указанными параметрами. Если путь является папкой, ls отображает информацию о файлах и подпапках в нём.

ls

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

Возможно, вы заметили, что файлы на скриншоте отображаются серым цветом, а папки - голубоватыми. Это здорово помогает отличать папки от файлов при просмотре из консоли.

3. pwd


pwd

pwd

Выводи полный путь к текущей активной директории

Команда pwd - это утилита командной строки для печати текущего рабочего каталога. Вывод выведет полный системный путь текущего рабочего каталога в консоль. По умолчанию команда pwd игнорирует символические ссылки, хотя полный физический путь к текущему каталогу может быть показан с опцией.

4. cat


cat <filename>

cat

Отображает содержимое указанного файла

Unix команда cat имеет три функциональные способности в контексте текстового файла:

  • Отображение содержимого файла
  • Объединение копий
  • Создание новых файлов

Самым распространенным случаем использования cat является чтение содержимого файлов, и, к слову, cat часто является наиболее удобной программой для подобных целей.

В следующем примере стандартный вывод cat перенаправляется с помощью оператора перенаправления вывода (который представлен угловой скобкой, направленной вправо >) в файл somefile2:

cat somefile > somefile2

cat_2

Создание и копирование содержимого файлов с помощью cat

5. echo


echo "some text"

Команда echo в Linux используется для отображения строки текста/строки, переданной в качестве аргумента. Команда echo является встроенной, она, в основном используется в shell-скриптах и пакетных файлах для вывода текста состояния на экран или в файл.

echo

Вы можете передавать этой функции как заданный текст, так и результат из переменной.

6. touch


touch <filename>

Команда touch используется для создания файла без какого-либо содержимого. Команда touch может использоваться, когда у пользователя на момент создания файла ещё нет данных о его содержимом.

touch2

Создание нового файла с помощью функции touch

Обратите внимание, на изображении выше мы использовали команду touch для создания файла, а cat - для его просмотра. Поскольку только созданный файл test.txt пуст, команда cat ничего не возвращает.

Есть несколько ключевых различий между cat и touch:

  • cat - используется для создания файла с содержимым.
  • touch - создаёт пустой файл, без содержимого. Помните, что файл, созданный с помощью touct - пуст. Эта команда полезна, когда у пользователя нет данных содержимого файла во время его создания.

7 mkdir


mkdir <directory name>

Как вы уже догадались, команда mkdir создаёт новую папку по текущему активному пути. Вместо того, чтобы создавать новую папку через редактор или в графическом интерфейсе, используйте эту команду.

mkdir2

Создание новой папки командой mkdir

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

7.1 rm


rm <directory name>

Команда rm выполняет удаление папки или файла.

rm

Удаление файла/папки командой rm

По умолчанию команда rm не удаляет папки. Для того, чтобы удалить папку командой rm нужно указать дополнительно флаг -rf.


rm -rf <directory name>

Запомните, что для удаления папки нужно передавать дополнительный флаг
Эта команда удаляет каталог безвозвратно, независимо от того, содержит ли каталог внутри файлы/папки, или нет.

7.2 rmdir


rmdir <directory name>

Команда rmdir удаляет именно папку, если в неё нет никакого содержимого.

rmdir

Удаление пустой папки командой rmdir

8. tail


tail <file name>

Команда tail читает файл и выводит его последнюю, завершающую часть ("хвост").

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 и т.д.

Мы ещё раньше разбирали работу с этой программой, рассматривая основные опции и возможность парсинга и сохранения сайтов с её помощью.

wget

Сохраняем главную страницу всеми нами любимого сайта

GNU Wget обладает множеством функций, облегчающих получение больших файлов или выкачивание всего веб-сайта или FTP-сайта. Wget обладает такими преимуществами, в том числе:

  • Может возобновить прерванные загрузки, используя REST и RANGE
  • Может использовать шаблоны имени файла и рекурсивно скачивать каталоги, воссоздавая зеркальную структуру папок на локальной машине
  • Опционально преобразует абсолютные ссылки скачиваемых документов в относительные, чтобы загруженные документы могли ссылаться друг на друга и корректно отображаться локально
  • Кроссплатформенность: работает в большинстве UNIX-подобных операционных систем, а также в Microsoft Windows
  • Поддерживает HTTP прокси
  • Поддерживает HTTP куки
  • Поддерживает постоянное HTTP-соединение
  • Автоматическая / фоновая работа
  • Использует локальные временные метки файлов, для определения необходимости повторной загрузки документа при выкачивании в зеркальной структуре.

В одной из прошлыъ статей мы ужа рассматривали работу с Wget, и его пользу при парсинге сайтов. Советую ознакомиться с этой статьей подробнее по ссылке.

10. find


find path -name <filename>

Команда find позволяет быстро найти файл или папку. Это полезно, когда вы работаете над большим проектом с сотнями файлов и папок.

find

Поиск файла с названием CallbackApiService.php

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

Команда find также позволяет вам искать файлы в каталоге (и его подкаталогах) конкретного типа. Например, следующая команда будет искать все файлы с расширением .js в вашем текущем рабочем каталоге.

find . -name "*.js"

find_js

Поиск всех файлов с расширением .js в директории

11. mv


mv <filename> </to/some/other/path>

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

mv_old

Перемещаем файл в другую папку

Резюме

Спасибо за чтение этой статьи, надеюсь, вы узнали что-то новое. Оставайтесь голодными и жадными к новым знаниям! В этой статье я рассмотрел основные unix команды терминала, которые каждый день используются при разработке, или деплое на сервер.

Я создал для вас небольшой справочник команд unix, которые обязан знать каждый разработчик, администратор, или обычный пользователь *unix-овых систем. Этот справочник покрывает все аспекты реального пользования операционной системой, и содержит: unix команды для копирования, создания, удаления и фильтра файлов.