Для пользователя Linux командная строка Windows кажется чем-то непривычным и неудобным. С появлением WSL казалось, что проблема использования Bash решена, но запуск виртуальной машины требует времени, да и пути в WSL отличаются от Windows. Плюс скорость файловых операций на виртуальной машине хуже.
Ещё есть возможность использовать Bash через MSYS2, но мне хотелось найти что-то более компактное и легковесное, а также простое в настройке и установке.
Так как я часто использовал Linux на роутерах, то познакомился с BusyBox, набор UNIX-утилит командной строки, используемой в качестве основного интерфейса во встраиваемых операционных системах. Оказалось, есть версия BusyBox для Windows. В 2020 году появился Windows Terminal, а в нем есть возможность создавать вкладку с запуском конкретной программы.

Сложив эти два факта, пришла очевидная мысль, использовать BusyBox, содержащий в себе Bash, в Windows Terminal как отдельную консоль.


У этого подхода был один минус, при запуске терминала не из конкретной папки, а из ярлыка на рабочем столе или из панели задач.

То адрес рабочей папки был C:/Windows/System32, и если случайно ввести команду удаления или создания файла, то мы портим важную системную папку. Обойти возможно используя аналог .bashrc или /etc/profile или .profile.

Но просто создать файл .profile мало, BusyBox для Windows их не считывает, для этого необходимо добавить путь к этому файлу в ENV в “Переменные среды”.

Теперь мы можем написать скрипт, который будет настраивать рабочую директорию при запуске консоли.
#!/bin/bash
domain=$(echo $PWD | tr '[:upper:]' '[:lower:]')
if [ $domain = "c:/windows/system32" ]; then cd $HOME
fiТеперь если мы запустили терминал из ярлыка или панели задач, то рабочей директорией по умолчанию становится домашняя папка пользователя, а если мы запускаем из конкретной папки то, она и становится рабочей директорией.
Мы получили Bash в Windows Terminal с удобной начальной директорией.
Терминал (или командная строка) — это программный интерфейс, который позволяет взаимодействовать с операционной системой путем ввода текстовых команд. Терминал предоставляет пользователю возможность выполнения различных операций и управления компьютером или сервером без необходимости использования графического интерфейса.
Пользователь вводит текстовые команды для выполнения различных действий, таких как перемещение по файловой системе, управление процессами, установка программ и многое другое. Терминал позволяет пользователям просматривать, создавать, изменять и управлять файлами и каталогами на компьютере. Терминал позволяет пользователям создавать скрипты (наборы команд), что обеспечивает возможность автоматизировать рутинные задачи и повысить производительность.
Терминал позволяет администраторам удаленно управлять компьютерами или серверами по сети через протоколы, такие как SSH (Secure Shell). С использованием терминала пользователи могут настраивать различные параметры системы, устанавливать программное обеспечение, обновлять систему и многое другое.
Терминал предоставляет более гибкий и мощный способ управления системой по сравнению с графическим пользовательским интерфейсом (GUI) в определенных случаях. Он предоставляет пользователям больше контроля и возможностей для настройки системы, работая непосредственно с командами.
Использование терминала может быть полезным для более продвинутых пользователей, разработчиков, системных администраторов и всех, кому удобнее работать с текстовыми командами.
Терминал используют как фронтенд-, так и бэкенд-разработчики. Первым он полезен в создании и управлении проектами (в основном npm и git), а вторым — для управления ресурсами на сервере.
Сегодня мы поговорим о самом минимальном наборе команд, которые нужны начинающим разработчикам. То есть о тех, без которых невозможно выполнять ежедневные задачи.
Интерфейс терминала представляет собой командную строку, в которой вы вводите команды.

Для git есть множество оболочек, но терминал всё равно остаётся востребованным для работы с ним, так как позволяет более прозрачно управлять процессом.
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка
Только проверенные нейросети с доступом из России и свободным использованием
ТОП-100 площадок для поиска работы от GeekBrains
Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽
Уже скачали 29052
Основные команды для работы в терминале
pwd — полный путь до папки, в которой находитесь сейчас:

ls — просмотр содержимого открытой папки:

У команд есть ключи — например, можно написать команду ls с ключом -a и увидеть список всех файлов, в том числе скрытых. Как правило, у всех команд терминала есть такие дополнительные ключи. Их может быть довольно много — например, как в списке ключей для команды ls.
ls -la выводит дополнительную информацию (о правах, владельце, дате редактирования и размере).

ls путь до папки поможет посмотреть содержимое в папке, в которую вы прокладываете навигацию относительно вашего текущего места. Например, вы находитесь в папке ~geekbrains и хотите просмотреть файлы в ~geekbrains/adaptive — тогда вам нужно написать ls adaptive.
Студенты курсов GeekBrains наверняка уже знают, что названия папок и файлов в проектах пишутся с маленьких букв и без пробелов — так удобнее.
Лайфхак: если вы начнёте набирать имя папки и нажмёте Tab, то сработает автокомплит (автодополнение) и терминал сам подставит оставшиеся буквы. Это часто спасает от опечаток в названиях.

