Перевод статьи «Here Are 11 Console Commands Every Developer Should Know».
Командная строка очень сильно облегчает нам жизнь, в частности, дает возможность автоматизировать рутинные задачи. Вместо того чтобы кликать мышкой в графическом интерфейсе, мы можем ввести пару команд и быстро сделать все необходимое.
Оболочка Unix (shell) это командный интерпретатор, используемый в операционных системах Unix. Она одновременно является и интерактивным языком команд, и языком сценариев. Оболочка используется операционной системой для управления тем, как система использует shell-скрипты.
В каждой операционной системе Linux или Mac интерфейс командной строки установлен по умолчанию и обычно называется «Терминал». Интерфейс командной строки (command line interface, CLI) дает нам возможность с легкостью перемещать и переименовывать файлы, сортировать данные и перемещаться по файловой системе компьютера.
11 команд, представленных в этой статье, должны помочь вам в ежедневной работе.
1. grep
$ grep "нужная строка" file
Команда grep осуществляет поиск заданного шаблона в каждом файле. Она также ищет шаблоны, разделенные символами новой строки, и выводит каждую строку, совпадающую с шаблоном.
Опция -i делает текущий поиск нечувствительным к регистру. То есть, в нашем случае, с заданным шаблоном совпадут «REACT», «REact» и «react».
$ grep -i "REact" file
Можно вывести просто число строк, где содержится заданный шаблон — при помощи опции -c (count).
$ grep -c "react" index.js
Есть вариации программы grep: egrep и fgrep, являющиеся, по сути, той же командой grep, только с опциями -E и -F соответственно. Эти вариации уже устарели, но предоставляются с целью поддержки обратной совместимости.
При помощи команды grep можно делать очень много всего. Если хотите изучить ее получше, обратитесь к документации.
2. ls
$ ls
Команда ls выдает список (англ. list, отсюда название команды) файлов и директорий в текущей директории. Если в качестве аргумента указан путь к файлу, команда выведет информацию по этому файлу ( какую именно — зависит от опций). Если в качестве аргумента передан путь к директории, будет выведена информация по файлам и директориям внутри нее.
Вероятно, вы заметили, что файлы в списке серого цвета, а директории — голубоватого. Разные цвета (они могут быть и другими) помогают нам быстрее различать файлы и директории.
3. pwd
$ pwd
Команда pwd это утилита командной строки для вывода текущей рабочей директории (англ. print working directory). Команда выводит полный (абсолютный) путь к текущей директории в стандартный вывод.
4. cat
$ cat somefile.js
При помощи команды cat можно воздействовать на текстовые файлы тремя разными способами:
- Выводить их на экран.
- Объединять файлы.
- Создавать новые файлы.
Чаще всего при помощи команды cat читают содержимое файлов, это простой и удобный способ вывода текста на экран:
В следующем примере стандартный вывод команды cat перенаправляется в файл somefile2. Для перенаправления потока используется оператор перенаправления. Если файл somefile2 до этого не существовал, он создастся.
$ cat somefile > somefile2
5. echo
$ echo "какой-нибудь текст"
Команда echo используется в Linux для вывода строки текста, которая передается команде в качестве аргумента. Это встроенная команда, главным образом используемая в скриптах.
6. touch
$ touch somefile
Команда touch используется для создания пустого файла. Подходит для случаев, когда на момент создания файла у пользователя еще нет данных, которе будут в этом файле храниться.
Обратите внимание: в этом примере мы использовали touch для создания файла, а cat — для проверки, что у файла внутри. Поскольку только что созданный файл index2.js пуст, команда cat ничего не вернула.
Основные различия между cat и touch (относительно создания файлов):
- cat — используется для создания файла с содержимым.
- touch — создает файлы без содержимого (пустые).
Примечание редакции:
Команда touch, как и cat, имеет не одно назначение. С ее помощью можно менять метку времени доступа и изменения файла. Это, собственно, ее основная функция. Используется это следующим образом. Допустим, у вас есть файл somefile, созданный 2019-01-01. Если вы запустите команду
$ touch somefile
временная метка изменится на время запуска команды. Проверить изменение времени модификации файла можно, запустив команду ls -l. Также при помощи команды touch можно устанавливать файлам не текущее, а произвольное время модификации (или доступа).
7. mkdir
$ mkdir some-directory
Команда mkdir (от англ. make directory) создает новые директории в текущей. Это гораздо удобнее, чем кликать в графическом интерфейсе!
7.1 rm
$ rm somefile
Команда rm (от англ. remove, «удалять») предназначена для удаления файлов.
По умолчанию команда rm не удаляет директории. Чтобы все-таки воспользоваться ею для удаления папки, нужно добавить опции -rf (Прим. ред.: -r (или -R) означает «рекурсивно», опция -f нужна, чтобы командная строка не переспрашивала вас относительно каждого файла в директории, действительно ли вы хотите его удалить).
$ rm -rf some-directory
7.2 rmdir
$ rmdir some-directory
Команда rmdir удаляет пустые директории.
8. tail
$ tail somefile
Команда tail (англ. tail — «хвост») читает заданный в качестве аргумента файл и выводит его последнюю часть («хвост»).
Примечание редакции:
По умолчанию выводятся последние 10 строк файла. Если нужно вывести другое количество строк, его нужно указать после опции -n. Также возможно выводить «хвосты» не одного, а двух файлов (полезно для их сравнения).
Команда tail весьма полезна, когда нужно просмотреть crash reports или логи истории. Вот пример работы с логами:
Примечание редакции:
Существует команда head (англ. head — «голова»), функционал которой полностью аналогичен функционалу tail, только выводятся первые строки файлов.
9. wget
$ wget someurl
GNU Wget это свободное ПО для скачивания файлов через HTTP, HTTPS, FTP и FTPS — самые широко используемые интернет-протоколы. Этот инструмент командной строки не интерактивный, так что его запросто можно вызывать в скриптах, задачах CRON, терминалах без поддержки X-Windows и т. д.
GNU Wget имеет много функций, позволяющих получать большие файлы или копировать целые веб- или FTP-сайты. Например, Wget:
- Запускается на большинстве UNIX-подобных операционных систем, а также в Microsoft Windows
- Может рекурсивно создавать зеркальные копии директорий.
- Опционально конвертирует абсолютные ссылки в скачиваемых документах в относительные.
- Поддерживает HTTP-прокси
- Поддерживает HTTP-куки
- Поддерживает непрерывные HTTP-соединения
- Может работать в фоне.
- Использует локальные временные метки для определения, должен ли документ быть заново скачан при создании зеркального сайта.
GNU Wget распространяется под лицензией GNU General Public License. Более подробные сведения можно найти в официальной документации.
10. find
$ find path -name filename
Команда find позволяет быстро найти файл или директорию. Это полезно при работе над большим проектом с сотнями файлов и множественными директориями.
Поиск файлов определенного типа
При помощи команды find можно также искать в заданной директории (и ее поддиректориях) файлы определенного типа. Например, следующая команда будет искать все файлы с расширением .js в текущем каталоге.
$ find . -name "*.js"
11. mv
$ mv somefile /to/some/other/path
Команда mv (от англ. move — «перемещать») перемещает файлы (один или несколько сразу) или директории с места на место.
Примечание редакции:
При помощи этой команды осуществляется переименование файлов и директорий. Для этого в качестве целевого имени нужно указать новое имя файла (директории).
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]