Почему командная строка всё ещё актуальна или 5 примеров, как PowerShell может сэкономить вам часы работы

Краткая предыстория

Когда компьютеры только появились, пользователи общались с ними с помощью текстовых команд. Это так называемый CLI (Command Line Interface) — интерфейс командной строки. Всё, что вы могли сделать — это вводить команды вручную и смотреть результаты их отработки, которые выводились также в виде текста или символов. Например, в 1980-х годах MS-DOS была популярной операционкой, и пользователи должны были знать многие команды наизусть, вроде dir (показать файлы) или copy (скопировать файл), чтобы полноценно работать в ней.

Пример интерфейса командной строки
Пример интерфейса командной строки

С появлением GUI (Graphical User Interface) всё изменилось. Windows, macOS и другие операционные системы представили графический интерфейс с окнами, кнопками и мышью. Это сделало компьютеры доступными для миллионов людей, которые не хотели запоминать команды. Казалось бы, что «неудобный» CLI должен уйти в прошлое, но этого не произошло до сих пор. Более того, CLI продолжил активное развитие!

GUI + CLI

Сейчас CLI встроен в любую операционную систему, но видеть его использование чаще всего можно в фильмах про хакеров. Для большинства людей работа в интерфейсе командной строки считается «магией», которой владеют лишь "избранные". Вопрос: «В каком интерфейсе проще, лучше и удобнее работать – графическом или интерфейсе командной строки?» - изначально некорректен. А что, если не выбирать между ними, а научиться пользоваться эффективно обоими?

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

CLI в Windows: CMD и PowerShell

Давайте рассмотрим Windows, как самую массовую ось. Для Windows есть два основных инструмента для работы с командной строкой: CMD и PowerShell.

Сравнение CMD и PowerShell
Сравнение CMD и PowerShell

PowerShell — это эволюция CMD. Инструмент сочетает в себе мощь CLI с гибкостью современного языка программирования. Его и будем использовать.

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

Лайфхак!

Если примеры ниже покажутся вам сложными, то это только кажется. Для написания скриптов для PowerShell больше не нужно знать язык программирования. Используйте ChatGPT, GigaChat, любой чат-бот, которым вы уже наверняка пользуетесь: «Напиши мне однострочный скрипт PowerShell, который…» и чат-бот вам быстро выдаст результат.

5 примеров того, как PowerShell может сэкономить вам часы

Пример 1 - Массовое переименование файлов

В графическом интерфейсе каждый файл надо переименовывать отдельно, что долго и муторно. Но есть выход:

Get-ChildItem -Path "C:\Photos" | ForEach-Object { Rename-Item -Path $_.FullName -NewName ("Otpusk_" + $_.Name) }

Скрипт переименует все файлы в папке C:\Photos, добавив к ним префикс "Otpusk_" и это займёт менее 1 сек.

Работа скрипта в PowerShell
Работа скрипта в PowerShell

Пример 2 - Поиск и удаление пустых папок

Как это вообще сделать в графическом интерфейсе? В CLI - легко:

Get-ChildItem -Path "C:\Data" -Directory -Recurse | Where-Object { (Get-ChildItem -Path $_.FullName).Count -eq 0 } | Remove-Item -Force

Скрипт найдёт и удалит все пустые папки в C:\Data.

Пример 3 - Поиск файлов по определённым условиям

Поиск в GUI Windows конечно же есть, но мне не нравится скорость его работы и удобство задания условий поиска. Поэтому иногда файлы гораздо быстрее найти с помощью PowerShell:

$yesterday = (Get-Date).AddDays(-1).Date; Get-ChildItem -Path C:\ -Recurse -File -ErrorAction SilentlyContinue | Where-Object { $_.Extension -eq ".docx" -and $_.CreationTime.Date -eq $yesterday } | ForEach-Object { Write-Host "Файл: $($_.FullName), Дата создания: $($_.CreationTime)" }

С этим скриптом вы можете легко и быстро найти все .docx файлы, созданные вчера на диске C. Подобные сценарии актуальны, когда сохранил куда-то файл, а куда - не посмотрел.

Пример 4 - автоматизация каких-то действий

Например, вам нужно в определённой папке найти все jpg размером от 2 Мб до 5 Мб и получить архив с ними в целевой папке. Это можно сделать в GUI, но потребуется сделать несколько действий и при этом есть риск совершить ошибку, отбирая картинки по критериям. Скрипт не ошибётся:

$sourceFolder = "C:\Photos"; $destinationFolder = "C:\FilteredPhotos"; $archivePath = "$destinationFolder\PhotosArchive.zip"; Get-ChildItem -Path $sourceFolder -Recurse -File -Include *.jpg | Where-Object { $_.Length -gt 2MB -and $_.Length -lt 5MB } | Copy-Item -Destination $destinationFolder -Force; Compress-Archive -Path "$destinationFolder\*" -DestinationPath $archivePath -Force; Remove-Item -Path "$destinationFolder\*" -Exclude PhotosArchive.zip -Force

Скрипт в целевой папке (включая подпапки, если они есть) находит jpg по критериям размера (от 2 до 5 МБ), копирует их во временную папку, затем архивирует и удаляет фотки, оставляя только архив.

Пример 5 - управление процессами

Немного специфичный пример, но иногда полезная функция, когда какой-то процесс или процессы забили процессор, от чего компьютер стал тормозить:

Get-Process | Where-Object { $_.CPU -gt 30 } | Stop-Process -Force

Скрипт завершит все процессы, которые используют больше 30% CPU.

Итого

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

Если вы ещё не пробовали PowerShell, самое время начать. Это как получить суперспособность для работы с компьютером.

Это моя первая статья на VC. Поддержите меня вашими реакциями и комментариям. Обязательно напишите мне, если данная статья действительно помогла вам сэкономить своё время. У этой статьи будет продолжение о том, как скрипты PowerShell можно сохранять и запускать по расписанию.

Подписывайтесь на мой канал в телеге, куда я также буду постить полезный контент:

22
Начать дискуссию