cd название папки прокладывает навигацию к любой папке. Это происходит примерно по той же схеме, что в проводнике или Finder.

cd .. — поднимает вас на один уровень в файловой системе. Например, если находились в ~geekbrains/adaptive, то после команды окажетесь в ~geekbrains. Также можно использовать запись cd ../.. — так вы подниметесь на два уровня. Уточним пример: будем использовать pwd, чтобы видеть, где мы находимся, и ls, чтобы смотреть содержимое папок:

mkdir название папки — создаёт папку. В примере сначала и в конце просматриваем папки при помощи ключа ls, чтобы убедиться, что папка создалась:

touch название файла — создаёт файл, а также указывает расширение, например touch index.html. На скриншоте при первой команде ls ничего не вывелось в терминал, потому что папка была пустой.

Дарим скидку от 60%
на курсы от GeekBrains до 14 июля
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей


cat название — показывает текстовое содержимое файла. На скриншоте видим его у файла index.html, открытого в VSCode, а также наблюдаем вывод в консоли.

mv старое_имя новое_имя — переименовывает файл:

rm имя файла — удаляет его:

cp путь до файла, который копируем, и путь, куда помещаем копию (и имя, если нужно) — создаёт копию, также может переименовать файл при необходимости:

clear — очищает консоль от предыдущих команд и выводов.
node файл — запускает js-файл. Чтобы это сделать, нужно установить на свой компьютер node. В примере использован файлик со строкой, поэтому в консоли появляется вывод «script»:
Только до 15.07

ТОП-100 площадок для поиска работы от GeekBrains

20 профессий 2023 года, с доходом от 150 000 рублей

Чек-лист «Как успешно пройти собеседование»

