При разработке ПО, над какой бы технологией вы ни работали, не обойтись без командной строки. В этой статье мы рассмотрим список часто используемых и в целом полезных команд, которые пригодятся при работе. Некоторые из них знакомы многим, так что их можно и пропустить, а другие могут показаться интересными.

Мы используем ниже представленные команды на macOS, однако, если вы используете любые Unix/bash консоли, все они также должны работать и у вас. А вот если у вас Powershell на Windows, то лучше поискать какой-нибудь другой вариант.

cd —

Многие знают, что команда cd используется для перехода в конкретную папку. Но знаете ли вы, что при добавлении к команде дефиса можно перейти в предыдущую папку?

$ cd /home
~> home
$ cd /my_dir
~> /my_dir
$ cd -
~> /home

Бонус: приставка в виде дефиса также работает с командой git checkout, так что можно, к примеру, быстро переключаться между главной и рабочей ветками в git.

История команд

Все мы, наверное, пользуемся этой функцией: если на клавиатуре нажать стрелку вверх, то в консоли покажется последняя введенная команда. Если при этом нажать клавиши ctrl + R, то можно также открыть историю команд и искать их там в обратном порядке.

При введении команды history в консоль выведутся пронумерованные последние 15 команд. Написав команду !(номер команды), можно вывести команду, которая пронумерована в истории. Можно даже указать отрицательное число, чтобы вывести n-ную команду с конца списка:

$ echo second
$ echo last
$ !-2
-> echo second

!!

Если же вам нужно дополнить предыдущую команду новой командой, то можно вписать нужное в консоль и подставить туда !! в качестве переменной, вот как это выглядит:

$ apt-get install unicorn-factory
> [...] Permission denied
$ sudo !!
-> sudo apt-get install unicorn-factory

!:(индекс)

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

$ echo hello world 
> hello world
$ echo !:1
> hello

Таким образом можно даже выбирать диапазон значений !(индекс)-(индекс):

$ echo live long and prosper
> live long and prosper
$ echo !:3-4
> and prosper

!^ !$

Кроме того, существуют команды для выбора первого (!^) и последнего (!$) элементов предыдущей команды в консоли:

$ echo live long and prosper
> live long and prosper
$ echo !^ !$
> live prosper

Редактирование текущей строки

Иногда требуется лишь слегка подкорректировать текущую команду, можно воспользоваться некоторыми сочетаниями клавиш. Сочетание ctrl + a переводит курсор к началу строки, а ctrl + e  —  к концу.

Кроме того,

  • ctrl + W обрезает слово слева от курсора;
  • alt + D обрезает слово справа от курсора;
  • ctrl + K обрезает всю строку справа от курсора;
  • ctrl + U обрезает всю строку слева от курсора;
  • ctrl + Y заново вставляет то, что только что было стерто.

ctrl + X + E


Допустим, вы пишете какую-то слишком длинную команду, возможно, даже с какими-то циклами или с ветвлениями, а затем понимаете, что где-то внутри строки нужно что-то отредактировать. В таком случае можно нажать ctrl + X + E и тогда, вместо консоли, открывается VIM (или Nano, или VI и т.д.), где можно продолжить редактирование своей многострочной команды, уже в консоли.

Вставка измененной команды из истории команд

Вместо того, чтобы искать предыдущую команду, затем копировать ее и редактировать, можно воспользоваться этой командой для изменения опечатки внутри строки. Команда ^x^y заменяет слово x словом y:

$ gti status
> Command 'gti' not found
$ ^gti^git
> git status

Обработка множества файлов одной командой

Возможно, вы уже пользовались командами cp или mv для обработки файлов. Однако одной из наиболее полезных команд можно назвать {}, которая принимает параметры. Используя {}, можно указать консоли на различные расширения файлов:

$ mv hello_world.{js,html} static

Эта команда перемещает как файл hello_world.js, так и файл hello_world.html без необходимости дважды писать название файла. А еще с помощью этой команды можно перемещать целый список файлов с однотипным названием, как на примере ниже:

$ mv file{1..5}.png backup/

Заключение

Эти команды не хватают звезд с неба, но иногда могут пригодиться разработчику при работе с консолью, ведь команды помогают не редактировать целую строку, а вносить необходимые изменения точечно.

Читайте также:

Читайте нас в TelegramVK и Яндекс.Дзен


Перевод статьи Aiko Klostermann: The 10 Most Productive Shell Commands and Command-Line Tricks

Предыдущая статьяPython для начинающих: all, any, zip, enumerate, filter, map
Следующая статьяРаспространенные и нелепые ошибки разработчиков Android-приложений