Терминал, командная строка, консоль, shell — как правильно?
Чем эти все термины отличаются друг для друга. Очень нужно понять, чтобы правильно написать мою следующую книгу.
Всем ответившим заранее спасибо.

Расширяемое средство автоматизации от Microsoft
Терминал, командная строка, консоль, shell — как правильно?
Чем эти все термины отличаются друг для друга. Очень нужно понять, чтобы правильно написать мою следующую книгу.
Всем ответившим заранее спасибо.
Продолжаю свои разборки с мелкомягкой!
Потому что гораздо приятнее считать себя линуксоидом и ругать винду, чем признать, что руки кривые в любых обстоятельствах.
Мое маленькое ДАНО ХОЧУ:
сделать веб запрос к серверу из синей цмдушечки (такие вот у меня специфические желания). Можно и не из синей, но линукса под рукой у меня не оказалось, поэтому в распоряжении были только cmd и powershell.
А вот теперь ДАНО:
Веб сайт, развернутый на стенде и доступный мне через браузер (именно так я поняла, что именно руки у меня кривые, а не сайт просто не доступен).
Ну и cmd и powershell почти в прямой сетевой видимости к оному.
Из плюсов у приложения, к которому я так успешно подключилась через веб браузер есть целый свагер с описанием всевозможных ручек, из минусов он развернут на скорую руку, а значит с самоподписанным сертификатом, выпущенным обычным openssl на первой попавшейся машинки.
Но все по порядку. Вообще легкий гуголь (а точнее его иишка) говорит, что начиная с версии 5.1 синей цмдушечки есть alias curl, который в свою очередь вызывает Invoke-WebRequest, но предупреждает, что синтаксис и параметры у них отличаются от обычного curl.exe
Пробуем командлет Invoke-WebRequest -Uri "https://ya.ru", на что цмдушечка ругается на меня своими ошибками. Немного поигравшись с всевозможными кавычками командлет побежден не был, а ошибка в своей формулировки не изменилась
Invoke-WebRequest : Базовое соединение закрыто: Непредвиденная ошибка при передаче.
строка:1 знак:1
С помощью команды host убеждаемся, что у нас стоит не самая допотопная powershell и идем копать дальше

Легкий гуголь ошибки Invoke-WebRequest : Базовое соединение закрыто: Непредвиденная ошибка при передаче. говорит, что дело в том, что он не может договориться о том, какое соединение использовать.
А гуголь поглубже напоминает, что у винды все логи в event-viewer'e и туда вообщем-то стоит ходить за ответами. Но у меня он ничего нового мне не сообщил - просто повторил все то же, что вывел мне в ответе. Еще этот же самый гуголь предлагает обновиться до версии 7.1 обещая золотые горы и устранение всех ошибок.
А вот обычная cmd и ее curl.exe была больше благосклонна ко мне и не стала истерить, как ее синяя подруга. Поэтому curl https://habr.com мне конечно ничего не вернул, но зато написал, что редиректид на https://habr.com/en/feed/ и завершилась без ошибок.
А вот при попытке зайти на самодельный сайт стал ругаться на сертификат
curl: (60) schannel: SEC_E_UNTRUSTED_ROOT (0x80090325) - Цепочка сертификатов выпущена центром сертификации, не имеющим доверия.
More details here: https://curl.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the webpage mentioned above.
Но с ключем -k даже так уже не капризничал.
Усложняем задачу: нам надо не просто ткнуться в сайт, а дернуть ему ручку по GET запросу
Удивительно, но и тут проблем не возникло, добавив к команде ключ -X и указав тип запроса GET мне цмдушечка вернула ответ (потрясающая цмдушечка)
Усложняем задачу х2: теперь желаю стать владычицей морскою отправить не просто GET запрос, а еще и в его header'e добавить параметр!
curl -k -X GET https://10.10.0.1/api/getRequest -H Head-Parameter:value
Удивительно, но так тоже сработало.
Какой можно сделать вывод? правильно! черный цвет решает!
В этой битве за право работать в суровых условиях моих кривых рук победила стандартная командная строка. И хоть не все мои усложнения удалось победить так же легко, как эти первые два, я бы хотела закончить свой маленький текст на положительной ноте и пойти добывать себе шоколадку за прожитый стресс, тем более, что хабр ограничивает мои фантазии в количестве символов на одну душу один пост.
Простейший Windows-скрипт для поиска дубликатов файлов в папке.
Проблема: в папке с бэкапами фоток скопилось много дубликатов под разными названиями.
Я не нашёл способа корректно эти дубликаты удалить средствами Windows, а ставить что попало на компьютер ради такой ерунды тоже не хотелось. Поэтому написал очень простой скрипт на Powershell. Нужно поместить его в нужную папку и в контекстном меню выбрать "Выполнить с помощью PowerShell". Конечно, сперва проверьте содержимое файла от неизвестного издателя (меня).
Скрипт сравнит размеры всех файлов и, при равенстве размеров, сравнит md5-суммы. Если и размер, и контрольная сумма совпадают, то останется файл с наименьшей длиной названия, а все его дубликаты будут перемещены в корзину.

Простейший скрипт на PowerShell для загрузки файлов
TL;DR спиз написал скриптик для загрузки файлов, держите версию для PowerShell
Дисклеймеры:
Общий дислеймер • О личности автора • Отказ от ответственности • Об использовании ChatGPT
Синопсис:
Набросал скриптик для загрузки файлов на PowerShell. Скрипт простейший, взят с просторов StackOverflow и почти не имеет обвязок.
Pre-requisites:
Вам нужно иметь следующие условия для работы скрипта:
Создать файл urls.txt и вбить туда прямые ссылки на файлы, которые надо скачать;
Именно прямые ссылки без # и ? в/после имени файла, чтобы имена файлов были совместимы с файловой системой вашей ОС;
Без пустых строк/абзацев.
Хост терминала открыт в папке, где лежит urls.txt.
Запуск скрипта:
Вставьте этот скрипт в окно терминала, и поехали!
$urls = Get-Content .\urls.txt
$dir = ".\"
foreach ($i in ($urls.Count - 1)..0) {
$filename = "$dir$(Split-Path -Leaf $urls[$i])";
if ((Test-Path -Path $filename -PathType Leaf) -eq $False) {
Invoke-WebRequest -Uri $urls[$i] -OutFile $filename
}
}
Результат:
Файлы скачались! И вы довольны.
Бессмысленное продолжение в комментах.