В этой статье мы рассказали лишь о небольшой части команд для работы с терминалом — необходимом минимуме для новичков. Если вам будет интересно прочитать про другие команды, напишите в комментариях.
Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером
Командная строка
Основы командной строки
Для работы с командной строкой понадобятся две вещи: терминал и командная оболочка. В этом уроке вы узнаете, как они работают и чем отличаются друг от друга.
Терминал
Терминалом называют программу, которая эмулирует поведение железного терминала, состоящего из клавиатуры и монитора. В простейшем случае — это просто окошко с командной строкой внутри:
Хороший терминал все же не ограничивается одним окном, а позволяет открывать новые терминалы в табах — по такому же принципу, как работают вкладки в браузере.
Некоторые терминалы позволяют делать сплиты, то есть разделять окно на части. Этот довольно удобный механизм есть, например, в :
Хорошие терминалы также умеют восстанавливать завершенную сессию, создавать профили под разные задачи и многое другое.
Командная оболочка
Командная оболочка — программа, через которую пользователь или администратор управляет операционной системой и установленными программами, используя командную строку. У этого понятия множество синонимов — shell, командный интерпретатор и командный процессор.
Оболочка — это лишь средство для выполнения определенных задач, а не сама задача. Этим она отличается от многих других программ.
Внутри терминала пользователь передает системе строки:
Каждая строка — это команда, которую система должна выполнить. После ввода команды обязательно нажать Enter, только в этом случае команда отправится на исполнение. После нажатия Enter отредактировать команду уже нельзя.
Оболочка запускается внутри терминала и приглашает ко вводу команд:
~█Рассмотрим фрагмент кода подробнее. Мы видим:
- Символ
$— он используется как разделитель - Слева от
$— настраиваемое сообщение для вывода, обычно это текущая директория - Справа от
$— команда, которую вводит пользователь
Все примеры в дальнейшем будут демонстрироваться без этого сообщения и символа. Рассмотрим для примера команду date, которая выводит текущую дату:
Sun Aug 26 14:02:59 CEST 2018
██Командная оболочка позволяет запускать на выполнение установленные программы. Но это далеко не все, на что она способна. Для комфортной работы полезно иметь:
- Автоматическое завершение имен программ и файлов
- Историю введенных команд
- Возможность перемещаться по файловой системе
- Удобные горячие клавиши
- Поддержку скриптов
Далее в курсе мы раскроем многие из этих аспектов.
Командные оболочки и терминалы бывают разные, хотя по умолчанию в большинстве операционных систем стоит .
Отдельно скажем, что командная оболочка и терминал — не одно и то же. Терминал — это программа, которая запускает командную оболочку внутри себя:
Как вы увидите далее, командная оболочка — это полноценная среда программирования. Многие команды являются стандартными конструкциями любого языка программирования: переменными, циклами или условиями. Кроме того, некоторые команды являются программами, а некоторые — нет. В ближайших уроках для простоты мы будем говорить слово «команда», но потом объясним разницу.
Командную оболочку нередко называют реплом от английского REPL (Read-Eval-Print-Loop). Это сокращение отражает способ взаимодействия командной оболочки с пользователем:
- Read — оболочка ждет ввода команды от пользователя
- Eval — исполняет введенную команду
- Print — выводит результат
- Loop — возвращаемся к первому пункту
Этот процесс называется интерактивной сессией: после загрузки командная оболочка ждет ввода команды, исполняет ее, выводит результат и снова ждет ввода команды. Так происходит до тех пор, пока не будет дана команда на выход из терминала или выключение компьютера.
REPL — широко распространенный способ взаимодействия с пользователем. В следующих курсах вы увидите, что он есть и у баз данных, и у языков программирования.
Чтобы вам было удобнее выполнять задания к урокам, в среде Хекслета сразу запущено два терминала. Терминалы доступны в нижних вкладках под именами Terminal 1 и Terminal 2.
Во время изучения и экспериментов достаточно легко допустить ошибки. Всегда внимательно читайте вывод, в случае паники переоткройте терминал. Это позволит начать все с чистого листа.
Самостоятельная работа
Чтобы научиться работать в командной строке, нужно как можно больше практиковаться в терминале на вашем компьютере.
Сначала нужно установить терминал. Установка зависит от вашей операционной системы:
Если вы работаете с ОС Windows, вам потребуется использовать
Далее убедитесь, что внутри терминала можно запустить bash-сессию. Откройте терминал и введите такой текст:
/bin/bash # Это вывод команды, которую вы ввели выше
Дополнительные материалы

Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером
Навигация
Основы командной строки
После запуска операционной системы с графической оболочкой мы попадаем в специальную рабочую область, которую часто называют рабочий стол. Это центральная точка входа, откуда через разные пункты меню начинается работа, запускаются разные задачи. Например, для навигации по файловой системе понадобится проводник.
В командной строке все устроено иначе: после загрузки системы мы попадаем в режим ожидания ввода команды. Этот режим привязан к файловой системе. Можно сказать, что мы всегда находимся внутри какой-то директории, которую называют рабочей директорией (working directory).
В этом уроке мы поговорим о навигации по директориям через командную оболочку.
Как проверить, в какой директории мы находимся
Начнем с самого основного. Проверить, в какой директории мы сейчас находимся, можно командой pwd:
/Users/guestКстати, название команды pwd — это сокращение, которое расшифровывается как print working directory. Похожим образом устроены имена многих команд, что позволяет легче и быстрее их запомнить.
По умолчанию новая сессия командной оболочки открывается внутри домашней директории пользователя. У каждого пользователя своя домашняя директория, поэтому в вашем случае путь будет отличаться.
В приведенном примере есть две неожиданности для тех, кто привык пользоваться Windows:
- В начале указан не диск, а единый корневой каталог
/. Это вершина файловой системы, внутри которой лежат все остальные файлы и директории - Вместо обратных слэшей
\используются прямые слэши/
Подробнее о различиях и файловой структуре мы поговорим в одном из следующих уроков, а сейчас сосредоточимся на навигации.
Как посмотреть список файлов
Изучим команду ls (сокращение от list). Она выводит список файлов и директорий в текущей рабочей директории:
Desktop Documents Downloads Library Movies Music Pictures PublicКак переместиться в другую директорию
Еще одна полезная команда — cd (сокращение от change directory). С помощью нее мы перемещаемся по файловой структуре. Для этого ей нужно передать аргумент — директорию, в которую необходимо переместиться:
# Входим в директориюMusic# Смотрим ее содержимоеiTunes# Смотрим текущую рабочую директорию/Users/guest/Music# Если имя директории содержит пробел, то его нужно экранировать с помощью `\`BestmusicОстановимся на этом моменте подробнее. Возможно, вы знаете, что есть два способа обозначить путь до файла:
- Абсолютный путь начинается от корня
- Относительный путь начинающийся от текущей рабочей директории
Выше мы указали относительный путь. Отличить их друг от друга очень легко:
- Абсолютный — первым символом в пути идет
/ - Относительный — во всех остальных случаях
Команда cd понимает и абсолютные, и относительные пути. Поэтому передавать ей можно что угодно:
# Неважно, в каком месте /Users/guest/Music # Абсолютный путьЕще раз проговорим, что абсолютный путь однозначно определяет адрес файла или директории в файловой системе, а относительный — нет.
Поэтому относительный путь стоит использовать только вместе с текущей рабочей директорией, относительно которой он считается. При передаче абсолютного пути не имеет никакого значения, какая сейчас рабочая директория. Если путь существует, то переход произойдет.
/Users/guestНо есть путь проще. Можно указать специальное значение .. и перейти на директорию уровнем выше:
..
/Users/guestБолее того, с помощью этого заполнителя можно выходить на любое количество уровней, указывая .. через разделитель:
# Выходим на два уровня вверх ../..
/UsersИногда в пути используется одинарная точка, которая означает текущую директорию. Например, вместо cd Music можно писать cd ./Music — разницы между этими выражениями нет.
# Из любого места/Users/guestНу и, наконец, четвертый вариант. Домашняя директория пользователя имеет специальное обозначение — ~ (). В момент выполнения команды тильда заменяется на абсолютный путь. Поэтому из любого места можно напрямую перейти в любую поддиректорию домашней директории:
# Из любого места ~/Music
/Users/guest/MusicДопустим, вы находитесь в домашней директории и хотите посмотреть файлы в поддиректории Music. Один способ вы уже знаете — для этого нужно перейти в директорию Music и выполнить программу ls.
Как обычно, есть другой способ. Команда ls также может принимать на вход аргумент — директорию, которую нужно проанализировать:
Music
iTunesКак и в случае с командой cd, к аргументу ls применимы понятия абсолютных и относительных путей. Впрочем, это правило распространяется на большинство случаев, где передаются пути.
Команда cd - возвращает в предыдущую директорию. Другими словами, последовательный вызов этой команды переключает между двумя последними посещенными директориями.
Команды cd, ls и pwd вместе составляют основу навигации по файловой структуре. Зная их, вы никогда не потеряетесь и не запутаетесь.
Со временем набирать пути становится все более лениво. Тогда можно дважды нажать Tab и воспользоваться автокомплитом — функцией, которая автоматически завершает имена.
Самостоятельная работа
Изучите содержимое директорий своей файловой системы. При перемещении между разделами с помощью команды cd используйте клавишу Tab для автозаполнения.

Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Не для кого не секрет, что некоторые типичные действия на компьютере проще быстрее и эффективнее выполнить из-под командной строки нежели мышкой в GUI explorer(e).
Поэтому в этом тексте я хотел бы поделиться командами, которые мне очень часто помогают в повседневной работе.
То что я тут напишу этим обычно не делятся. Как правило у каждого разработчика есть свой потайной сheat-list полезных консольных команд для выполнения какой-либо работы.
Наверное этот текст также обидит чувства Windows пользователей, так как тут по сути предлагается использовать Unix(овые) утилиты в OS Windows. Многие пользователи Windows, которых я знаю религиозно презирают Linux и всё, что с этим связано. Предвижу что текст уйдет в глубокий минус.
Пользоваться Unix утилитами в OS Windows это тоже, что если бы американские солдаты во время своих зверств во Вьетнаме бросали бы свои винтовки M-16, а пользовались бы исключительно и только автоматами Калашникова. Однако, тем не менее, и такое было!
Но на самом деле нет ничего плохого в том что на Windows 10 запускать Unix утилиты. Это лишь подчёркивает тот факт, что хороший компьютер это, прежде всего, универсальный вычислитель.
Итак, Unix(овые) утилиты для командной строки можно с легкость отрабатывать и в операционной системе Windows, если установить GIT и открыть консоль GIT.

