При разработке ПО, над какой бы технологией вы ни работали, не обойтись без командной строки. В этой статье мы рассмотрим список часто используемых и в целом полезных команд, которые пригодятся при работе. Некоторые из них знакомы многим, так что их можно и пропустить, а другие могут показаться интересными.
Мы используем ниже представленные команды на 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/
Заключение
Эти команды не хватают звезд с неба, но иногда могут пригодиться разработчику при работе с консолью, ведь команды помогают не редактировать целую строку, а вносить необходимые изменения точечно.
Читайте также:
- Шпаргалка по основным командам Bash
- 5 Команд Linux, заставляющих ахнуть от удивления
- Пять шагов к красивому терминалу, которым вам понравится пользоваться
Читайте нас в Telegram, VK и Яндекс.Дзен
Перевод статьи Aiko Klostermann: The 10 Most Productive Shell Commands and Command-Line Tricks