Навигация основы командной строки

Время на прочтение

Для пользователя Linux командная строка Windows кажется чем-то непривычным и неудобным. С появлением WSL казалось, что проблема использования Bash решена, но запуск виртуальной машины требует времени, да и пути в WSL отличаются от Windows. Плюс скорость файловых операций на виртуальной машине хуже.

Ещё есть возможность использовать Bash через MSYS2, но мне хотелось найти что-то более компактное и легковесное, а также простое в настройке и установке.

Так как я часто использовал Linux на роутерах, то познакомился с BusyBox, набор UNIX-утилит командной строки, используемой в качестве основного интерфейса во встраиваемых операционных системах. Оказалось, есть версия BusyBox для Windows. В 2020 году появился Windows Terminal, а в нем есть возможность создавать вкладку с запуском конкретной программы.

Пример вкладки Bash
Пример вкладки Bash

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

Список программ входящих в BusyBox
Список программ входящих в BusyBox
Профиль для Bash
Профиль для Bash

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

Запуск терминала из конкретной папки
Запуск терминала из конкретной папки

То адрес рабочей папки был 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 есть множество оболочек, но терминал всё равно остаётся востребованным для работы с ним, так как позволяет более прозрачно управлять процессом.

pdf иконка

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

Поможет разобраться в актуальной ситуации на рынке труда

doc иконка

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

pdf иконка

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

Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

Уже скачали 29052 pdf иконка

Основные команды для работы в терминале

pwd — полный путь до папки, в которой находитесь сейчас:

Основные команды для работы в терминале

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

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

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

ls -la выводит дополнительную информацию (о правах, владельце, дате редактирования и размере).

ls -la

ls путь до папки поможет посмотреть содержимое в папке, в которую вы прокладываете навигацию относительно вашего текущего места. Например, вы находитесь в папке ~geekbrains и хотите просмотреть файлы в ~geekbrains/adaptive — тогда вам нужно написать ls adaptive. 

Студенты курсов GeekBrains наверняка уже знают, что названия папок и файлов в проектах пишутся с маленьких букв и без пробелов — так удобнее.

Лайфхак: если вы начнёте набирать имя папки и нажмёте Tab, то сработает автокомплит (автодополнение) и терминал сам подставит оставшиеся буквы. Это часто спасает от опечаток в названиях.

ls путь

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

cd 

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

cd

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

mkdir

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

touch название файла 

Дарим скидку от 60%
на курсы от GeekBrains до 14 июля

Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей

Навигация основы командной строки
Навигация основы командной строки

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

cat название

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

mv старое_имя новое_имя 

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

rm имя файла 

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

cp путь до файла

clear — очищает консоль от предыдущих команд и выводов.

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

Только до 15.07

Навигация основы командной строки
ТОП-100 площадок для поиска работы от GeekBrains

Навигация основы командной строки
20 профессий 2023 года, с доходом от 150 000 рублей

Навигация основы командной строки
Чек-лист «Как успешно пройти собеседование»

Чтобы получить файл, укажите e-mail:

Введите e-mail, чтобы получить доступ к документам

Подтвердите, что вы не робот,
указав номер телефона:

Введите телефон, чтобы получить доступ к документам

Навигация основы командной строки
Уже скачали 52300

node файл

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

Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Командная строка

Основы командной строки

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

Терминал

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

Терминал

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

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

Сплиты в Iterm2

Хорошие терминалы также умеют восстанавливать завершенную сессию, создавать профили под разные задачи и многое другое.

Командная оболочка

Командная оболочка — программа, через которую пользователь или администратор управляет операционной системой и установленными программами, используя командную строку. У этого понятия множество синонимов — shell, командный интерпретатор и командный процессор.

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

Внутри терминала пользователь передает системе строки:

Terminal

Каждая строка — это команда, которую система должна выполнить. После ввода команды обязательно нажать Enter, только в этом случае команда отправится на исполнение. После нажатия Enter отредактировать команду уже нельзя.

Оболочка запускается внутри терминала и приглашает ко вводу команд:

~█

Рассмотрим фрагмент кода подробнее. Мы видим:

  • Символ $ — он используется как разделитель
  • Слева от $ — настраиваемое сообщение для вывода, обычно это текущая директория
  • Справа от $ — команда, которую вводит пользователь

Все примеры в дальнейшем будут демонстрироваться без этого сообщения и символа. Рассмотрим для примера команду date, которая выводит текущую дату:

