Первые версии Windows не имели графического интерфейса. В них можно было выполнять различные операции при помощи консольных команд. Сейчас Windows стал более совершенной серией операционных систем: он получил потрясающий графический интерфейс, иногда понятный на уровне интуиции. Несмотря на это, обращение к консоли все равно остается актуальным. Ее команды могут пригодиться как неопытным ПК-пользователям, так и настоящим IT-специалистам.
Далее предстоит познакомиться с командной строкой операционной системы Windows получше. Предстоит выяснить, что она собой представляет, как может быть вызвана и для чего используется. Также нужно рассмотреть ее преимущества и недостатки, ключевые особенности и некоторые полезные команды, которые могут пригодиться каждому ПК-пользователю.
Определение
Командная строка – это текстовый пользовательский интерфейс для взаимодействия с операционной системой устройства при помощи команд, вводимых прямо с клавиатуры. С помощью этого элемента получится включать и отключать различные приложения, системные процессы, вносить изменения в реестр, а также управлять файлами и папками, программировать через встроенных скриптовый язык.
Консоль в системах Microsoft появилась более 40 лет назад – во время использования MS-DOS. С тех пор рассматриваемый инструмент активно совершенствовался, количество его команд расширилось, а некоторые из них были модернизированы.
Развитие командной строки Windows прекратилось с релизом Windows 2000. Это связано с тем, что операционные системы Microsoft приобрели потрясающий и функциональный графический интерфейс. Он стал основным средством управления.
Несмотря на это, консоль все равно поддерживается в последующих версиях Windows. У них предусматриваются команды для обратной совместимости. Данная особенность характерна и для Windows 10/11. Всего консоль поддерживает более 300 команд. Сейчас найти им всем применение не так-то просто. Некоторые операции проще выполнить при помощи графического интерфейса и курсора мышки.
Для чего необходима
Строка команд в Windows и других операционных системах обеспечивает пользователя всеми возможностями для полноценного взаимодействия с компьютером и его приложениями. Консоль может пригодиться при:
- Диагностике компьютеров. С ее помощью удастся просматривать данные об устройстве, включая производителя, модель и серийный номер, характеристики аппаратной части, версии BIOS, название и версию имеющейся операционной системы, адрес расположения папки с ОС, пользовательское имя и многое другое. Консоль дает возможность организовать проверку ПК на ошибки в функционировании долговременной памяти. С ее помощью получится изучить информацию об эффективности управления питания и возникающих в нем проблемах, осуществить диагностику драйверов и конфликтов, возникающих между ними, проверить целостность системных папок и так далее. Командная строка станет незаменимым помощником каждого пользователя в процессе диагностики устройства.
- Восстановлении системы. Консоль предусматривает возможность проверки томов (они же – логические диски), самой операционной системы, установленных программ и приложений. За счет командной строки получится осуществить резервное копирование, а также восстановление файлов, извлечение сохранившейся информации с поврежденных носителей (как внутренних, так и внешних).
- Работе с дисками. Консольные команды помогают пользователям получать наиболее полные данные о различных накопителях: системных или внешних. Можно посмотреть с их помощью используемые файловые системы, увидеть общий объем и размер занятого дискового пространства, обнаружить проблемные области. Консоль поможет организовать диагностику файловой системы дисков, а затем исправить обнаруженные ошибки. С ее помощью получится скорректировать дисковые квоты, осуществить дефрагментацию разрозненных файлов (что положительно сказывается на быстродействии компьютера). Специальные консольные команды дают возможность шифровать информацию на диске и избавляться от цифровых следов файлов, оставшихся после их удаления.
- Эксплуатации системы. Консольные команды помогают просматривать активные системные процессы и потребляемую ими оперативную память. По мере необходимости допускается удаление некоторых выполняемых операций через текстовый интерфейс. Эта возможность активно используется как IT-специалистами при автоматизации задач, так и обычными пользователями. Консольные команды также дают возможность завершить все активные процессы на устройстве путем прекращения работы операционной системы или перевода ПК в режим гибернации.
- Работе с сетевыми подключениями. Через консольные команды пользователи могут получить информацию о состоянии установленных сетевых адаптеров, проверить сетевые подключения и их загруженность, скорость получения и отправки информации, определить IP-адрес используемого устройства, изучить сведения о состоянии удаленных хостов и даже отследить маршрут до определенного сервера.
- Эксплуатации файлов и приложений. Через командную строку пользователи смогут посмотреть месторасположение определенных файлов и папок, а также открыть их. Консоль позволяет запускать и отключать системные процессы и программное обеспечение, выявлять сбои и ошибки в их работе и проверять приложения на безопасность. То же самое касается файлов и папок на устройстве.
- Программировании. Основная масса современных операционных систем предусматривает наличие простейшего скриптового языка, встроенного в интерпретатор консоли. С помощью него получится добиться автоматизации практически всех системных процессов и даже написать несложные алгоритмы и программы. Примером может послужить калькулятор.
Это основные области применения консольных команд в различных операционных системах. У такого подхода к управлению ОС, файлами и папками, различными настройками имеются свои преимущества и недостатки. Знать о них необходимо каждому пользователю, чтобы решить, какой вариант взаимодействия с устройством будет более полезным – графический или пользовательский интерфейс.
Преимущества и недостатки
Интерфейс строки команд в Windows и других ОС, несмотря на поддержку графического интерфейса, все равно активно применяется. Преимуществами данного подхода можно считать:
- Небольшой расход ресурсов при работе. Командная оболочка в плане реализации является очень простой. Ее работа отнимает у устройства минимум ресурсов по сравнению с графическим интерфейсом. За счет этого удается добиться практически моментального отклика на пользовательские действия.
- Возможность получения быстрого доступа к информации, функциям, файлам и программам. Графический интерфейс интуитивно понятен, но он предлагает достаточно долгий процесс взаимодействия человека с компьютером. Примером может послужить запуск того или иного приложения. Для ее реализации придется переходить в службу «Проводник», открывать системные диски, искать нужную папку и выбрать искомый файл. Консоль поможет выполнить все эти манипуляции буквально в несколько шагов.
- Широкие возможности управления. С помощью строки команд пользователи смогут работать с различными приложениями, процессами и файлами – включая те, что не имеют графической оболочки. Данная особенность предоставляет широкие возможности настройки ОС, контроля над ресурсами устройства, а также взаимодействия с выделенными серверами. С помощью консоли получается обеспечить автоматизацию некоторых рутинных процессов, создание скриптов.
- Простоту функционирования. Оболочка командной строки Windows и других ОС – это простое окно, включающее в свой состав минимум интерактивных компонентов. Такой подход позволяет упростить восприятие консоли и сконцентрироваться на выполнении поставленной задачи, не отвлекаясь на графические составляющие.
- Простейшую отладку. Отладка не требует никаких специфических знаний и навыков. Пользователю, столкнувшемуся с той или иной проблемой, достаточно отправить копию диалога с ПК из командной строки на тематический форум в Интернете, чтобы получить помощь от других людей, включая разработчиков. С графической оболочкой ситуация обстоит иначе. Реализация отладки затрудняется за счет необходимости пересылки огромного количества скриншотов в определенном порядке. Пользователю предстоит фиксировать все выполняемые им операции.
- Хорошо развитую поддержку. Строка команд, несмотря на свое долгое существование, перетерпела мало преобразований. В счет этого все наработки по ней остаются востребованными на протяжении большого количества времени.
Консоль – это удобное средство управления компьютером, драйверами, операционными системами и приложениями. Она имеет ряд недостатков. А именно:
- Отсутствие интуитивности. Строка команд не предусматривает никаких подсказок. Из-за этого на интуитивном уровне пользоваться консолью не получится. Необходимо знать точные команды и форму их записи для реализации.
- Неудобная система ввода. Там, где в графической оболочке можно выполнить операцию в несколько кликов, консоль требует ввода текстовых команд при помощи клавиатуры. Эти записи иногда бывают очень длинными.
- Низкий уровень наглядности вводимых данных. Консоль не умеет отображать графические компоненты. Информация выводится в виде текста с примитивным форматированием. Иногда допускается оптимизация в виде таблиц.
Несмотря на это, консоль остается полезным инструментом управления. Далее предстоит познакомиться с некоторыми полезными командами для нее при работе с Windows и ее файлами.
Как открыть консоль
Перед тем как использовать командную строку CMD, необходимо открыть консольное окно. Для этого можно:
- Нажать Win + R.
- В появившейся строке ввести «cmd» (без кавычек).
- Нажать на кнопку «Выполнить». Можно воспользоваться клавишей Enter на клавиатуре.
В результате на экране появится черное окно с указателем строки. Это консоль Windows. Она полностью готова к дальнейшей эксплуатации.
Также запуск консоли осуществляется при помощи меню «Пуск». Нужно щелкнуть по нему правой кнопкой мыши и выбрать «Командная строка», «Командная строка (администратор)» или «Windows PowerShell».
Диагностика
Далее предстоит изучить наиболее полезные и распространенные команды консольной оболочки. Они помогают работать с файлами и операционной системой.
Первая полезная команда – Systeminfo. Она позволяет получить информацию о программной и аппаратной конфигурации устройства. Здесь отображаются:
- данные об устройстве компьютера;
- список установленных обновлений;
- дата установки и последней загрузки операционной системы;
- версия сборки ОС.
Соответствующие сведения пригодятся при диагностике.
Восстановление данных
При работе с компьютером и его файлами никто не застрахован от повреждения документов. Их восстановление поможет организовать команда Recover. Она дает возможность восстанавливать файлы с поврежденных носителей. Сначала указывается соответствующая команда, а затем – путь к диску или папке.
После обработки Recover устройство выполнит посекторное считывание файлов с диска. Сохранившаяся информация будет извлечена, а некоторые битые секторы – проигнорированы. Именно поэтому рассматриваемая команда не подойдет для работы с накопителями с большим количеством сбойных секторов. Она не умеет работать с системами файлов NTFS, Fat и Fat32.
Именно поэтому для проверки целостности файлов и иных элементов Windows рекомендуется использовать команду Sfc. Если обработать ее без дополнительных атрибутов, на экране появится справка. Она подробно расскажет о том, как пользоваться утилитой sfc. С помощью нее получится проверить системные файлы на факт целостности, а также при повреждении восстановить их – совместно или по одному.
Также стоит обратить внимание на команду Wbadmin. Это инструмент архивации данных. С его помощью получится провести резервное копирование или восстановление файлов, папок и дисков:
- wbadmin start backup – резервное копирование;
- wbadmin start recovery – восстановление.
Эти операции имеют дополнительные атрибуты. Они используются для указания источников и путей восстановления.
Работа с дисками
Через поддерживаемую командную строку можно управлять файлами и дисками. Полезной будет команда Certutil. Она представляет собой программу, работающую прямо из консоли. Она умеет:
- кодировать и декодировать файлы при помощи ключей /encode и /decode соответственно;
- вычислять контрольные суммы посредством ключа /hashfile;
- расшифровывать коды ошибок файлов и документов через команду /error.
Это неполный список возможностей Certutil. Посмотреть их все поможет команда /?.
Есть еще одна операция – Chkdsk. Она организовывает проверку системы файлов и устраняет обнаруженные ошибки. Поддерживает работу с FAT32, FAT, NTFS.
Cipher – команда, позволяющая шифровать файлы на уровне файловой системы NTFS. В домашнем использовании допустимо применение ключа /w. С его помощью удастся затереть свободное место во всем томе.
Defrag – дефрагментация жесткого диска. С помощью этой команды консоли получится объединить несколько частей файлов. Данный прием положительно сказывается на скорости чтения документов.
Diskpart – утилита, отвечающая за управление разделами накопителей. Она дает возможность создавать, удалять, корректировать тома на дисках, изменять их атрибуты и помечать в качестве активных. Команды тут вводятся последовательно, начиная с list disk или list volume.
Fsutil – утилита управления объектами файловой системы. Дает возможность управлять файлами, просматривать информацию о логических томах, менять их размер и отсоединять. Эта операция используется опытными пользователями.
Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus!
Windows Console is the infrastructure for console applications in Microsoft Windows. An instance of a Windows Console has a screen buffer and an input buffer. It allows console apps to run inside a window or in hardware text mode (so as to occupy the entire screen). The user can switch between the two using the Alt+↵ Enter key combination. The text mode is unavailable in Windows Vista and later. Starting with Windows 10, however, a native full-screen mode is available.
A Windows Console with cmd.exe in Windows 10 20H2 |
|
Other names | Win32 console |
---|---|
Developer(s) | Microsoft |
Repository | github |
Written in | C++ |
Operating system | Microsoft Windows |
Platform | IA-32, x86-64, ARM64 |
Type | Terminal emulator |
License | MIT License |
Website | docs |
Windows Console instances are typically used for apps that do not need to display images but might use color. Examples include cmd.exe, Windows PowerShell, Far Manager, and Midnight Commander.
In 2019, the console host was open-sourced under the MIT License, alongside Windows Terminal.[1]
Window and full screen modes
edit
In Windows, a console application may run in two modes.
One mode places the text in a window and uses an operating system’s font rendering. In this mode, an application’s interaction with user is controlled by the windowing system. This is analogous to X Window System applications such as xterm.
The second is the full-screen mode. In Windows XP and earlier, the full-screen console uses a hardware text mode and uploads a raster font to the video adapter. This is analogous to a text system console. This early full-screen mode only supports VGA-compatible text modes, giving it a maximum character resolution of 80 columns by 28 rows.[2] This mode was deprecated in Windows Vista.[3] It was possible to circumvent this issue by installing a Windows XP display driver;[3] however, Windows 8 and later do not accept them.[4] Windows 10 features a full-screen mode once again, but this implementation uses the native Windows rendering subsystem, instead of the text mode. It can have as many columns and rows as fits on the screen.[5]
Apps can be made to switch between the two modes using the Alt+↵ Enter key combination.
The input buffer is a queue where events are stored (from keyboard, mouse etc.). The output buffer is a rectangular grid where characters are stored, together with their attributes. A console window may have several output buffers, only one of which is active (i.e. displayed) for a given moment. Apps may programmatically interact with Windows Console through Windows API, which exposes both high-level functions (such as ReadConsole
and WriteConsole
) and low-level functions (e.g. ReadConsoleInput
and WriteConsoleOutput
).[6]
Users can change the color palette or font, either on the system-wide level or app-level. Each instance of a console app themselves, however, cannot change its color palette or font on the fly.
Windows Console apps are distinct from MS-DOS apps, even though on Windows (especially on Windows 9x), they may not look different. Windows Console apps have access to entire Windows API and do not run on MS-DOS or compatible operating systems. DOS apps, however, cannot access Windows API and may only run on 32-bit versions of Windows with the aid of Virtual DOS machine (VDM).
In Windows 3.1 and earlier, there is no native support for consoles. Because those version are merely a graphical interface for MS-DOS, most text programs that ran on earlier Windows versions were actually MS-DOS programs running in a window. To simplify the task of porting applications to Windows, early versions of Visual C++ are supplied with QuickWin, a library that implements basic console functionality inside a regular window. A similar library for Borland C++ was called EasyWin.
Windows 9x support is relatively poor compared to Windows NT, because the console window runs in the system virtual DOS machine and so keyboard input to a Win32 console application had to be directed to it by conagent.exe running in a DOS VM that are also used for real DOS applications by hooking the keyboard interrupt. conagent.exe
then calls Vcond (which is a VxD). Vcond then had to pass the keyboard input to the System VM, and then finally to the Win32 console application. Besides performance, another problem with this implementation is that drives that are local to a DOS VM are not visible to a Win32 console application. This can cause confusion.
Under Windows 9x, the screen buffer mirrors the structure of VGA text buffer, with two bytes per character cell: one byte for character code, one byte for attributes (the character must be in OEM character set, the attribute is with high-intensity background/no blinking). This speeds up operation considerably if the actual VGA text mode is used.
Windows NT and Windows CE
edit
Traditionally, the Client/Server Runtime Subsystem (CSRSS) has been responsible for managing console windows on the Windows NT family of operating systems.[7] In Windows 7, CSRSS spawns one conhost.exe
for each console window, to manage it. In Windows 8 and later, the console apps spawn their conhost.exe
processes directly. This change has both security and usability implications. While CSRSS runs in a highly privileged security context, each conhost.exe
runs in the same security context as the console app. In addition, in Windows 7, this change enabled console windows to have the features of the Aero Glass theme.[8]
On Windows NT and Windows CE, the screen buffer uses four bytes per character cell: two bytes for character code, two bytes for attributes. The character is then encoded in a 16-bit subset of Unicode (UCS-2).[9] For backward compatibility, the console APIs exist in two versions: Unicode and non-Unicode. The non-Unicode versions of APIs can use code page switching to extend the range of displayed characters (but only if TrueType fonts are used for the console window, thereby extending the range of codes available). Even UTF-8 is available as «code page 65001»[10] (displaying only from the UCS-2 subset of full Unicode[citation needed]).
As of the Windows 10 October 2018 update, the Windows Console has full Unicode support.[11]
- Comparison of terminal emulators
- Command-line interface
- Shell (computing)
- System console
- Windows Terminal
- Linux console
- Text-based (computing)
- List of formerly proprietary software
- ^ Cinnamon, Kayla (May 6, 2019). «Introducing Windows Terminal». Windows Command Line Tools For Developers. Microsoft. Retrieved May 10, 2019.
- ^ Julio Sanchez; Maria P. Canton (2003), «VGA Fundamentals, Part II: DOS Graphics», The PC Graphics Handbook (for C++ Programmers) (Book), CRC Press, p. 125, ISBN 0849316782
- ^ a b «Some 16-bit DOS-based Programs and the Command Prompt will not run in full-screen mode in Windows Vista and in Windows 7». Support. Microsoft. September 23, 2011.
- ^ «Roadmap for Developing Drivers for the Windows 2000 Display Driver Model (XDDM)». Windows Dev Center — Hardware. Microsoft. November 16, 2013. Retrieved December 16, 2013.
XDDM and VGA drivers will not compile on Windows 8 and later versions
- ^ Tkachenko, Sergey (November 24, 2014). «Open command prompt fullscreen in Windows 10». Winaero. Retrieved July 31, 2019.
- ^ «Console Modes». Windows Console documentation. Microsoft. Retrieved October 13, 2020 – via Microsoft Docs.
- ^ Microsoft Security Advisory (930181): Exploit Code Published Affecting Windows Client Server Run-Time Subsystem
- ^ Yosifovich, Pavel; Ionescu, Alex; Russinovich, Mark E.; Solomon, David A. (May 15, 2017). Windows Internals, Part 1: System architecture, processes, threads, memory management, and more (7th ed.). Redmond, Washington: Microsoft Press. p. 67. ISBN 9780735684188.
- ^ «Console Reference». Microsoft. 2009. Retrieved January 1, 2010.
- ^ «Release Notes». docs.microsoft.com. June 27, 2022.
Console: Fix for no output text being displayed in codepage 65001 (utf8)
- ^ Turner, Rich (November 15, 2018). «Windows Command-Line: Unicode and UTF-8 Output Text Buffer». Windows Command Line Tools For Developers. Microsoft. Retrieved June 14, 2019.
- Windows Console documentation
- Windows Command-Line: Backgrounder blog
Командная строка Windows — это один из самых мощных инструментов на ПК. С ее помощью можно напрямую взаимодействовать с операционной системой и выполнять различные действия, которые недоступны в графическом интерфейсе (GUI).
В этой статье мы покажем вам 40 операций, которые можно использовать в командной строке Windows. Они помогут вам стать более уверенным пользователем.
Операции в командной строке Windows
powershell start cmd -v runAs – запускает командную строку от имени администратора. Ввод этой команды откроет новое окно командной строки с правами администратора.
driverquery – отображает все установленные драйвера. Важно иметь доступ ко всем драйверам, так как они часто вызывают проблемы. Эта команда показывает даже те драйверы, которые не отображаются в диспетчере устройств.
chdir или cd – меняет текущий рабочий каталог на указанный каталог.
systeminfo – показывает информацию о вашем ПК. Эта команда предоставляет подробную информацию о системе, которую нельзя увидеть в графическом интерфейсе.
set – показывает переменные среды вашего компьютера.
prompt – меняет текст, отображаемый перед вводом команд. По умолчанию командная строка показывает путь к диску C. Вы можете изменить этот текст с помощью команды prompt с синтаксисом: prompt имя_подсказки $G.
Примечание: если не добавить $G к команде, символ «>» не появится перед текстом.
clip – копирует элементы в буфер обмена. Например, dir | clip копирует содержимое текущего каталога в буфер обмена. Можно ввести clip /? и нажать ENTER для получения инструкций.
assoc – отображает программы и связанные с ними расширения файлов.
title – меняет заголовок окна командной строки с помощью команды: title имя_заголовка
fc – сравнивает два файла. Эта команда полезна для быстрого выявления различий между двумя файлами. Пример: fc «путь_к_файлу1» «путь_к_файлу2».
cipher – очищает диск и шифрует данные. Удаленные файлы остаются доступными.
netstat -an – показывает открытые порты, их IP-адреса и состояния.
ping – вычисляет IP-адреса сайта и время передачи данных.
color – меняет цвет текста командной строки.
Ввод команды color 2 покажет доступные цвета.
for /f «skip=9 tokens=1,2 delims=:» %i in (‘netsh wlan show profiles’) do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear – показывает все пароли Wi-Fi.
ipconfig – выдает информацию об IP-адресах и сетевых подключениях. Команда имеет расширения, например: ipconfig /release, ipconfig /renew, ipconfig /flushdns для устранения проблем с интернет-соединением.
sfc – проверяет системные файлы. Команда сканирует и исправляет поврежденные файлы. Используйте расширение /scannow для запуска проверки.
powercfg – меняет настройки питания. Команда имеет несколько расширений. Вы можете ввести powercfg help, чтобы показать эти расширения.
Например, powercfg /energy создает отчет о состоянии батареи в виде HTML-файла, который можно найти по пути: C:\Windows\system32\energy-report.html.
dir – показывает содержимого каталога.
del – удаляет файлы.
attrib +h +s +r имя_папки – скрывает папки. Для отображения папки используйте команду: attrib -h -s -r имя_папки.
start адрес_сайта – открывает сайт из командной строки,
tree – показывает структуру текущего каталога или указанного диска.
ver – отображает версиию ОС.
tasklist – показывает открытые программы.
taskkill – завершает выполнение задачи. Для завершения задачи выполните команду: taskkill /IM «task.exe» /F. Пример: taskkill /IM «chrome.exe» /F.
date – показывает и меняет дату.
time – показывает и меняет время.
vol – выдает серийный номер и информацию о метке текущего накопителя.
dism – запускает средство управления службой образов развертывания.
CTRL + C – прерывает выполнение команды.
-help – выдает справку по командам.
echo – показывает пользовательские сообщения или сообщения из сценария, файла.
Пример создания файла: echo содержимое_файла > имя_файла.расширение.
mkdir – создает папку.
rmdir – удаляет папку. Помните, папка должна быть пустой для успешного удаления.
more – показывает дополнительную информацию или содержимое файла.
move – перемещает файл или папку в указанный каталог.
ren – переименовывает файл. Пример: ren имя_файла.расширение новое_имя.расширение.
cls – очищает командную строку.
exit – закрывает командную строку.
shutdown – завершение работы, перезагрузка, перевод в спящий режим.
Для просмотра доступных опций введите shutdown в командной строке. Например, shutdown /r перезагрузит компьютер.
В итоге
Эта статья познакомила вас с несколькими командами, которые позволяют получить доступ к скрытым функциям вашего ПК. Будьте осторожны при работе с ними, так как они могут оказать длительное воздействие на вашу операционную систему.
Интерфейс командной строки для начинающих разработчиков
Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров6.3K
Если вы когда-либо читали инструкции от разработчиков, то наверняка видели фразы вроде: «Откройте консоль», «Выполните эту команду в терминале» или «Для этого потребуется командная строка». Эти инструменты часто называют невероятно мощными и полезными, но что это означает на практике? Почему терминал считается незаменимым инструментом разработчика и какие возможности он предоставляет, выходя за рамки привычных графических интерфейсов?
Меня зовут Евгений Бартенев, и я автор и техлид курса «Python-разработчик» в Яндекс Практикуме. В этой статье я расскажу, что стоит за терминами «терминал», «оболочка» и «командная строка», а также разберу их некоторые отличия и особенности. Вы узнаете, как они связаны друг с другом и почему работа через консоль зачастую оказывается быстрее и эффективнее. Мы также рассмотрим некоторые практические примеры, которые трудно реализовать, полагаясь только на графический интерфейс.
Эта статья не является справочником команд или пошаговой инструкцией. Она написана для тех, кто хочет понять, что же такое командная строка, и разобраться в её ключевых возможностях. Материал будет не столь полезен опытным разработчикам, которые используют терминал ежедневно. Однако я сделал фокус на терминологии и ключевых концепциях, которые часто остаются за кадром или вызывают путаницу даже у некоторых опытных пользователей. Но обо всём по порядку.
Разбор в ролике для тех, кто предпочитает видеоформат.
Терминология
Почти в каждой современной операционной системе есть графический интерфейс — это знакомые многим окна, иконки, кнопки и другие графические элементы. С их помощью можно выполнить практически любое действие. Однако в операционных системах обычно доступны и другие интерфейсы, например интерфейс командной строки.
Через интерфейс командной строки можно выполнять те же задачи, что и через графический, а иногда и значительно больше. Например, представить себе графический интерфейс для управления сотнями команд с множеством параметров — с ключами, подкомандами и опциями — довольно сложно. Если попытаться отобразить их все через кнопки и меню, экран быстро окажется перегружен элементами. Командная строка решает эту проблему: одна строка ввода может заменить целый набор сложных графических элементов.
Когда программисты говорят «откройте терминал» или «откройте консоль», они, как правило, имеют в виду именно интерфейс командной строки.
Терминал — это интерфейс для ввода-вывода текста, через который можно взаимодействовать с операционной системой.
В каждой операционной системе по умолчанию есть один или несколько терминалов, например:
-
в Windows — Windows Terminal, Windows Console Host;
-
в Linux — GNOME Terminal, Konsole;
-
в macOS — Terminal.app.
Хотя в обиходе слова «терминал» и «консоль» часто используют как синонимы, технически эти понятия различаются:
-
терминал — это интерфейс для работы с текстом;
-
консоль может означать как физическое устройство (например, монитор и клавиатуру в старых компьютерах), так и программу для доступа к терминалу.
При работе с терминалом вы на самом деле взаимодействуете с оболочкой (shell).
Оболочка — это программная среда, которая интерпретирует текстовые команды и выводит результаты. Оболочки можно менять или переключаться между ними, но сам терминал остаётся тем же.
Оболочки по умолчанию:
-
Windows: Command Prompt, PowerShell.
-
Linux: большинство дистрибутивов Linux используют bash (Bourne Again SHell) как оболочку по умолчанию. Некоторые новые дистрибутивы начали переходить на zsh (Z shell, произносится как «зет-шелл»).
-
macOS: до macOS Catalina оболочкой по умолчанию была bash. Начиная с macOS Catalina и позже, Apple перешла на использование zsh в качестве оболочки по умолчанию.
Каждая оболочка может обрабатывать команды, поддерживаемые операционной системой и соответствующим терминалом, но многие оболочки добавляют и свои уникальные возможности.
Обычно оболочки поддерживают сотни, а некоторые даже тысячи команд. Чтобы как-то навести порядок в этом многообразии возможностей, стали появляться различные стандарты. Среди таких стандартов особенно выделяется POSIX (Portable Operating System Interface). Он определяет ключевой набор текстовых команд и их ожидаемые результаты. Если оболочка называется POSIX-совместимой, это означает, что она поддерживает этот установленный набор команд.
Точное количество существующих оболочек определить сложно, поскольку их разработано множество, и новые продолжают появляться. Наиболее известные и популярные POSIX-оболочки — это bash (Bourne-Again SHell), Dash (Debian Almquist shell), ksh (Korn shell), ash (Almquist shell), zsh. А вот оболочки Fish (Friendly interactive shell), PowerShell, Command Prompt, Eshell не поддерживают POSIX, поэтому даже для одноимённых команд в каждой из них можно получить различный результат.
В этой статье я сфокусировался на возможностях именно POSIX-совместимых оболочек на примере zsh в операционной системе macOS.
Переключение между оболочками
Запустить интерфейс командной строки в операционной macOS можно по-разному. Чтобы открыть терминал с помощью Spotlight, достаточно нажать сочетание клавиш Command (⌘) + Пробел и в появившейся строке начать вводить слово Terminal. Как только терминал появится в списке предложений, выберите его нажатием клавиши Enter.
По умолчанию в macOS используется оболочка zsh, но вы можете переключиться на другую, например bash. Для этого выполните в терминале команду bash
— заголовок окна изменится, а в самом окне изменится приглашение для ввода команд.
В macOS по умолчанию предустановлена устаревшая версия bash (3.2), что связано с политикой Apple, направленной на использование лицензий, не обременённых условиями GPLv3. Для использования актуальной версии bash необходимо выполнить дополнительные действия, например установить обновление через менеджер пакетов Homebrew.
Чтобы вернуться в оболочку zsh, введите и выполните команду exit
.
На macOS предустановлены и другие оболочки. Чтобы увидеть все оболочки, доступные в вашей системе, выполните команду:
cat /etc/shells
На стандартной macOS вы увидите что-то вроде:
Для большинства пользователей zsh будет наиболее удобной и функциональной оболочкой, поэтому продолжим именно с ней. Начнём с самых базовых возможностей.
Базовые возможности оболочки
Одна из самых удобных функций большинства оболочек — это возможность быстро перебирать и повторно выполнять ранее введённые команды. Для этого достаточно использовать клавиши стрелка вверх и стрелка вниз.
Клавиши стрелка вправо и стрелка влево перемещают курсор на один символ вправо и влево, а при одновременном удержании клавиши Option — вправо и влево можно перемещаться уже по словам.
Оболочка zsh поддерживает удобное автодополнение. Просто начните вводить команду или путь к файлу, а затем нажмите Tab. Оболочка предложит варианты завершения. Если доступно несколько вариантов, zsh отобразит их список.
Если вы не уверены в том, как использовать ту или иную команду, можно обратиться за справкой. Для этого введите команду man
(англ. manual, «руководство»), которая открывает полное описание команды, например: man ls
.
Выйти из режима просмотра можно, нажав на клавишу q.
Если терминал заполнен текстом и вы хотите начать с чистого экрана, достаточно ввести команду clear
или использовать сочетание клавиш Command + K.
Очистка экрана в терминале, например с помощью команды clear
, не удаляет историю введённых команд — она просто очищает текущее отображение в окне терминала, оставляя всё, что вы вводили ранее, доступным для поиска. Это значит, что вы по-прежнему можете использовать клавиши стрелка вверх и стрелка вниз, чтобы пролистать недавно введённые команды.
Если нужная команда была введена давно, искать её вручную стрелками может быть неудобно. В таком случае поможет команда history
. Она выводит список всех команд, которые вы вводили, вместе с их порядковыми номерами. Например, после выполнения команды history
вы увидите что-то вроде этого:
Теперь, зная номер нужной команды, вы можете выполнить её снова, используя сокращённый синтаксис !<номер>
.
Например, команда !73
повторит команду pwd
(англ. print working directory, «напечатай рабочую папку»).
Псевдонимы
Псевдонимы (алиасы) — это удобный способ сократить часто используемые команды или создать короткие версии для длинных и сложных команд в POSIX-совместимых оболочках.
Для создания псевдонима, который будет доступен только в текущей сессии терминала, используется команда alias
:
alias имя='команда'
Например:
alias ll='ls -la'
Теперь при вводе и выполнении команды ll
будет выполняться команда ls -la
.
Чтобы увидеть все активные псевдонимы, выполните команду alias
.
Для удаления псевдонима используйте команду unalias
:
unalias ll
Чтобы псевдоним сохранялся после перезапуска терминала, его нужно добавить в файл конфигурации оболочки:
echo "alias ll='ls -la'" >> ~/.zshrc
После внесения изменений перезапустите оболочку или выполните source ~/.zshrc
Перенаправление потоков
Потоки в UNIX-подобных операционных системах — это способ работы с данными, которые «текут» между программами, файлами и устройствами. Поток можно представить как канал, через который данные перемещаются, например, из файла в программу, из программы в другой процесс или на устройство, такое как принтер.
Основных потоков три:
-
Стандартный ввод (stdin) — это поток, откуда программа получает данные. Обычно это клавиатура.
-
Стандартный вывод (stdout) — это поток, куда программа отправляет свои результаты. Обычно это вывод в окне терминала.
-
Стандартный поток ошибок (stderr) — это поток для сообщений об ошибках. Он отделён от стандартного вывода, чтобы ошибки не смешивались с обычным результатом программы.
Допустим, вы выполняете команду ls
. Выполнение команды ls
создаёт список файлов и выводит его в стандартный вывод (stdout), то есть на экран. Однако это можно изменить.
Допустим, вам требуется сохранить весь вывод в файл. И самый простой способ сделать это — перенаправить поток. Для этого используется команда >
.
ls > output.txt
Поток будет перенаправлен, и теперь список файлов сохраняется в файл с указанным именем, а не выводится на экран.
Подобным же образом стандартный ввод (stdin) программы можно перенаправить с клавиатуры на файл. Для этого используется символ <
.
python3 myscript.py < input.txt
Программа на Python в файле myscript.py написана так, чтобы получать данные с клавиатуры, но теперь она будет построчно читать указанный файл и брать данные из него, а не ждать ввода от пользователя в терминале.
Конвейеры
Когда вы вводите команду в оболочке, она запускается и выполняется. Результат выполнения команды обычно отображается на экране. Однако в POSIX-совместимых оболочках результат выполнения одной команды вместо вывода на экран можно передать другой команде. Это позволяет создавать последовательности команд для обработки данных. Этот механизм носит название конвейеров (иногда их ещё называют пайплайны) и при написании команд обозначается символом |
.
С помощью конвейеров можно выполнять довольно сложные задачи, разбивая их на последовательность более простых шагов.
Например:
cat input.txt | wc -l
Отдельное выполнение команды cat input.txt
выводит содержимое файла input.txt, а команда wc -l
подсчитывает количество строк в выводе.
Запуск конвейера из этих команд даст только финальный результат — количество строк, минуя промежуточные результаты.
Или вот другой пример:
ls -l | sort -k 5 -n
Команда ls -l
выводит список файлов с подробной информацией, а запуск команды sort -k 5 -n
сортирует вывод по пятому столбцу (размеру файлов). В результате выполнения конвейера мы сразу же получим необходимый результат.
А вот более сложный пример. У нас есть текстовый файл log.txt, содержащий список IP-адресов пользователей, подключавшихся к серверу.
192.168.0.1
192.168.0.2
192.168.0.1
192.168.0.3
192.168.0.2
192.168.0.1
Надо найти IP-адрес хакера, который решил загрузить наш сервер подключениями, вывести этот IP-адрес вместе с количеством подключений, попутно сохранить результат в файл top_user.txt. Из инструментов у нас только оболочка zsh.
В качестве решения задачи можно использовать следующий конвейер:
cat log.txt | sort | uniq -c | sort -nr | awk 'NR==1 {print $2, $1}' | tee top_user.txt
Тут каждая команда выполняет свою задачу, разберём их по порядку.
-
cat log.txt
— читает содержимое файла log.txt и передаёт его в конвейер. -
sort
— сортирует IP-адреса, чтобы одинаковые IP-адреса оказались рядом. -
uniq -с
— подсчитывает количество повторений каждой уникальной строки (IP-адреса). Флаг -c добавляет число повторений перед каждым IP. -
sort -nr
— сортирует строки по числовым значениям в порядке убывания (флаг-nr: -n
— числовая сортировка,-r
— обратный порядок). -
awk 'NR==1 {print $2, $1}'
— обрабатывает только первую строку (самый активный IP-адрес) благодаря фильтруNR==1
. Команда{print $2, $1}
выводит второй столбец (IP-адрес) и первый столбец (количество подключений). -
tee top_user.txt
— записывает результат в файл top_user.txt и одновременно выводит его на экран.
Задачу, конечно, можно было бы решить и меньшим количеством шагов, но я специально хотел показать пример длинного конвейера с разными командами.
В теории количество действий (команд) в конвейере оболочки (например, в bash или zsh) практически не ограничено. Однако на практике существуют технические и системные ограничения, которые определяют максимальную длину конвейера. Например, максимальный размер аргументов командной строки можно получить при помощи команды getconf ARG_MAX
.
Логические операторы
В POSIX-совместимых оболочках логические операторы используются для управления выполнением команд в зависимости от их успешности (возвращаемого кода завершения). Эти операторы позволяют создавать не просто сложные последовательности команд, а последовательности с условиями выполнения.
Например, команда справа от &&
выполняется, только если команда слева завершилась успешно (код завершения 0).
mkdir new_dir && cd new_dir
Если mkdir new_dir
выполнится успешно (директория будет создана), тогда выполнится cd new_dir
— переход в созданную директорию. Если первая команда завершится с ошибкой (например, папка уже существует), вторая команда не будет выполнена.
Команда справа от ||
выполняется, только если команда слева завершилась с ошибкой (код завершения не 0).
mkdir new_dir || echo "Directory already exists"
Если mkdir new_dir
завершится с ошибкой, будет выполнена команда echo
. Если директория успешно создалась, то вторая команда не выполняется.
Можно комбинировать операторы, чтобы создать более сложные условия.
mkdir new_dir && echo "Directory created" || echo "Failed to create directory"
Если команда mkdir new_dir
успешно выполнена — выполняется echo «Directory created». Если же выполнение mkdir new_dir
привело к ошибке — выполняется echo "Failed to create directory"
.
Важный момент заключается в том, что здесь выполняется либо одна из двух веток, либо обе, в зависимости от того, как завершится вторая команда. Чтобы это предотвратить, можно использовать скобки:
(mkdir new_dir && echo "Directory created") || echo "Failed to create directory"
Таким образом логические операторы позволяют строить условия, обрабатывать ошибки и упрощать написание скриптов.
Условия
Современные оболочки терминалов давно вышли за рамки простого ввода и выполнения команд. Они предоставляют инструменты, которые позволяют использовать программные конструкции, знакомые каждому разработчику: переменные, циклы, условия, функции, массивы и многое другое.
Это превращает работу в терминале в процесс, близкий к написанию настоящего кода. Например, вы можете использовать циклы для обработки данных в файлах, условные конструкции для управления потоком выполнения или создавать сложные автоматизации прямо в командной строке.
Давайте рассмотрим, как это выглядит на практике.
Итак, конструкция if
проверяет условие и выполняет определённые команды, если это условие истинно (то есть возвращает код завершения 0). Если условие ложно, можно указать команды для выполнения через else
или дополнительные проверки через elif
.
Например, предположим, что вы работаете с сервером, где нужно ежедневно проверять наличие файла с данными (например, отчёта), и если файла нет, то отправить уведомление администратору, ну или просто вывести сообщение в консоль.
Вот как это можно сделать с помощью конструкции if:
if [ -f input.txt ]; then
echo "File exists"
elif [ -d input.txt ]; then
echo "This is a directory"
else
echo "File does not exist"
fi
Здесь [ -f input.txt ]
проверяет, существует ли файл с именем input.txt. Если файла нет, проверяется условие [ -d input.txt ]
, которое проверяет, является ли объект директорией. Если оба условия ложны, выполняется блок else.
Циклы
В оболочках терминалов, как правило, доступно несколько видов циклов, которые позволяют повторять выполнение команд до достижения определённого условия. Среди них наиболее популярны while, until и, конечно же, for, который особенно часто используется для итерации по элементам, строкам файлов или другим наборам данных. Это делает его универсальным инструментом для автоматизации рутинных задач.
Например, представьте, что вам нужно переименовать все изображения в папке, добавив к их именам текущую дату. Если делать это вручную через графический интерфейс, вам придётся тратить время на каждое изображение. С помощью цикла в терминале это можно автоматизировать буквально одной командой:
for file in *.jpg
do
mv "$file" "$(date +%Y-%m-%d)_$file"
done
Этот цикл перебирает все файлы с расширением .jpg в текущей папке и переименовывает их, добавляя текущую дату перед оригинальным именем.
Такой подход экономит массу времени, особенно если изображений десятки или сотни. Кроме того, вы можете модифицировать цикл для других задач, в основе которых лежит перебор чего-либо, например файлов:
for file in *.txt
do
echo "Processing $file"
done
Здесь переменная file принимает поочерёдно имена всех файлов с расширением .txt в текущей директории и для каждого файла выводится сообщение Processing <имя_файла>
.
Как и в большинстве языков программирования, в циклах, используемых в оболочках терминалов, доступны конструкции break
и continue
. С их помощью можно более гибко управлять выполнением цикла: break
позволяет досрочно завершить выполнение цикла при выполнении определённого условия, а continue
пропускает текущую итерацию и сразу переходит к следующей.
Чем ещё интересны POSIX-совместимые оболочки?
Перечислять возможности POSIX-совместимых оболочек можно практически бесконечно, но формат статьи ограничивает меня в количестве и глубине их рассмотрения. Однако если вас заинтересовала эта тема, то вот ещё несколько направлений, которые вы можете изучить самостоятельно.
-
Использование регулярных выражений позволит эффективно искать и править текст, обрабатывать логи и анализировать данные.
-
Создание собственных функций поможет вам персонализировать оболочку и ускорить выполнение часто используемых задач.
-
Модификация окружения оболочки через написание конфигурационных файлов, таких как ~/.bashrc или ~/.zshrc, позволит настроить автодополнение, цветовые схемы и переменные окружения.
-
Использование сторонних плагинов, таких как Oh My Zsh, позволит улучшить автодополнение, добавит красивые подсказки и расширенную интеграцию с Git.
-
Взаимодействие с сетевыми утилитами или с такими инструментами, как curl, wget, ssh и scp, поможет выполнять сетевые операции прямо из командной строки.
-
Управление процессами даст возможность работать с фоновыми и приостановленными процессами и управлять приоритетами процессов.
-
Отладка скриптов позволит использовать инструменты вроде
set -x
иtrap
для пошагового анализа выполнения команд.
Это не обязательный к изучению материал для начинающего специалиста, однако понимание и умение применять знания из перечисленных тем даст гораздо больше возможностей для профессионального роста и поможет вам раскрыть весь потенциал POSIX-совместимых оболочек.
Что в итоге?
Я разобрал лишь некоторые из множества возможностей POSIX-совместимых оболочек, которые, на мой взгляд, важно показать тем, кто только начинает знакомство с разработкой и учится работать в командной строке. Мы коснулись основ: работы с историей команд, вызовом справки, построением конвейеров и другими полезными функциями, которые делают консоль мощным инструментом в руках разработчика.
У меня не было цели создать ещё один справочник по командам — таких ресурсов уже достаточно, и они легко доступны через, например, поиск. Вместо этого я сосредоточился на фундаментальных моментах, которые помогают понять суть и возможности работы через интерфейс командной строки. Освоив эти базовые приёмы, вы сможете с уверенностью двигаться дальше, изучать новые команды, автоматизировать рутину и использовать терминал как полноценный инструмент для решения самых разных задач.
Надеюсь, эта статья вдохновит вас на дальнейшее изучение материала и, начав с малого, вы сможете достичь больших результатов и открыть для себя удобство терминала, которое так ценят опытные разработчики.
Получить доступ к некоторым скрытым возможностям Windows и автоматизировать многие процессы можно при помощи командной строки.
Windows сегодня – полноценная операционная система, к которой написаны тысячи программ для решения любых задач. Однако, пользователи со стажем не раз сталкивались с ситуациями, когда некоторые программы во время запуска или работы вдруг открывали чёрное окошко с кучей строк текста…
Это – Командная строка, которая, не имея собственного графического интерфейса, позволяет выполнять целый ряд полезных функций. И в сегодняшней статье я бы как раз хотел уделить внимание этому довольно интересному инструменту, который может пригодиться каждому пользователю!
Немного истории и теории
А началось всё с того, что в далёком уже 1981 году компания Microsoft создала свою версию операционной системы DOS для IBM-совместимых ПК:
DOS – это аббревиатура от «Disk Operation System», то есть, по-нашему «Дисковая операционная система». Она позволяла оперировать файлами и каталогами на жёстких дисках и съёмных носителях, вроде дискет, а также являлась прослойкой для запуска различных сторонних прикладных программ.
По этому же принципу работает и Командная строка Windows, которая с появлением нормального графического интерфейса, по сути, осталась для обеспечения обратной совместимости с некоторым ПО под DOS и работы пакетных файлов команд (о них немного ниже).
В отличие от консоли Linux, функционал Командной строки значительно более скуден. С целью его увеличения в своё время создавались различные дополнительные терминалы, вроде интерпретатора команд COMMAND.COM или современной PowerShell. Однако, именно CMD.EXE до сих пор остаётся самым популярным инструментом, поскольку «умеет» не так уж и мало:
- работать с файлами и папками (перемещать, копировать, удалять и, частично, создавать);
- управлять некоторыми функциями системы (запускать/отключать процессы, выполнять перезагрузку);
- отображать некоторые сведения о системе (информацию о сети, дисках);
- запускать всевозможные консольные утилиты и сценарии.
Естественно, полноценно программировать с использованием Командной строки не получится. Однако, создавать несложные сценарии автоматизации рутинных задач с последующим их выполнением, например, посредством штатного Планировщика, думаю, при желании сможет каждый!
Вызов командной строки
Для того, чтобы получить доступ к Командной строке, её нужно вначале запустить. Сделать это в Windows можно несколькими способами.
Способ 1. Вручную
Поскольку Командная строка является обычным исполняемым файлом, который находится в папке Windows\System32 на основном разделе диска с системой, то его можно запустить вручную, открыв вышеназванную папку и запустив файл cmd.exe:
Способ 2. Меню «Пуск»
В версиях Windows с меню «Пуск» (кроме «Восьмёрки») командную строку можно запустить, пройдя по пути «Пуск» – «Все программы» – «Стандартные»:
Способ 3. Строка «Выполнить»
Самым же быстрым и удобным, на мой взгляд, является запуск Командной строки посредством системного диалога «Выполнить». Вызвать его можно из меню «Пуск» или сочетанием клавиш WIN+R. Вводим в строке команду CMD или CMD.EXE, жмём Enter и получаем нужный результат:
Принцип работы
Итак, перед нами открылась вожделенная Командная строка, но что с ней делать? Для начала рекомендую ознакомиться со списком доступных команд. Для его получения достаточно ввести слово «help» (без кавычек) и нажать Enter:
В зависимости от версии Windows мы получим примерно до сотни различных команд с кратким описанием. Разделить их можно на несколько групп:
- Команды для работы с файлами и папками, вроде копирования, анализа и удаления (ATTRIB, COPY, REM, DEL и др.).
- Команды для работы с текстовыми данными для чтения текстовых файлов, вывода на экран их содержимого, обработки строк и их последующего сохранения (TYPE, FIND, COMP…).
- Команды управления операционной системой, например, функция печати (PRINT), форматирования носителя (FORMAT), анализа диска (CHKDSK) и т.п.
- Команды для работы с приложениями: START для запуска или TASKKILL для закрытия активного процесса.
- Служебные команды для использования их в скриптах автоматизации (IF, GOTO, AT, CALL, FOR и т.д.).
- Справочные команды для получения информации о системе или других командах (HELP, VER, ECHO…).
- Вспомогательные команды: CLS для очистки экрана консоли, COLOR для настройки цвета текста и фона Командной строки, TITLE для установки заголовка окна текущей сессии терминала и т.п.
Каждая команда может иметь один или несколько дополнительных параметров, а также использовать для своей работы так называемые ключи, которые являются модификаторами поведения команды. Чтобы получить справку по ним достаточно ввести название нужной Вам команды, через пробел без кавычек написать «/?» (или слово «help») и нажать Enter:
Справка по встроенным командам обычно довольно полная и включает в себя:
- описание команды;
- общий пример вида команды со всеми параметрами и ключами;
- описание всех ключей;
- рекомендации по использованию (не всегда);
- конкретные примеры использования (не всегда).
В принципе, обладая информацией о сфере и особенностях применения той или иной команды, Вы вполне можете сформулировать и выполнить то, что Вам требуется. Единственный нюанс – в общих примерах часто параметры и ключи берутся в квадратные скобки ([]). Это делается только для наглядности и на практике их нужно опускать.
BAT-файлы
Если Вы разобрались с основными принципами работы Командной строки, то уже вполне можете выполнять в ней нужные Вам единичные задачи. Однако, основная прелесть любой консоли в возможности автоматизации повторяющихся задач путём последовательного выполнения пакета команд.
Чтобы выполнять за один раз несколько команд нам и нужны BAT-файлы. По сути, пакетные (или batch) файлы являются простыми текстовыми файлами с наборами консольных команд. Единственное отличие от обычных TXT-файлов – расширение, которое вручную меняется на .bat:
Ещё один нюанс! Если в именах файлов или папок, с которыми Вы собираетесь работать, имеются русские буквы, то стандартно сохранённый Блокнотом «батник» работать не будет! Чтобы использовать кириллицу Вам нужно сохранять пакетный файл в кодировке DOS (она же OEM 866), в которой по умолчанию работает Командная строка.
Для этого лучше воспользоваться альтернативными текстовыми редакторами, вроде PSPad или RJ TextED. На худой конец можно использовать и встроенный в Windows WordPad. Скопируйте в него текст своего BAT-файла из Блокнота и сохраните, как обычный Текстовый документ MS-DOS с расширением .bat:
Операторы Командной строки, переменные и вспомогательные символы
Вот Вам простой пример фрагмента BAT-файла, который лежит у меня в Планировщике и складывает загруженные из Интернета картинки в отдельную папку:
@echo off
:: Переносим изображения в папку «Картинки»
move C:\Users\Че\Downloads\*.jpg C:\Users\Че\Downloads\Картинки
move C:\Users\Че\Downloads\*.png C:\Users\Че\Downloads\Картинки
move C:\Users\Че\Downloads\*.gif C:\Users\Че\Downloads\Картинки
move C:\Users\Че\Downloads\*.psd C:\Users\Че\Downloads\Картинки
Основной функционал реализуется за счёт команды MOVE, в которой мы указывает имя исходного файла и путь к папке, в которую его нужно перенести. Однако, обратите внимание, что имя нам заранее неизвестно, поэтому вместо него мы используем специальный подстановочный символ – «*».
Кроме этого символа в приведённом выше коде мы можем видеть значок «собачки», а также двойное двоеточие. Первая конструкция позволяет отключить вывод сообщений на экран, а вторая, как нетрудно догадаться, реализует функционал комментирования.
Дело в том, что помимо команд, их параметров и ключей Командная строка оперирует ещё рядом специфических функций, которые характерны для полноценных языков программирования. К таким функциям можно отнести операторы, переменные и различные спецсимволы (вроде той же звёздочки и комментариев).
Рассмотрим следующий пример:
:: Отключаем вывод строк команд
@echo off
:: Создаём переменную с именем «var1»
set var1=5
:: Включаем арифметику (ключ /а) и вычисляем значение второй переменной
set /a var2=var1+var1
:: Перенаправляем вывод (знак «>») второй переменной в файл var.txt
echo %var2% > D:\var.txt
:: Считываем содержимое файла (знак «<«) в новую строковую (ключ /p) переменную
set /p var3=<D:\var.txt
:: И выводим на экран
echo %var3%
:: Останавливаем выполнение, чтобы увидеть результат
pause
:: Результатом выполнения сценария будет вывод в Командной строке числа 10
Из комментариев, думаю, всё понятно: здесь мы рассматриваем создание переменных и работу с ними, а также внешними текстовыми файлами. Внимание стоит обратить на следующие моменты:
- Команда SET по умолчанию создаёт, по сути, строковую переменную, но имеет два ключа: /a и /p. Первый ключ указывает, что в переменной находится число и активирует арифметические действия, второй же нужен для получения строковых данных из внешних файлов.
- Командная строка поддерживает следующие арифметические действия:
- «+» — сложение;
- «-» — вычитание;
- «*» — умножение;
- «/» — деление;
- «%» — деление по модулю;
- «+=» — сложение с присваиванием переменной нового результата (например, va1+=1 равнозначно записи var1=var1+1) (аналогично присваивание можно применить к любой вышеназванной операции).
- Для перенаправления данных используются операторы: > (вывод с перезаписью), < (ввод с заменой данных), >> (дописывание в файл), << (ввод с дописыванием данных к переменной).
- Для вывода переменных через команды ECHO, TYPE и т.п. они должны быть ограничены символами процента (%). Если символы не поставить, то будет выведено только название переменной, а не её значение.
- Если требуется остановить выполнение сценария для отображения результатов можно использовать команду PAUSE. Если этого не сделать, то по окончании выполнения сценария окно Командной строки просто закроется.
В сценариях Командной строки также очень часто можно встретить операторы, которые позволяют группировать команды, передавать потоки данных между ними, а также совершать простейшие условные переходы. Рассмотрим ещё один пример:
:: Отключаем вывод строк команд
@echo off
:: Позволяем пользователю самостоятельно задать переменную «ext» с расширением файла
set /p ext=Введите расширение для поиска:
:: Получаем список файлов в корне диска D и ищем нужное расширение. В зависимости от результата выводим сообщение
dir D:\ | find «%ext%» && echo Файлы найдены || (echo Файлы не обнаружены & echo Попробуйте ввести другие данные в следующий раз)
:: Останавливаем выполнение, чтобы увидеть результат
pause
Этот сценарий позволяет найти и вывести список всех файлов, в именах которых встречается заданный пользователем (переменная ext) набор символов. При этом за счёт использования простых условных операторов мы будем получать разный текст с пояснениями. Рассмотрим эти операторы:
- «|» — оператор конвейеризации. Позволяет передать результат выполнения одной команды для обработки другой без промежуточного вывода (в примере передаём список всех файлов на анализ команде FIND).
- «&&» — оператор выполнения команды при успешном завершении предыдущей. Выполняет следующую после него команду только, если предыдущая была успешно завершена (в примере выводим сообщение «Файлы найдены», если есть хотя бы один файл, соответствующий условию поиска).
- «||» — оператор выполнения команды при невыполнении предыдущей. Запускает команду, если предыдущая не была выполнена (в примере выводим сообщение «Файлы не обнаружены», если нет ни одного файла, соответствующего параметрам поиска).
- «&» — оператор последовательности выполнения команды. Запускает команду следующей вне зависимости от того была ли успешно выполнена предыдущая (в примере позволяет вывести дополнительное сообщение «Попробуйте ввести другие данные в следующий раз» после появления «Файлы не обнаружены»).
- «()» — оператор группирования команд. Позволяет группировать команды, которые должны выполняться при тех или иных условиях (в примере создаёт группу сообщений, которые выводятся, если поиск завершился неудачей).
В примере показан довольно примитивный вариант условий. На практике иногда лучше использовать связку команд IF и ELSE, как это делается в нормальных языках программирования. Но, тем не менее, такие сокращённые варианты записи тоже частенько встречаются.
Консольные программы
Штатных команд в консоли Windows не так уж мало, но они покрывают далеко не все нужды, которые могут возникнуть у пользователя. С этой целью Командная строка поддерживает выполнение сторонних программ, которые не имеют собственного интерфейса. Причём такие программы могут как входить в состав самой Windows, так и быть скачанными пользователем
Большинство штатных консольных программ лежит в той же папке, что и исполняемый файл CMD.EXE. Принцип работы с ними, по сути, аналогичен работе с обычными командами: достаточно ввести имя исполняемого файла вместо команды и дополнить его нужными параметрами с ключами:
О большинстве из консольных утилит можно найти информацию на специализированных сайтах, вроде, на http://cmdhelp.ru/ или же при помощи получения по ним справки прямо в Командной строке.
Для запуска же сторонних программ нужно указывать не только их название, но и полный путь к исполняемому файлу. Для примера возьмём утилиту уменьшения размера картинок в формате JPG под названием Jpegtran:
Как видим, кроме того, что указывается полный путь к исполняемому файлу, работа со сторонними консольными утилитами, в принципе, ничем не отличается от работы с встроенными в систему. Хотя, данное неудобство можно нивелировать, задав стартовой папкой консоли папку с нужной программой командой CD.
Выводы
Командная строка, конечно, не панацея, но довольно мощное средство в руках знающего человека. Она может служить как во благо, автоматизируя рутинные действия и ремонтируя системные сбои, так и во вред, удаляя нужную информацию и портя данные (многие вирусы использовали как раз BAT-файлы для нанесения ущерба компьютеру).
В любом случае, каждый продвинутый пользователь или тот, кто хочет им стать, должен хотя бы в общих чертах разбираться с консолью Windows и знать основные команды и принципы их применения. Поэтому желаю Вам успешного изучения и применения на практике новых знаний!
P.S. Разрешается свободно копировать и цитировать данную статью при условии указания открытой активной ссылки на источник и сохранения авторства Руслана Тертышного.