Также их можно установить из CygWin или MinGW.

Полезные команды в интерпретаторе Bash
26–На работе мне в мессенджер Junior программисты микроконтроллеров часто пишут личные сообщения типа:
Для этого есть очень простой шаблон на основе утилиты grep. Открываешь папку корня workspace репозитория и набираешь команду
grep -rn "UsecToStr(" | grep "\.c:"Тут опция -r значит искать во всех папках, -n значит показывать в отчете номер строки на которой обнаружилась искомая подстрока. В общем, ступенчатый grep способен найти даже иголку в стоге сена!
Правда в том, что если у Вас локально на SSD/HDD диске есть Си-код и Вы знаете и умеете пользоваться утилитой grep, то Вам в принципе не нужна никакая другая документация для кода! Любую информацию Вы сможете извлечь при помощи grep запросов.
1–Показать абсолютный путь к утилите, например grep
where grep2–Рекурсивно заменить слово old_word на new_word во всех файлах внутри директории.
grep -rl oldtext . | xargs sed -i 's/oldtext/newtext/g'Тут для grep -r означает, что искать внутри папок рекурсивно, -l означает показывать только пути к файлам. Для sed -i означает, что замена слова будет произведена прямо в этом же файле (in place), s означает что надо заменить первый токен на второй токен, флаг g заменяет все вхождения заменяемого токена.
Также бывает очень полезно сделать автоматическую замену предложения в конкретном файле. Это часто происходит из-за несовместимости между настройками IDE Eclipse в файле .cproject. Чинится это так.
sed -i -e 's/ARM family/Arm family (-mcpu)/g' .cproject
sed -i -e 's/"GNU Tools for ARM Embedded Processors"/"xPack GNU Arm Embedded GCC"/g' .cproject25–Во всех файлах в этой папке (включая вложенные папки с файлами) удалить все строки в которых есть ключевое слово KeyWord, начиная с данной директории
find . -type f -print0 | xargs -0 sed -i /KeyWord/dВообще с командой sed надо быть очень осторожным! Sed может тихо изменить там, где это не следует (например *.ewp настройки проекта в IAR), и потом не откроется проект в вашей любимой GUI-IDE. Как следствие Вы не сможете больше никогда собрать свой проект. И у Вас могут начаться из-за этого паника, судороги и конвульсии.
3–Показать размер папок
du -a --max-depth=1 | sort -n4–Показать переменные окружения. Это очень частая команда для проверки системы перед сборкой.
env5–Найти все файлы с расширением .bak
find . -type f -name "*.bak"6–Удалить все файлы с расширением .bak
find . -type f -name "*.bak" -delete7–Открыть все *.mk файлы
for f in $(find . -name '*.mk' -not -name "sub"); do start Notepad++ $f; done8–Удалить строку 35 из файла file.doti
sed -i '35d' file.doti9–Найти все директории с именем Drivers в данной папке
find . -name 'Drivers' -type d10–Найти *.с и *.mk файлы в локальном GIT репозитории
git status | grep -e "\.mk" -e "\.[ch]" | grep -v "\.cmake" | grep -v "\.html"11–Отсортировать процессы по потреблению RAM
tasklist | sort -k512–Узнать количество свободно места на диске
df -h13–Показать размер папок
du -hs * | sort -hr14–Установить переменную окружения в Bash
export var=some_valueВ консоли Windows cmd переменные окружения устанавливаются так
set VAR_NAME=VAR_VALUE15–Удалить папку со всем её содержимым.
rm -rf folder_to_delete16–Отсортировать строки по конкретной колонке.
sort -nr -k6 -t'|' LoRaByteRatesTable.txt -o LoRaByteRatesTable_sorted.txt17–Найти все файлы больше 10Mbyte.
find -type f -size +10M18–Поиск файла по расширению *.s.
find . -name '*.s' 19– Команда, которая ищет во всех файлах проекта места с упоминанием ключевого слова “LED”, причем только в файлах board.h
grep -rn LED | grep board.hЭто команда приведена только для примера, что через консоль можно делать поиск поверх предыдущего поиска. Так называемый многоступенчатый поиск. Встроенному поиску из-под GUI-IDE такое даже и не снилось.
20–Показать состояния TCP соединений.
netstat -n -p TCPОпция -n показать IP адрес и локальный порт, -p значит указать название протокола
21– Автоматически отсортировать строчки в конфиг файле по алфавиту и еще при этом удалить повторения.
sort.exe -u config.mk -o config.mkМега полезная команда так как после нее образуется минимальный diff в утилите WinMerge. Эту команду вообще надо прописать в скрипты сборки кода.
22–Показать все файлы с расширением *.mk в git репозитории
git status | grep "\.mk"Вообще консольный git и grep это не иначе как неразрывные друзья! Можно также найти все файлы любого другого расширения. Выбрать то, что вы хотите зафиксировать и сделать очень прицельный и аккуратный коммит.
23–Типичная ситуация. Вы делаете git pull и получаете вот такую картинку.