Sun Aug 26 14:02:59 CEST 2018
█

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

  • Автоматическое завершение имен программ и файлов
  • Историю введенных команд
  • Возможность перемещаться по файловой системе
  • Удобные горячие клавиши
  • Поддержку скриптов

Далее в курсе мы раскроем многие из этих аспектов.

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

Отдельно скажем, что командная оболочка и терминал — не одно и то же. Терминал — это программа, которая запускает командную оболочку внутри себя:

Pipeline

Как вы увидите далее, командная оболочка — это полноценная среда программирования. Многие команды являются стандартными конструкциями любого языка программирования: переменными, циклами или условиями. Кроме того, некоторые команды являются программами, а некоторые — нет. В ближайших уроках для простоты мы будем говорить слово «команда», но потом объясним разницу.

Командную оболочку нередко называют реплом от английского 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:

  1. В начале указан не диск, а единый корневой каталог /. Это вершина файловой системы, внутри которой лежат все остальные файлы и директории
  2. Вместо обратных слэшей \ используются прямые слэши /

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

Как посмотреть список файлов

Изучим команду 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 grep

2–Рекурсивно заменить слово 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' .cproject

25–Во всех файлах в этой папке (включая вложенные папки с файлами) удалить все строки в которых есть ключевое слово KeyWord, начиная с данной директории

find . -type f -print0 | xargs -0 sed -i /KeyWord/d

Вообще с командой sed надо быть очень осторожным! Sed может тихо изменить там, где это не следует (например *.ewp настройки проекта в IAR), и потом не откроется проект в вашей любимой GUI-IDE. Как следствие Вы не сможете больше никогда собрать свой проект. И у Вас могут начаться из-за этого паника, судороги и конвульсии.

3–Показать размер папок

du -a --max-depth=1 | sort -n

4–Показать переменные окружения. Это очень частая команда для проверки системы перед сборкой.

env

5–Найти все файлы с расширением .bak

find . -type f -name "*.bak"

6–Удалить все файлы с расширением .bak

find . -type f -name "*.bak" -delete

7–Открыть все *.mk файлы

for f in $(find . -name '*.mk' -not -name "sub"); do start Notepad++ $f; done

8–Удалить строку 35 из файла file.doti

sed -i '35d' file.doti

9–Найти все директории с именем Drivers в данной папке

find . -name 'Drivers' -type d

10–Найти *.с и *.mk файлы в локальном GIT репозитории

git status | grep -e "\.mk" -e "\.[ch]" | grep -v "\.cmake" | grep -v "\.html"

11–Отсортировать процессы по потреблению RAM

tasklist | sort -k5

12–Узнать количество свободно места на диске

df -h

13–Показать размер папок

du -hs * | sort -hr

14–Установить переменную окружения в Bash

export var=some_value

В консоли Windows cmd переменные окружения устанавливаются так

set VAR_NAME=VAR_VALUE

15–Удалить папку со всем её содержимым.

rm -rf folder_to_delete

16–Отсортировать строки по конкретной колонке.

sort -nr -k6 -t'|' LoRaByteRatesTable.txt -o LoRaByteRatesTable_sorted.txt

17–Найти все файлы больше 10Mbyte.

find -type f -size +10M

18–Поиск файла по расширению *.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. Пример:

$ man ls

Параметры команд обычно начинаются с символа «-», и обычно после одного символа «-» можно указать сразу несколько опций. Например, вместо команды 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/ (относительный путь):

    cd docs/

  • сделать текущим каталог /usr/bin (абсолютный путь):

    cd /usr/bin/

  • сделать текущим родительский каталог:

    cd ..

  • вернуться в предыдущий каталог:

    cd -

  • сделать текущим домашний каталог:

    cd

Команда pwd выводит абсолютный путь текущего (рабочего) каталога.

  • -P — не выводить символические ссылки;

  • -L — выводить символические ссылки.

Команда rm служит для удаления записей о файлах. Если заданное имя было последней ссылкой на файл, то файл уничтожается.

Удалив файл, вы не сможете его восстановить!

rm [ОПЦИИ...] <ФАЙЛ>

  • -f —  никогда не запрашивать подтверждения;

  • -i —  всегда запрашивать подтверждение;

  • -r, -R — рекурсивно удалять содержимое указанных каталогов.

Пример. Удалить все файлы html в каталоге ~/html:

rm -i ~/html/*.html

mkdir — команда для создания новых каталогов.

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 -9 PID_номер).

Команда 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 — здесь вводятся команды, о которых мы будем говорить дальше:

Git Bash

:/>  Как называется вторая командная строка в виндовс