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

Рабочий каталог

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

  • pwd — показывает полный путь к вашему рабочему каталогу:

  • cd <folder> — переключает рабочий каталог на <folder>:

Еще несколько примеров с cd:

  • cd ..-перемещается в родительскую папку текущего
  • cd - — возвращает в папку предпросмотра
  • cd ~-переход в домашний каталог

Список файлов

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

Как видите, и файлы, и каталоги показаны вместе, и не совсем понятно, что к чему. Я обычно запускаю эту команду с двумя параметрами:

  • -a - показать все файлы, даже скрытые
  • -l - чтобы показать информацию в длинном формате

В выводе вы можете увидеть:

  • . и .. — псевдонимы самой папки и ее родительской папки
  • .git-скрытая папка для хранения файлов, используемых репозиторием Git
  • каждая строка начинается с - или d. Первый означает файлы; второй означает каталоги.

Управление файлами и папками

Чтобы закончить с основами, нам просто нужно несколько команд для изменения файлов и каталогов. Команды для этого:

  • touch <file-name>-создает пустой файл
  • mkdir <directory-name>-создает пустую папку
  • rm <file-name>-удаляет указанный файл
  • rm -d <directory-name>-удаляет указанную папку

Прочтите дружественное руководство

man — это команда, которая показывает вам руководство для других команд. Все команды, которые мы упоминали до сих пор, имеют множество опций. Вы можете узнать о них больше прямо из терминала, используя man. Вы запускаете man <command name>:

Возвращаемое значение

echo — это простая программа, которая возвращает свои аргументы на стандартный вывод. Вы можете использовать его для записи значения в файл:

echo Test > test.txt

Показать содержимое файлов

cat инструмент, предназначенный для cat объединения нескольких файлов. Он часто используется для выбора содержимого только одного файла, чтобы передать его на стандартный ввод другой команды с помощью оператора канала. Пример:

cat file-1.txt file-2.txt

Подсчитать содержимое файла

В контексте CLI wc означает количество слов. Это позволяет вам проверить длину вывода других файлов:

Вывод здесь означает, что в указанном файле у нас есть:

  • 29 строк
  • 116 слов
  • 542 символа

Посмотреть часть файла

head и tail — это утилиты для чтения нескольких строк с начала или с конца файлов соответственно. По умолчанию оба показывают 10 строк. Вы можете увидеть их в действии:

Проверка всего файла

less — это команда, которая разбивает файл или его ввод на страницы, чтобы они помещались на экране. Я рассмотрел основные навигационные ярлыки в моей недавней статье:

Вы можете использовать less для просмотра вывода любой другой команды — просто соединитесь с каналом:

Если вас смущает терминология, я объясню стандартный ввод, вывод и каналы здесь.

Поиск содержимого файла

grep — отличный инструмент поиска, поддерживающий регулярные выражения. Его сила заключается в гибкости: указав один из его многочисленных параметров, вы можете настроить его поведение в соответствии с вашими потребностями. По умолчанию он ожидает появления значений на стандартном вводе — не самый распространенный вариант использования. Поэтому вы, скорее всего, захотите запустить его как фильтр внутри конвейера команд.

Типичное использование в качестве трубного фильтра выглядит следующим образом:

В этом конвейере:

  • cat *txt — объединяет все файлы в текущей папке, заканчивающиеся на txt, и возвращает их в стандартный вывод
  • grep 1 — возвращает только те строки, в которых есть 1.

Обратный поиск

Часто проще описать то, чего вы не хотите иметь, чем то, чего вы хотите. С помощью grep вы можете легко отфильтровать некоторые строки, добавив к нему параметр -v. Например:

Примечание! Вы можете комбинировать множество команд с оператором канала:

cat *txt | grep -v 1 | grep file-
Content of file-2.txt

Поиск по файлам

Grep также позволяет выполнять поиск в файлах — вам просто нужно добавить -r (из рекурсивного поиска в подкаталогах):

В выводе вы можете увидеть:

  • ./file — путь к файлу
  • Lorem ipsum — совпадающая строка

Только имена файлов

Если вас интересует только то, какие файлы имеют соответствующие значения, вы можете добавить в команду параметр -l:

Эта опция становится особенно полезной, когда вы комбинируете ее со следующей командой:

Вызов команд на основе вывода других команд

