Навыки работы в терминале помогают быть более продуктивным.
![](https://habrastorage.org/r/w780q1/webt/tm/v-/nv/tmv-nvqftd4b3jgxegwl1tvoyew.jpeg)
Каждый современный разработчик старается совершенствоваться и быть более продуктивным. Терминал — инструмент, позволяющий работать быстрее. Вместо того чтобы кликать мышью для перемещения по графическому интерфейсу, можно просто выполнить ту же самую работу в терминале, но гораздо быстрее. Хотя, это потребует некоторых знаний о консольных командах, которые можно использовать.
Эта статья для тех, кто хотел бы освоить ниндзюцу консольных команд, но пока не имеет сколь значимого опыта работы с командной строкой. Ну и для тех, кто просто хочет больше знать и глубже понимать широкий спектр команд, доступных в терминале — вдруг встретится что-то новое.
Сразу перейдём к списку консольных команд, которые, надеюсь, сделают разработчикам жизнь немного проще и повысят производительность.
pwd — информация о каталоге
cd — смена каталога
ls — список файлов в каталоге
cp & mv — скопировать/переместить файл/каталог
mkdir & touch — создать каталог/файл
rmdir & rm — удалить каталог/файл
cat, tail & head — прочитать файл
grep — поиск текста в файле по регулярному выражению
find — поиск файла/каталога
Команда pwd выдаёт некоторый контекст о текущем рабочем каталоге. pwd — это сокращение от print working directory т.е. распечатать рабочий каталог. Результат команды — полный системный путь для текущего каталога.
![](https://habrastorage.org/r/w1560/webt/by/ch/os/bychost6pvpm9-bmoe6arrnv6r0.png)
Хотя pwd не имеет столько параметров, сколько у большинства других команд (поскольку она довольно проста), с её помощью можно игнорировать символические ссылки. Для этого надо передать опцию -P.
Это одна из наиболее часто используемых команд вместе со следующими двумя командами в этом списке.
Другая часто используемая команда, это cd. cd — это сокращение от change directory, т.е. смена каталога. Как следует из названия, она позволяет изменить текущий рабочий каталог.
![](https://habrastorage.org/r/w1560/webt/n3/ex/x-/n3exx-ykgi9w1eui8uknmaztig8.png)
Также есть возможность переместиться сразу на несколько уровней. Для этого нужно указать полный путь к каталогу, к которому необходимо перейти.
В этом примере мы переходим в папку проекта, которая находится внутри папки «Загрузки»:
![](https://habrastorage.org/r/w1560/webt/yy/vj/qj/yyvjqjh_98-mn-kpmsnrboumv40.png)
Чтобы перейти в родительскую папку, надо использовать две точки: ... В следующем примере мы переходим в папку проекта, которая находится в папке «Загрузки». При выполнении cd .. увидите, что текущий рабочий каталог меняется на указанную папку.
![](https://habrastorage.org/r/w1560/webt/rf/ra/zi/rfrazisu7mwu8gcbx2bxaumzqj8.png)
Думаю, вы обратили внимание, что я довольно часто использовал тильду ~ в предыдущих примерах. Это домашний каталог. Забавно, но можно увидеть физический путь к папке ~, используя те две команды, которые уже рассмотрели.
![](https://habrastorage.org/r/w1560/webt/7k/0q/uq/7k0quqqjum1jz8ltptt_5rolrac.png)
Следующая команда — это ls, сокращение от list, т.е. список. Она выводит список всех файлов в каталоге. Можно также указать каталог, чтобы получить список файлов в нём. Если каталог не указан, используется текущий рабочий каталог.
![](https://habrastorage.org/r/w1560/webt/6w/nj/4y/6wnj4y3xgep_-oncq8mjjfbv-jk.png)
Обратите внимание, что есть несколько очень полезных опций, с помощью которых можно извлекать ещё более ценную информацию. Опция -a, например. Эта опция позволяет увидеть в списке скрытые файлы (названия которых начинаются с точки). Опция -l выдаёт длинный список, в котором, помимо прочего, указаны размеры файлов и разрешения.
Опции можно комбинировать:
ls -al
Команда cp происходит от слова copy, т.е. копирование. Позволяет копировать файлы и каталоги. Первый указанный файл/каталог является исходным (что копируем), на втором месте — местом назначения (куда копируем). В следующем примере мы перемещаем изображение в папку «Загрузки».
![](https://habrastorage.org/r/w1560/webt/kk/ld/s8/kklds8kvomk1kiozmpy9vdbbqxs.png)
При копировании каталога можно использовать опцию -R для рекурсивного копирования (то есть, вместе с подпапками). Обратите внимание, при этом скрытые файлы также будут скопированы.
Существует довольно много вариаций, как копировать файлы и каталоги. Например, возможно скопировать только файлы с определенным расширением. В следующем примере копируются все файлы с расширением jpg в папку «Загрузки».
![](https://habrastorage.org/r/w1560/webt/l6/wb/rh/l6wbrhsqzipmjvglxjnmgesyne4.png)
Помимо команды cp есть также команда mv, которая обозначает move, т.е. перемещение. Эта команда используется для перемещения файлов и каталогов. Работает в целом так же, как и cp. Тем не менее, есть различия. Например, команда mv не идёт с опцией -R.
Чтобы изучить все параметры, доступные для команды mv, просто введите:
man mv
Чтобы создать каталог, можно воспользоваться командой mkdir, которая обозначает make directory, т.е. создание каталога. Эта команда требует обязательный аргумент: имя нового каталога. Проверить, была ли команда выполнена успешно, можно с помощью ls, рассмотренной выше.
![](https://habrastorage.org/r/w1560/webt/-v/go/32/-vgo32o5ucfh7e2ffqcpadavobw.png)
Создать файл так же просто, как создать каталог. Вместо mkdir нужно использовать команду touch для создания нового файла.
![](https://habrastorage.org/r/w1560/webt/kt/zl/hw/ktzlhwdh1bs6gwrf60az6060jfw.png)
Следует знать, что новосозданный файл будет пустым. И ещё раз, если хотите проверить, была ли команда выполнена успешно — используйте команду ls.
Так же, как есть две разные команды для создания файлов и каталогов, также имеются две отдельные команды, когда речь идёт об удалении файлов и каталогов.
Чтобы удалить каталог, можно использовать команду rmdir, что является сокращением от remove directory, т.е. удаление каталога. Имейте ввиду — команда удаляет только пустые каталоги.
![](https://habrastorage.org/r/w1560/webt/ja/dv/tc/jadvtcjm1luoaxqtsiwypck1ghc.png)
Более мощной является команда rm. Как вы, наверное, догадались, это сокращение от remove, т.е. удаление. Команда rm удаляет каждый указанный файл. Хотя с помощью этой команды можно удалить и каталоги, по умолчанию она этого не делает.
![](https://habrastorage.org/r/w1560/webt/as/z8/xi/asz8xi9fgyoxdoghpwdu9hqlfcy.png)
Когда rm выполняется с опцией -r, рекурсивно удаляются соответствующие каталоги, их подкаталоги и все файлы, которые там содержатся.
Чтобы игнорировать несуществующие файлы и никогда не запрашивать подтверждение их удаления, можно использовать опцию -f.
![](https://habrastorage.org/r/w1560/webt/rl/hg/se/rlhgseofxkqteihiwkl46v_zvli.png)
Когда дело доходит до чтения содержимого файла, есть несколько вариантов. Первый — команда cat — сокращение от concatenate, т.е. конкатенация. Несмотря на то, что команду можно использовать в разных целях, одна из вещей, которую она может делать, — показать содержимое файла.
![](https://habrastorage.org/r/w1560/webt/c_/hu/sd/c_husdd1yzmoti9yt8gx5rwrngc.png)
Обратите внимание: выводится весь файл. Также есть случаи, когда вам нужны только первые или последние X строк файла. Для этого используется команды tail и head. tail выводит последние 10 строк файла, тогда как head — первые 10.
![](https://habrastorage.org/r/w1560/webt/17/9y/e5/179ye5cyal9rn4btd3fsiyofxyu.png)
Используя опцию -n, можно указать, сколько строк нужно выводить. Тут приведён пример с tail, для head работает точно так же.
![](https://habrastorage.org/r/w1560/webt/xt/vf/rx/xtvfrx5avcfwhtsu97spaw6esw0.png)
Команда grep, это сокращение от global regular expression print, т.е. глобальный вывод регулярного выражения. Используется для поиска текста. Файл будет просканирован на предмет информации, которую вы требуется получить, и результат будет представлен в указанном формате.
Начнём с очень простого примера. Есть файл, содержащий названия всех стран. Мы хотим проверить, есть ли слово Netherlands (Нидерланды) в списке. Обратите внимание, по умолчанию grep чувствителен к регистру.
Первый передаваемый аргумент — слово, которое ищем. А второй — файл, в котором будем искать.
![](https://habrastorage.org/r/w1560/webt/wm/wl/tp/wmwltp7aj9dvf6ljz45dbchd-qg.png)
Для поиска без учёта регистра используется опцию -i. В следующем примере найдётся и BeL и bel и BEL.
![](https://habrastorage.org/r/w1560/webt/8-/h3/gf/8-h3gfm3isohsporaahlc9nwapg.png)
Обратите внимание, в приведённых выше примерах видно, что grep выводит всю соответствующую шаблону строку в терминал. Для ограничения количества совпадающих строк, используйте опцию -c.
![](https://habrastorage.org/r/w1560/webt/jv/qe/l1/jvqel1ngagyfij0i-xqh9eck8ni.png)
Последняя команда на сегодня — find (поиск), позволяющая быстро найти файл или каталог. Допустим, нужны все CSS-файлы в текущем каталоге. Мы могли бы получить их список, используя команду find.
![](https://habrastorage.org/r/w1560/webt/kz/tm/ef/kztmefaqpjdvgqvj6i_fxcola4w.png)
Обратите внимание, команда find ищет и в подпапках тоже.
Теперь, когда мы прошли весь список, я надеюсь, что вы углубили свои знания для работы с терминалом. Может, вам что-то и пригодится, или даже узнали для себя о новой команде или опции к ней.
Если считаете, что в этом списке отсутствует команда или у вас просто есть отличное дополнение к этому списку, пожалуйста, дайте мне знать.
Спасибо за внимание!
![](https://habrastorage.org/webt/tm/v-/nv/tmv-nvqftd4b3jgxegwl1tvoyew.jpeg)
Каждый современный разработчик старается совершенствоваться и быть более продуктивным. Терминал — инструмент, позволяющий работать быстрее. Вместо того чтобы кликать мышью для перемещения по графическому интерфейсу, можно просто выполнить ту же самую работу в терминале, но гораздо быстрее. Хотя, это потребует некоторых знаний о консольных командах, которые можно использовать.
Эта статья для тех, кто хотел бы освоить ниндзюцу консольных команд, но пока не имеет сколь значимого опыта работы с командной строкой. Ну и для тех, кто просто хочет больше знать и глубже понимать широкий спектр команд, доступных в терминале — вдруг встретится что-то новое.
Сразу перейдём к списку консольных команд, которые, надеюсь, сделают разработчикам жизнь немного проще и повысят производительность.
Список базовых команд:
pwd — информация о каталоге
cd — смена каталога
ls — список файлов в каталоге
cp & mv — скопировать/переместить файл/каталог
mkdir & touch — создать каталог/файл
rmdir & rm — удалить каталог/файл
grep — поиск текста в файле по регулярному выражению
find — поиск файла/каталога
Статья переведена при поддержке компании EDISON.
Мы программируем серверы, как управляемые через консоль, так и имеющие удобный пользовательский интерфейс.
Мы очень любим работать с интефейсами! ;-)
1. pwd ⇑ →
Команда pwd выдаёт некоторый контекст о текущем рабочем каталоге. pwd — это сокращение от print working directory т.е. распечатать рабочий каталог. Результат команды — полный системный путь для текущего каталога.
![](https://habrastorage.org/webt/by/ch/os/bychost6pvpm9-bmoe6arrnv6r0.png)
Хотя pwd не имеет столько параметров, сколько у большинства других команд (поскольку она довольно проста), с её помощью можно игнорировать символические ссылки. Для этого надо передать опцию -P.
Это одна из наиболее часто используемых команд вместе со следующими двумя командами в этом списке.
2. cd ← ⇑ →
Другая часто используемая команда, это cd. cd — это сокращение от change directory, т.е. смена каталога. Как следует из названия, она позволяет изменить текущий рабочий каталог.
![](https://habrastorage.org/webt/n3/ex/x-/n3exx-ykgi9w1eui8uknmaztig8.png)
Также есть возможность переместиться сразу на несколько уровней. Для этого нужно указать полный путь к каталогу, к которому необходимо перейти.
В этом примере мы переходим в папку проекта, которая находится внутри папки «Загрузки»:
![](https://habrastorage.org/webt/yy/vj/qj/yyvjqjh_98-mn-kpmsnrboumv40.png)
Чтобы перейти в родительскую папку, надо использовать две точки: ... В следующем примере мы переходим в папку проекта, которая находится в папке «Загрузки». При выполнении cd .. увидите, что текущий рабочий каталог меняется на указанную папку.
![](https://habrastorage.org/webt/rf/ra/zi/rfrazisu7mwu8gcbx2bxaumzqj8.png)
Думаю, вы обратили внимание, что я довольно часто использовал тильду ~ в предыдущих примерах. Это домашний каталог. Забавно, но можно увидеть физический путь к папке ~, используя те две команды, которые уже рассмотрели.
![](https://habrastorage.org/webt/7k/0q/uq/7k0quqqjum1jz8ltptt_5rolrac.png)
3. ls ← ⇑ →
Следующая команда — это ls, сокращение от list, т.е. список. Она выводит список всех файлов в каталоге. Можно также указать каталог, чтобы получить список файлов в нём. Если каталог не указан, используется текущий рабочий каталог.
![](https://habrastorage.org/webt/6w/nj/4y/6wnj4y3xgep_-oncq8mjjfbv-jk.png)
Обратите внимание, что есть несколько очень полезных опций, с помощью которых можно извлекать ещё более ценную информацию. Опция -a, например. Эта опция позволяет увидеть в списке скрытые файлы (названия которых начинаются с точки). Опция -l выдаёт длинный список, в котором, помимо прочего, указаны размеры файлов и разрешения.
Опции можно комбинировать:
ls -al
4. cp & mv ← ⇑ →
Команда cp происходит от слова copy, т.е. копирование. Позволяет копировать файлы и каталоги. Первый указанный файл/каталог является исходным (что копируем), на втором месте — местом назначения (куда копируем). В следующем примере мы перемещаем изображение в папку «Загрузки».
![](https://habrastorage.org/webt/kk/ld/s8/kklds8kvomk1kiozmpy9vdbbqxs.png)
При копировании каталога можно использовать опцию -R для рекурсивного копирования (то есть, вместе с подпапками). Обратите внимание, при этом скрытые файлы также будут скопированы.
Существует довольно много вариаций, как копировать файлы и каталоги. Например, возможно скопировать только файлы с определенным расширением. В следующем примере копируются все файлы с расширением jpg в папку «Загрузки».
![](https://habrastorage.org/webt/l6/wb/rh/l6wbrhsqzipmjvglxjnmgesyne4.png)
Помимо команды cp есть также команда mv, которая обозначает move, т.е. перемещение. Эта команда используется для перемещения файлов и каталогов. Работает в целом так же, как и cp. Тем не менее, есть различия. Например, команда mv не идёт с опцией -R.
Чтобы изучить все параметры, доступные для команды mv, просто введите:
man mv
5. mkdir & touch ← ⇑ →
Чтобы создать каталог, можно воспользоваться командой mkdir, которая обозначает make directory, т.е. создание каталога. Эта команда требует обязательный аргумент: имя нового каталога. Проверить, была ли команда выполнена успешно, можно с помощью ls, рассмотренной выше.
![](https://habrastorage.org/webt/-v/go/32/-vgo32o5ucfh7e2ffqcpadavobw.png)
Создать файл так же просто, как создать каталог. Вместо mkdir нужно использовать команду touch для создания нового файла.
![](https://habrastorage.org/webt/kt/zl/hw/ktzlhwdh1bs6gwrf60az6060jfw.png)
Следует знать, что новосозданный файл будет пустым. И ещё раз, если хотите проверить, была ли команда выполнена успешно — используйте команду ls.
6. rmdir & rm ← ⇑ →
Так же, как есть две разные команды для создания файлов и каталогов, также имеются две отдельные команды, когда речь идёт об удалении файлов и каталогов.
Чтобы удалить каталог, можно использовать команду rmdir, что является сокращением от remove directory, т.е. удаление каталога. Имейте ввиду — команда удаляет только пустые каталоги.
![](https://habrastorage.org/webt/ja/dv/tc/jadvtcjm1luoaxqtsiwypck1ghc.png)
Более мощной является команда rm. Как вы, наверное, догадались, это сокращение от remove, т.е. удаление. Команда rm удаляет каждый указанный файл. Хотя с помощью этой команды можно удалить и каталоги, по умолчанию она этого не делает.
![](https://habrastorage.org/webt/as/z8/xi/asz8xi9fgyoxdoghpwdu9hqlfcy.png)
Когда rm выполняется с опцией -r, рекурсивно удаляются соответствующие каталоги, их подкаталоги и все файлы, которые там содержатся.
Чтобы игнорировать несуществующие файлы и никогда не запрашивать подтверждение их удаления, можно использовать опцию -f.
![](https://habrastorage.org/webt/rl/hg/se/rlhgseofxkqteihiwkl46v_zvli.png)
7. cat, tail & head ← ⇑ →
Когда дело доходит до чтения содержимого файла, есть несколько вариантов. Первый — команда cat — сокращение от concatenate, т.е. конкатенация. Несмотря на то, что команду можно использовать в разных целях, одна из вещей, которую она может делать, — показать содержимое файла.
![](https://habrastorage.org/webt/c_/hu/sd/c_husdd1yzmoti9yt8gx5rwrngc.png)
Обратите внимание: выводится весь файл. Также есть случаи, когда вам нужны только первые или последние X строк файла. Для этого используется команды tail и head. tail выводит последние 10 строк файла, тогда как head — первые 10.
![](https://habrastorage.org/webt/17/9y/e5/179ye5cyal9rn4btd3fsiyofxyu.png)
Используя опцию -n, можно указать, сколько строк нужно выводить. Тут приведён пример с tail, для head работает точно так же.
![](https://habrastorage.org/webt/xt/vf/rx/xtvfrx5avcfwhtsu97spaw6esw0.png)
8. grep ← ⇑ →
Команда grep, это сокращение от global regular expression print, т.е. глобальный вывод регулярного выражения. Используется для поиска текста. Файл будет просканирован на предмет информации, которую вы требуется получить, и результат будет представлен в указанном формате.
Начнём с очень простого примера. Есть файл, содержащий названия всех стран. Мы хотим проверить, есть ли слово Netherlands (Нидерланды) в списке. Обратите внимание, по умолчанию grep чувствителен к регистру.
Первый передаваемый аргумент — слово, которое ищем. А второй — файл, в котором будем искать.
![](https://habrastorage.org/webt/wm/wl/tp/wmwltp7aj9dvf6ljz45dbchd-qg.png)
Для поиска без учёта регистра используется опцию -i. В следующем примере найдётся и BeL и bel и BEL.
![](https://habrastorage.org/webt/8-/h3/gf/8-h3gfm3isohsporaahlc9nwapg.png)
Обратите внимание, в приведённых выше примерах видно, что grep выводит всю соответствующую шаблону строку в терминал. Для ограничения количества совпадающих строк, используйте опцию -c.
![](https://habrastorage.org/webt/jv/qe/l1/jvqel1ngagyfij0i-xqh9eck8ni.png)
9. find ← ⇑
Последняя команда на сегодня — find (поиск), позволяющая быстро найти файл или каталог. Допустим, нужны все CSS-файлы в текущем каталоге. Мы могли бы получить их список, используя команду find.
![](https://habrastorage.org/webt/kz/tm/ef/kztmefaqpjdvgqvj6i_fxcola4w.png)
Обратите внимание, команда find ищет и в подпапках тоже.
Теперь, когда мы прошли весь список, я надеюсь, что вы углубили свои знания для работы с терминалом. Может, вам что-то и пригодится, или даже узнали для себя о новой команде или опции к ней.
Если считаете, что в этом списке отсутствует команда или у вас просто есть отличное дополнение к этому списку, пожалуйста, дайте мне знать.
Спасибо за внимание!