Проблема это сообщение
Для того чтобы загрузить изменения из удаленного репозитория и продолжить работу надо переименовать папку nrf5340_dk_nortos_max98357a_m. И естественно это можно сделать из командной строки. Грубо говоря, не отходя от кассы.
mv source/projects/nrf5340_dk_nortos_max98357a_m/ source/projects/nrf5340_dk_nortos_max98357a_m_old7И также надо переименовать файл flash_preconfig.mk из командной строки. Делает это команда mv
mv source/mcal/mcal_common/flash/flash_preconfig.mk source/mcal/mcal_common/flash/flash_preconfig_old.mkДалее уже имея две папки (локальная и от удаленного репозитория) можно сравнить две версии в культовой утилите WinMerge и выбрать лучшее из обоих версий файлов для сборки очередной прошивки.
27– Иной раз надо целиком скопировать одну папку в другую папку без лишних вопросов о подтверждении действий. Для этого существует Windows утилита robocopy
robocopy dir/source_dir dir/destination_dir /SТут /S означает копировать поддиректории за исключением пустых директорий
24– Найти все папки в которых отсутствуют файлы с расширением *.gvi
comm -3 <(find . -type f -name ".gvi" -exec dirname {} ; |sort -u) <(find . -type d |sort -u)Сначала строится список всех локальных директорий, которые содержат файлы *.gvi,
find . -type f -name ".gvi" -exec dirname {} этот список всех локальных директорий, которые содержат файлы *.gvi сортируется.
find . -type f -name "*.gvi" -exec dirname {} ; |sort -uЗатем строится просто список всех локальных директорий
find . -type dсписок всех локальных директорий тоже сортируется.
find . -type d |sort -uПосле чего эти списки сравниваются и подавляются строчки фигурирующий в обоих файлах (comm –3). Остаются только строчки, которые показывают те папки в которых нет какого-либо специфического расширения.
Это очень удобная команда для самопроверки факта окончания работы по какому-либо программному компоненту. Например добавлению *.cmake файлов в кодовую базу
28– Показать количество строк Си-кода во всей локальной кодовой базе
find . -name '*.[ch]' -type f -print0 | xargs -0 cat | wc -lЭто очень полезная команда для оценки масштаба репозитория с которым приходится работать. Например сейчас у меня репозиторий в котором лежит 8.7 миллионов строк кода.
29–Взять все файлы в этой папке и в каждом имени файла переименовать подстроку at24c02mtr на at24cxx
find . -type f -exec rename -v at24c02mtr at24cxx {} \;Эта очень удобная команда, когда надо написать программный компонент по образу и подобию другого программного компонента. Сначала переименовываем названия файлов (find+rename)