xargs берет строки из стандартного ввода и добавляет их в качестве параметров для другой команды. Одним из распространенных применений является поиск всех файлов, содержащих некоторое значение, и выполнение над ними команды, например удаление их:

grep -rl Lorem | xargs rm

Выходных данных команды нет, но давайте посмотрим, какие файлы доступны до и после запуска команды:

ls
long-file.txt

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

Как вы можете видеть во втором запуске ls -R (рекурсивный список каталога и каждого подкаталога):

  • file исчез из верхнего каталога, и
  • another-file.txt пропал из вложенной папки.

Редактирование файлов сценариев

sed — редактор потоков. Это позволяет изменять значения в канале:

echo 'hello world' | sed 's/world/you/' 
hello you

В нашем примере параметр s/world/you/ обозначает следующее:

  • s-означает замену
  • world-регулярное выражение для соответствия заменяемому значению
  • you-вместо этого будет использоваться новое значение

Редактирование файлов на диске

Более практичным вариантом использования sed является редактирование файлов. Когда вы можете комбинировать его с grep и xargs, вы можете начать разрабатывать довольно аккуратные однострочники, которые помогут вам применять большие обновления к вашей кодовой базе:

# at Linux
grep -lr file | xargs sed -i -e 's/file/File/g'

# at macOS
grep -lr file | xargs sed -i '' -e 's/file/File/g'

В нашей команде:

  • grep -lr file — возвращает список всех файлов, содержащих file.
  • xargs — превращает их во входные параметры для sed.
  • sed -i -e или sed -i '' -e — переключает редактор на работу непосредственно с файлами.
  • s/file/File/g — заменяет строчную букву «файл» на прописную «файл». /g в конце означает, что изменение должно быть глобальным. Он должен обновлять каждый экземпляр, найденный в файле, а не только первый экземпляр в каждой строке.

Отслеживание изменений в файлах

Git — это система контроля версий, повсеместно распространенная в нашей отрасли. Если вы намерены стать разработчиком, вам в конечном итоге нужно будет этому научиться. Я уже много писал о Git, но здесь мы сосредоточимся на командах Git, которые хорошо интегрируются с другими инструментами CLI, которые мы здесь рассмотрели.

git grep

Эта команда вдохновлена ​​grep. Он позволяет выполнять поиск по файлам, отслеживаемым репозиторием. Когда вы отслеживаете свои файлы с помощью Git, вы можете использовать git grep вместо grep -r. Основное преимущество заключается в том, что он автоматически игнорирует файлы, для которых вы установили Git для игнорирования, что часто бывает с node_modules.

Подобно оригинальному grep, вы можете использовать опцию -l, чтобы получить только имена файлов:

$ git grep -l File
file-a
file-b
file-c

git ls-файлы

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

Текстовый редактор

vim — это текстовый редактор, который является чем-то вроде занудного клише, и мой любимый редактор. Я переключился на него после того, как устал от старого компьютера, на котором с трудом запускался Eclipse и другие большие интегрированные среды разработки (IDE).

Vim быстр, гибок и предлагает отличные сочетания клавиш. Более того: сочетания клавиш — единственный способ использовать его, потому что он не поддерживает мышь. Кривая обучения немного крутая — поначалу может быть сложно даже закрыть ее. В долгосрочной перспективе изучение Vim может стать хорошей инвестицией. Что делает его особенно ценным, так это то, что команды редактора в Vim очень близки к командам, которые используются sed и шаблонами поиска в grep. То, что вы узнаете в одном из этих инструментов, вы можете сразу же применить и в других инструментах.

Утилиты буфера обмена

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

  • pbcopy-утилита, доступная на macOS
  • xclip-утилита, которую можно было установить на Ubuntu
cat file-1.txt | pbcopy

И теперь я могу вставить содержимое файла в браузер.

Управление сеансами терминала

tmux — мультиплексор терминала — программа, позволяющая запускать несколько сеансов внутри одного окна эмулятора терминала. Это позволяет вам использовать разные «окна» для разных целей. Например, у меня обычно:

  • один сеанс для запуска команд Git,
  • другой с vim, где я редактирую код, и
  • как минимум один сеанс для запуска сервера разработки

Хотите узнать больше?

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

Первоначально опубликовано на https://how-to.dev.

Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord.

Повысьте узнаваемость и признание вашего технического стартапа с помощью Circuit.