а потом переименовывает ключевые слова в самих файлах (grep+sed)
grep -rl oldtext . | xargs sed -i 's/oldtext/newtext/g'и “Вуаля”! Вся работа выполнена двумя строчками кода в командной строке!
Как видите, использование командной строки CLI позволяет снизить утомляемость от напряжения внимания и, как следствие, существенно повысить производительность работы за персональным компьютером PC.
Если говорить метафорично, то утилиты Unix – это как химическая посуда (пробирки, колбы, делительные воронки, мензурки, воронки, фильтры, капельницы, часовые стекла, стеклянные палочки), только применительно к данным (числам и тексту). Видимо авторы UNIX в 196х-197х были серьезно вдохновлены химией при разработке компьютерных консольных утилит. Согласитесь, что ну невозможно не заметить этих аналогий между UNIX утилитами и химической посудой.

Если Вы тоже знаете какие-либо простые элегантные и главное полезные консольные команды, то пишите их в комментариях. Не обязательно из bash можно и из cmd или вообще из powershell(а). Лишь бы эти команды умещались в одну строку.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы пользуетесь за компьютером командной строкой?
Проголосовали 177 пользователей. Воздержались 7 пользователей.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
В какой операционной системе вы обычно работаете?
Проголосовали 202 пользователя. Воздержались 6 пользователей.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Откуда вы берете Unix(овые) утилиты для Windows?
Проголосовали 53 пользователя. Воздержались 82 пользователя.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы пользуетесь утилитой grep?
Проголосовали 172 пользователя. Воздержались 11 пользователей.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы пользуетесь GIT(ом)?
Проголосовали 177 пользователей. Воздержались 8 пользователей.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Какой консолью Вы чаще пользуетесь?
Я не пользуюсь консолью. Я предпочитаю пользоваться курсором мышки и изредка горячими клавишами.
Проголосовали 39 пользователей. Воздержались 2 пользователя.
66.2.7. Обзор основных команд системы
Все команды, приведенные ниже, могут быть запущены в режиме консоли. Для получения более подробной информации используйте команду man. Пример:
$manls
Параметры команд обычно начинаются с символа «-», и обычно после одного символа «-» можно указать сразу несколько опций. Например, вместо команды ls -l -F можно ввести команду ls -lF
Учетные записи пользователей
Команда
suпозволяет изменить «владельца» текущего сеанса (сессии) без необходимости завершать сеанс и открывать новый.su[ОПЦИИ...] [ПОЛЬЗОВАТЕЛЬ]Команду можно применять для замены текущего пользователя на любого другого, но чаще всего она используется для получения пользователем прав суперпользователя (root).
При вводе команды
su -будет запрошен пароль суперпользователя (root), и, в случае ввода корректного пароля, пользователь получит права администратора. Чтобы вернуться к правам пользователя, необходимо ввести команду:exitКоманда
idвыводит информацию о пользователе и группах, в которых он состоит, для заданного пользователя или о текущем пользователе (если ничего не указано).id[ОПЦИИ...] [ПОЛЬЗОВАТЕЛЬ]Команда
passwdменяет (или устанавливает) пароль, связанный с входным_именем пользователя.Обычный пользователь может менять только пароль, связанный с его собственным входным_именем.
Команда запрашивает у обычных пользователей старый пароль (если он был), а затем дважды запрашивает новый. Новый пароль должен соответствовать техническим требованиям к паролям, заданным администратором системы.
Основные операции с файлами и каталогами
Команда
ls(list) печатает в стандартный вывод содержимое каталогов.ls[ОПЦИИ...] [ФАЙЛ...]-a— просмотр всех файлов, включая скрытые;-l— отображение более подробной информации;-R— выводить рекурсивно информацию о подкаталогах.
Команда
cdпредназначена для смены каталога. Команда работает как с абсолютными, так и с относительными путями. Если каталог не указан, используется значение переменной окружения$HOME(домашний каталог пользователя). Если каталог задан полным маршрутным именем, он становится текущим. По отношению к новому каталогу нужно иметь право на выполнение, которое в данном случае трактуется как разрешение на поиск.cd[-L|-P] [КАТАЛОГ]Если в качестве аргумента задано «-», то это эквивалентно
$OLDPWD. Если переход был осуществлен по переменной окружения$CDPATHили в качестве аргумента был задан «-» и смена каталога была успешной, то абсолютный путь нового рабочего каталога будет выведен на стандартный вывод.находясь в домашнем каталоге перейти в его подкаталог
docs/(относительный путь):cddocs/сделать текущим каталог
/usr/bin(абсолютный путь):cd/usr/bin/сделать текущим родительский каталог:
cd..вернуться в предыдущий каталог:
cd-сделать текущим домашний каталог:
cd
Команда
pwdвыводит абсолютный путь текущего (рабочего) каталога.-P— не выводить символические ссылки;-L— выводить символические ссылки.
Команда
rmслужит для удаления записей о файлах. Если заданное имя было последней ссылкой на файл, то файл уничтожается.Удалив файл, вы не сможете его восстановить!
rm[ОПЦИИ...]<ФАЙЛ>-f— никогда не запрашивать подтверждения;-i— всегда запрашивать подтверждение;-r, -R— рекурсивно удалять содержимое указанных каталогов.
Пример. Удалить все файлы
htmlв каталоге~/html:rm-i~/html/*.htmlmkdir— команда для создания новых каталогов.mkdir[-p] [-m права] <КАТАЛОГ...>Команда
rmdirудаляет каталоги из файловой системы. Каталог должен быть пуст перед удалением.rmdir[ОПЦИИ...] <КАТАЛОГ...>-p— удалить каталог и его потомки.
Команда
rmdirчасто заменяется командойrm, которая позволяет удалять каталоги, даже если они не пусты.-rfКоманда
cpпредназначена для копирования файлов из одного в другие каталоги.cp[-fip] [ИСХ_ФАЙЛ...] [ЦЕЛ_ФАЙЛ...]cp[-fip] [ИСХ_ФАЙЛ...] [КАТАЛОГ]cp[-R] [[-H] | [-L] | [-P]] [-fip] [ИСХ_ФАЙЛ...] [КАТАЛОГ]-p— сохранять по возможности времена изменения и доступа к файлу, владельца и группу, права доступа;-i— запрашивать подтверждение перед копированием в существующие файлы;-r, -R— рекурсивно копировать содержимое каталогов.
Команда
mvпредназначена для перемещения файлов.mv[-fi] [ИСХ_ФАЙЛ...] [ЦЕЛ_ФАЙЛ...]mv[-fi] [ИСХ_ФАЙЛ...] [КАТАЛОГ]В первой синтаксической форме, характеризующейся тем, что последний операнд не является ни каталогом, ни символической ссылкой на каталог,
mvперемещает исх_файл в цел_файл (происходит переименование файла).Во второй синтаксической форме
mvперемещает исходные файлы в указанный каталог под именами, совпадающими с краткими именами исходных файлов.-f— не запрашивать подтверждения перезаписи существующих файлов;-i— запрашивать подтверждение перезаписи существующих файлов.
Команда
catпоследовательно выводит содержимое файлов.cat[ОПЦИИ...] [ФАЙЛ...]-n, --number— нумеровать все строки при выводе;-E, --show-ends— показывать $ в конце каждой строки.
Если файл не указан, читается стандартный ввод. Если в списке файлов присутствует имя «-», вместо этого файла читается стандартный ввод.
Команда
headвыводит первые 10 строк каждого файла на стандартный вывод.head[ОПЦИИ] [ФАЙЛ...]-q, --quiet— не печатать заголовки с именами файлов.
Команда
lessпозволяет постранично просматривать текст (для выхода необходимо нажать ).Команда
grepимеет много опций и предоставляет возможности поиска символьной строки в файле.grep[шаблон_поиска] <ФАЙЛ>
Команда
findпредназначена для поиска всех файлов, начиная с корневого каталога. Поиск может осуществляться по имени, типу или владельцу файла.find[-H] [-L] [-P] [-Oуровень] [-D help|tree|search|stat|rates|opt|exec] [ПУТЬ…] [ВЫРАЖЕНИЕ]Ключи для поиска:
-name— поиск по имени файла;-type— поиск по типу f=файл, d=каталог, l=ссылка(lnk);
Когда выполняется команда
find, можно выполнять различные действия над найденными файлами. Основные действия:execdir команда \;— то же самое что и-exec, но команда вызывается из подкаталога, содержащего текущий файл;-ok команда— эквивалентно-execза исключением того, что перед выполнением команды запрашивается подтверждение (в виде сгенерированной командной строки со знаком вопроса в конце) и она выполняется только при ответе: «y»;-print— вывод имени файла на экран.
Путем по умолчанию является текущий подкаталог. Выражение по умолчанию
-print.найти в текущем каталоге обычные файлы (не каталоги), имя которых начинается с символа «~»:
find. -type f -name "~*" -printнайти в текущем каталоге файлы, измененные позже, чем файл
file.bak:find. -newer file.bak -type f -printудалить все файлы с именами
a.outили*.o, доступ к которым не производился в течение недели:find/ \( -name a.out -o -name '*.o' \) \ -atime +7 -exec rm {} \;удалить из текущего каталога и его подкаталогов все файлы нулевого размера, запрашивая подтверждение:
find. -size 0c -ok rm {} \;
whereisсообщает путь к исполняемому файлу программы, ее исходным файлам (если есть) и соответствующим страницам справочного руководства.whereis[ОПЦИИ...] <ФАЙЛ>-b— вывод информации только об исполняемых файлах;-m— вывод информации только о страницах справочного руководства;-s— вывод информации только об исходных файлах.
Мониторинг и управление процессами
Команда
psотображает список текущих процессов.По умолчанию выводится информация о процессах с теми же действующим UID и управляющим терминалом, что и у подающего команду пользователя.
-a— вывести информацию о процессах, ассоциированных с терминалами;-f— вывести «полный» список;-l— вывести «длинный» список;-p список— вывести информацию о процессах с перечисленными в списке PID;-u список— вывести информацию о процессах с перечисленными идентификаторами или именами пользователей.
Команда
killпозволяет прекратить исполнение процесса или передать ему сигнал.kill[-s] [сигнал] [идентификатор] [...]kill[-l] [статус_завершения]kill[-номер_сигнала] [идентификатор] [...]Идентификатор — PID ведущего процесса задания или номер задания, предварённый знаком «%».
-l— вывести список поддерживаемых сигналов;-s сигнал, -сигнал— послать сигнал с указанным именем.
Если обычная команда
killне дает желательного эффекта, необходимо использовать командуkillс параметром-9(kill-9PID_номер).Команда
dfпоказывает количество доступного дискового пространства в файловой системе, в которой содержится файл, переданный как аргумент. Если ни один файл не указан, показывается доступное место на всех смонтированных файловых системах. Размеры по умолчанию указаны в блоках по 1КБ.df[ОПЦИИ] [ФАЙЛ...]--total— подсчитать общий объем в конце;-h, --human-readable— печатать размеры в удобочитаемом формате (например, 1K, 234M, 2G).
Команда
duподсчитывает использование диска каждым файлом, для каталогов подсчет происходит рекурсивно.du[ОПЦИИ] [ФАЙЛ...]-a, --all— выводить общую сумму для каждого заданного файла, а не только для каталогов;-c, --total— подсчитать общий объем в конце. Может быть использовано для выяснения суммарного использования дискового пространства для всего списка заданных файлов;-d, --max-depth=N— выводить объем для каталога (или файлов, если указано--all) только если она на N или менее уровней ниже аргументов командной строки;-S, --separate-dirs— выдавать отдельно размер каждого каталога, не включая размеры подкаталогов;-s, --summarize— отобразить только сумму для каждого аргумента.
Команда
whichотображает полный путь к указанным командам или сценариям.which[ОПЦИИ] <ФАЙЛ...>-a, --all— выводит все совпавшие исполняемые файлы по содержимому в переменной окружения$PATH, а не только первый из них;-c, --total— подсчитать общий объем в конце. Может быть использовано для выяснения суммарного использования дискового пространства для всего списка заданных файлов;-d, --max-depth=N— выводить объем для каталога (или файлов, если указано--all) только если она на N или менее уровней ниже аргументов командной строки;-S, --separate-dirs— выдавать отдельно размер каждого каталога, не включая размеры подкаталогов;--skip-dot— пропускает все каталоги из переменной окружения$PATH, которые начинаются с точки.
Альт Образование — это многозадачная система.
Для того чтобы запустить программу в фоновом режиме, необходимо набрать «» после имени программы. После этого оболочка даст возможность запускать другие приложения.
Так как некоторые программы интерактивны — их запуск в фоновом режиме бессмысленен. Подобные программы просто остановятся, если их запустить в фоновом режиме.
Можно также запускать нескольких независимых сеансов. Для этого в консоли необходимо набрать и одну из клавиш, находящихся в интервале от до . На экране появится новое приглашение системы, и можно открыть новый сеанс. Этот метод также позволяет вам работать на другой консоли, если консоль, которую вы использовали до этого, не отвечает или вам необходимо остановить зависшую программу.
Команда
bgпозволяет перевести задание на задний план.bg[ИДЕНТИФИКАТОР ...]Идентификатор — PID ведущего процесса задания или номер задания, предварённый знаком «%».
Команда
fgпозволяет перевести задание на передний план.fg[ИДЕНТИФИКАТОР ...]Идентификатор — PID ведущего процесса задания или номер задания, предварённый знаком «%».
Сжатие и упаковка файлов
Сжатие и упаковка файлов выполняется с помощью команды
tar, которая преобразует файл или группу файлов в архив без сжатия (tarfile).Упаковка файлов в архив чаще всего выполняется следующей командой:
tar-cf [имя создаваемого файла архива] [упаковываемые файлы и/или каталоги]Пример использования команды упаковки архива:
tar-cf moi_dokumenti.tar Docs project.texРаспаковка содержимого архива в текущий каталог выполняется командой:
tar-xf [имя файла архива]Для сжатия файлов используются специальные программы сжатия:
gzip,bzip2и7z.
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
130 курсов, 2000+ часов теории
1000 практических заданий в браузере
360 000 студентов
Наши выпускники работают в компаниях:
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
130 курсов, 2000+ часов теории
1000 практических заданий в браузере
360 000 студентов
Наши выпускники работают в компаниях:
Как запустить терминал
Чтобы воспользоваться терминалом, нужно запустить Git Bash:

Git Bash выглядит очень похоже с терминалом Linux — здесь вводятся команды, о которых мы будем говорить дальше:





