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

Командная строка 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 перезагрузит компьютер.

В итоге

Эта статья познакомила вас с несколькими командами, которые позволяют получить доступ к скрытым функциям вашего ПК. Будьте осторожны при работе с ними, так как они могут оказать длительное воздействие на вашу операционную систему.

В данной статье будут рассмотрены основы командной строки Windows, а именно:

  • Понятие командной строки;
  • Справочник по командам командной оболочки;
  • Последовательность событий при выполнение команды;
  • Создание сценариев командной строки;
  • Управление отображением текста и команд;
  • Команды для изучение системной информации;
  • Команды для использования реестра;
  • Управление системными службами;
  • Перезагрузка и выключение систем из командной строки;
  • Управление приложениями и  процессами из командной строки.

Содержание

  1. Понятие командной строки
  2. Краткий справочник по командам командной оболочки (Cmd.exe)
  3. Последовательность событий при выполнение команды
  4. Создание сценариев командной строки
  5. Управление отображением текста и команд
  6. Изучение системной информации
  7. Команды для использования реестра
  8. Управление системными службами
  9. Перезагрузка и выключение систем из командной строки
  10. Управление приложениями, процессами и производительностью

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

Поддержка командной строки встроена в операционную систему Microsoft Windows и доступна через окно командной оболочки. Командная строка поддерживается во всех версиях Windows и служит для запуска встроенных команд, утилит и сценариев. Несмотря на мощь и гибкость командной строки, некоторые администраторы Windows никогда ее не используют. Если вам хватает графических средств администрирования, можно применять только их, щелкая мышью элементы пользовательского интерфейса.

Однако опытные администраторы Windows, квалифицированные специалисты по технической поддержке и «продвинутые» пользователи не могут обойтись без командной строки. Зная, как правильно применять командную строку, в частности, какие средства командной строки выбрать, как и когда их использовать, чтобы они работали эффективно, можно избежать многочисленных проблем и добиться четкого выполнения операций. Если вы занимаетесь поддержкой нескольких доменов или сетей, то для автоматизации ежедневных операций не только важно, но и необходимо иметь представление об экономящих время способах работы с командной строкой.

С каждой новой версией Windows командная строка совершенствовалась, а ее возможности расширялись. Командная строка претерпела значительные изменения, связанные не только с повышением производительности, но и с увеличением гибкости. Теперь с помощью командной строки Windows можно решать задачи, которые нельзя было решить в предыдущих версиях Windows.

Среду командной оболочки Windows запускают разными способами, в частности указывая параметры при запуске Cmd.exe или используя собственный стартовый файл, хранящийся в каталоге %SystemRoot%\System32.

Кроме того, командная строка может работать в пакетном режиме для выполнения набора команд. В пакетном режиме командная строка считывает и выполняет команды одну за другой.

Работая с командной строкой Windows, Вы должны понимать, откуда берутся используемые Вами команды. «Родные» команды (встроенные в операционную систему) бывают двух видов:

  • Внутренние – существуют внутри командной оболочки, у них нет отдельных исполняемых файлов;
  • Внешние — реализованы в отдельных исполняемых файлах, которые обычно хранятся в каталоге %SystemRoot% \System32.

Краткий справочник по командам командной оболочки (Cmd.exe)

  • assoc — выводит или изменяет сопоставления (associations) типов файлов;
  • break — задает точки останова при отладке
  • call — вызывает из сценария процедуру или другой сценарий;
  • cd (chdir) — показывает имя текущего каталога или выполняет смену текущего каталога;
  • cls — очищает окно командной строки и буфер экрана;
  • color — задает цвета текста и фона окна командной оболочки;
  • сору — копирует файлы или выполняет конкатенацию файлов;
  • date — показывает или устанавливает текущую дату;
  • del (erase) — удаляет заданный файл, группу файлов или каталог;
  • dir — показывает список подкаталогов и файлов в текущем или заданном каталоге;
  • echo — выводит текст в окно командной строки или задает, надо ли отображать команды на экране (on|off);
  • endlocal — отмечает конец локализации (локальной области видимости) переменных;
  • exit — выход из оболочки командной строки;
  • for — выполняет заданную команду для каждого файла в наборе;
  • ftype выводит или изменяет текущие типы файлов в сопоставлениях расширений файлов с программами;
  • goto — указывает, что интерпретатор команд должен перейти на строку с заданной меткой в пакетном сценарии;
  • if — выполняет команды по условию;
  • md (mkdir) — создает подкаталог в текущем или заданном каталоге;
  • move — перемещает файл или группу файлов из текущего или заданного исходного каталога в указанный каталог. Также может переименовывать каталог;
  • path — показывает или задает путь к командам, используемый операционной системой при поиске исполняемых файлов и сценариев;
  • pause — останавливает выполнение пакетного файла и ожидает ввода с клавиатуры;
  • popd — делает текущим каталог, имя которого было сохранено командой PUSHD;
  • prompt — указывает, какой текст должен показываться в строке приглашения;
  • pushd — сохраняет имя текущего каталога и при необходимости делает текущим заданный каталог;
  • rd (rmdir) — удаляет каталог или каталог вместе с его подкаталогами;
  • rem — помечает комментарии в пакетном сценарии или Config.nt;
  • ren (rename) — Переименовывает файл или группу файлов;
  • set — показывает текущие переменные окружения или задает временные переменные для текущей командной оболочки;
  • setlocal — отмечает начало локализации (локальной области видимости) переменных в пакетных сценариях;
  • shift — сдвигает позицию замещаемых параметров в пакетных сценариях;
  • start — запускает заданную программу или команду в отдельном окне;
  • time — показывает или устанавливает системное время;
  • title — задает заголовок окна командной оболочки;
  • type — показывает содержимое текстового файла;
  • verify — включает режим проверки файлов после записи на диск;
  • vol — показывает метку и серийный номер дискового тома.

Синтаксис любой внутренней команды (и большинства внешних) можно получить, введя в командной строке имя команды и /?, например:

   
   copy /?

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

Последовательность событий при выполнение команды

  • Командная оболочка заменяет любые переменные, введенные в тексте команд, их текущими — значениями;
  • Если введена группа или цепочка из нескольких команд, строка разбивается на отдельные команды, которые в свою очередь разбиваются на имя и аргументы команды. Далее команды обрабатываются по отдельности;
  • Если в имени команды указан путь, командная оболочка ищет команду по этому пути. Если в указанном каталоге такой команды нет, командная оболочка возвращает ошибку;
  • Если в имени команды не задан путь, командная оболочка сначала пытается разрешить имя команды на внутреннем уровне. Если найдена внутренняя команда с таким именем, значит, вызвана внутренняя команда, которую сразу же можно выполнить. Если внутренней команды с таким именем нет, командная оболочка сначала ищет исполняемый файл команды в текущем каталоге, а затем в каталогах, перечне в переменной окружения PATH. Если файла команды нет ни в одном из этих каталогов, командная оболочка возвращает ошибку;
  • Если команда найдена, она выполняется с заданными аргументами и при необходимости ввод считывается из источника, указанного в этих аргументах. Вывод и ошибки команд показываются в окне командной строки или направляются заданному приемнику вывода и ошибок.
  • Как видите, на выполнение команд влияют многие факторы, в том числе пути к командам, перенаправление ввода-вывода, группирование или создание цепочек команд.

При работе с командной оболочкой Вы, вероятно, запускали ее, открывая меню Start (Пуск) и выбирая Programs (Программы) или All Programs (Все программы), затем Accessories (Стандартные) и Command Prompt (Командная строка). Другие способы запуска командной строки — диалоговое окно Run (Запуск программы) или ввод cmd в другом, уже открытом окне командной оболочки. Эти способы позволяют при запуске командной строки указывать аргументы: ключи, управляющие работой командной строки, и параметры, инициирующие выполнение дополнительных команд. Например, можно запустить командную оболочку в «молчаливом» режиме (т. е. отключить эхо-вывод) командой cmd /q или сделать так, чтобы командная оболочка выполнила заданную команду и завершила свою работу, — для этого нужно ввести cmd /с, а затем текст команды в кавычках.

В следующем примере командная оболочка запускается, выполняет команду ipconfig с выводом результатов в файл и завершается:

   
   cmd /c "ipconfig > c:\ipconfig.txt"

Создание сценариев командной строки

Сценарии командной строки — текстовые файлы с командами, которые вы хотите выполнить. Это те же команды, которые обычно вводятся в командной оболочке Windows. Однако вместо того чтобы вводить команды каждый раз, когда они понадобятся, можно создать соответствующий сценарий и упростить себе жизнь.

Поскольку сценарии состоят из стандартных текстовых символов, их можно создавать и редактировать в любом стандартном текстовом редакторе, скажем, в Notepad (блокнот). Вводя команды, убедитесь, что каждая команда или группа команд, которые должны выполняться совместно, разметаются с новой строки. Это обеспечит их корректное выполнение. Закончив создание сценария командной строки, сохраните файл сценария с расширением .bat или .cmd. Оба расширения работают одинаково. Например, если вам надо создать сценарий для вывода имени системы, версии Windows и конфигурации IP, включите в файл SysInfo.bat или SysInfo.cmd следующие три команды:

  
  hostname
  ver
  ipconfig -all

Управление отображением текста и команд

Команда ECHO служит двум целям: для записи текста в вывод (например, в окно командной оболочки или текстовый файл) и для включения/выключения эхо-отображения команд. Обычно при выполнении команд сценария сами команды и вывод этих команд отображаются в консольном окне. Это называется эхо-отображением команд (comand echoing).

Чтобы использовать команду ECHO для отображения текста, введите echo и текст, который надо вывести:

  
  echo The system host name Is: hostname

Чтобы с помощью ECHO управлять эхо-отображением команд, введите echo off или echo on, например:

  
  echo off
  echo The system host name is:
  hostname

Чтобы направить вывод в файл, а не в окно командной оболочки, используйте перенаправление вывода, например:

  
  echo off
  echo The system host name is: > current.txt
  hostname » current.txt

Теперь посмотрим, как подавляется эхо-отображение команд. Запустите командную оболочку, введите echo off, затем другие команды. Вы увидите, что приглашение командной строки больше не выводится. Вместо него появляется только то, что набирается в консольном окне, и вывод выполненных команд. В сценариях команда ECHO OFF отключает эхо-отображение команд и приглашение командной строки. Добавляя в свои сценарии команду ECHO OFF, вы предотвращаете загромождение окна командной оболочки или файла текстом команд, если Вас интересует лишь вывод от этих команд.

Изучение системной информации

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

  • NOW — отображает текущую системную дату и время в 24-часовом формате, например Sal May 9 12:30:45 2003. Доступна только в Windows Server 2003 Resource Kit;
  • WHOAMI — сообщает имя пользователя, зарегистрированного в системе на данный момент, например adatum\admi-nistrator;
  • WHERE — выполняет поиск файлов по шаблону поиска (search pattern) и возвращает список совпавших результатов.

Чтобы использовать NOW или WHOAMI, просто введите команду в окне командной оболочки и нажмите Enter. Наиболее распространенный синтаксис для WHERE выглядит так:

  
  where /r базовый_каталог_имя_файла

Здесь параметр /r указан для рекурсивного поиска, начиная от указанного каталога (базовый_каталог) и включая все его подкаталоги, а имя_файла — полное или частичное имя искомого файла, которое может включать символы подстановки (wildcards): знак ? заменяет один символ, а знак * — группу символов, например data???.txt или data*.*. В следующем примере в каталоге С:\ и всех его подкаталогах выполняется поиск всех текстовых файлов, имена которых начинаются с data.

   
  where /r C:\ data*.txt

Также можно найти файлы всех типов, имена которых начинаются с data:

   
  where /r C:\ data*.*

Иногда нужно получить информацию о конфигурации системы или о системном окружении. В критически важных системах эту информацию можно сохранить или распечатать для справки. Ниже перечислены команды, позволяющие собирать информацию о системе.

  • DRIVERQUERY — выводит список всех установленных драйверов устройств и их свойства, в том числе имя модуля (module name), отображаемое имя (display name), тип драйвера и дату сборки (driver link date). В режиме отображения всей информации (/V) сообщается статус (status) и состояние (state) драйвера, режим запуска, сведения об использовании памяти и путь в файловой системе. Параметр /V также включает вывод детальной информации обо всех неподписанных драйверах.
  • SYSTEMINFO — выдает подробную информацию о конфигурации системы, в том числе сведения о версии, типе и изготовителе операционной системы, процессоре, версии BIOS, объеме памяти, региональных стандартах, часовом поясе и конфигурации сетевого адаптера.
  • NLSINFO — отображает подробную информацию о региональных стандартах, включая язык по умолчанию (default language), кодовую страницу Windows, форматы отображения времени и чисел, часовой пояс и установленные кодовые страницы. Эта команда доступна лишь в Windows Server 2003 Resource Kit.

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

Команды для использования реестра

Реестр Windows хранит конфигурационную информацию операционной системы, приложений, пользователей и оборудования. Эти данные содержатся в разделах (keys) и параметрах (values) реестра, которые размещаются в определенном корневом разделе (root key), который контролирует, как и когда используются разделы и параметры.

Если Вы знаете пути к разделам и понимаете допустимые типы данных в разделах, то можете использовать команду REG для просмотра разделов и параметров и манипуляций над ними самыми разнообразными способами. REG поддерживает несколько подкоманд:

  • REG add — добавляет в реестр новый подраздел или элемент;
  • REG delete — удаляет из реестра подраздел или элемент;
  • REG query — выводит список элементов раздела и имена подразделов (если они есть);
  • REG compare — сравнивает подразделы или элементы реестра;
  • REG сору — копирует элемент реестра по указанному пути раздела на локальной или удаленной системе;
  • REG restore — записывает в реестр ранее сохраненные подразделы, элементы и параметры;
  • REG save — сохраняет копию указанных подразделов, элементов и параметров реестра в файл.

Управление системными службами

Службы обеспечивают ключевые функции рабочих станций и серверов. Для управления системными службами на локальных и удаленных системах используется команда контроллера служб (service controller command) SC, имеющая набор подкоманд, ниже описывается лишь их часть:

  • SC config — настройка учетных записей регистрации и запуска служб;
  • SC query — вывод списка всех служб, настроенных на компьютере;
  • SC qc — отображение конфигурации определенной службы;
  • SC start — запуск служб;
  • SC stop — остановка служб;
  • SC pause — приостановка работы служб;
  • SC continue — возобновление работы служб;
  • SC failure — задание действий, выполняемых при сбое службы;
  • SC qfailure — просмотр действий, выполняемых при сбое службы.

Во всех командах можно указывать имя удаленного компьютера, со службами которого Вы хотите работать. Для этого вставьте UNC-имя или IP-адрес компьютера перед используемой подкомандой. Вот синтаксис:

  
  sc ИмяСервера Подкоманда

Перезагрузка и выключение систем из командной строки

Системы нередко приходится перезагружать или выключать. Один из способов — использовать для этого утилиту Shutdown, которая позволяет работать с локальной и удаленными системами. Другой способ управлять выключением или перезагрузкой системы — назначить задание для выключения. Здесь можно использовать Schtasks, чтобы указать время выключения, или создать сценарий со списком команд выключения для индивидуальных систем.

Управлять перезагрузкой и выключением локальной системы позволяют следующие команды.

Выключение локальной системы:

  
  shutdown /s /t ЗадержкаВыключения /1 /f

Перезагрузка локальной системы:

  
  shutdown /r /t ЗадержкаВыключения /1 /f

Управление приложениями, процессами и производительностью

Всякий раз, когда операционная система или пользователь запускает службу, приложение или команду, Microsoft Windows запускает один или более процессов для управления соответствующей программой. Несколько утилит командной строки упростят вам мониторинг программ и управление ими. К этим утилитам относятся:

  • Pmon (Process Resource Manager) — показывает статистические данные по производительности, включая использование памяти и процессора, а также список всех процессов, выполняемых в локальной системе. Позволяет получать детальные «снимки» задействованных ресурсов и выполняемых процессов. Pmon поставляется с Windows Resource Kit;
  • Tasklist (Task List) — перечисляет все выполняемые процессы по имени и идентификатору процесса, сообщает информацию о сеансе пользователя и занимаемой памяти;
  • Taskkill (Task Kill) — останавливает выполнение процесса, заданного по имени или идентификатору. С помощью фильтров можно останавливать процессы в зависимости от их состояния, номера сеанса, процессорного времени, занимаемой памяти, имени пользователя и других параметров.

Вот в принципе все, что я хотел рассказать об основах командной строки Windows.

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

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

Настройка рабочего окружения

Самые популярные командные оболочки — Bash, Zsh и Fish.

Bash

На новых серверах с Unix-подобной системой установлен ненастроенный Bash: файлы и папки отображаются без цветовой схемы, командная строка не выводит текущее местонахождение в системе. Добавить эти функции можно в конфигурационном файле .bashrc.

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

Например:

			# Поиск всех файлов больше 500MB в текущей директории и поддиректориях
alias findlarge='find . -type f -size +500M -exec ls -lh {} \;'

# Вместо длинной команды find . -type f -size +500M -exec ls -lh {} \;
findlarge
		

Написанные для Bash скрипты будут работать практически везде. В отличие от оболочек вроде Zsh и Fish, Bash не требует сложной настройки — его функционала достаточно для большинства задач системного администрирования.

Zsh

Устанавливается из репозитория дистрибутива:

Zsh не отличается особой функциональностью по умолчанию, однако есть скрипт Oh My Zsh, расширяющий возможности командной оболочки. Это набор конфигурационных файлов и плагинов, созданных сообществом. Такие же готовые настройки есть для Bash и Fish.

Oh My Zsh добавляет новые функции:

  • подсветку файлов и папок; 
  • отображение времени команд; 
  • автодополнение команд, исходя из истории ввода;
  • отображение подсказок и др.

По аналогии с Bash, командную оболочку Zsh можно вручную настраивать в конфигурационном файле .zshrc.

Fish

Устанавливается из репозитория дистрибутива:

После установки Fish выведет ссылку на localhost, которая отправит на страницу настройки командной оболочки.

Лучшие практики для работы с командной строкой 1

С помощью панели конфигурации можно выбирать цветовую схему, вводить новые функции, добавлять локальные переменные, просматривать историю команд и др.

Сравнение Zsh, Fish и Bash

  1. Если начать вводить команду ls -a, то Bash при нажатии «Tab» ничего не сделает. Zsh и Fish на то же действие ответят интерактивной подсказкой: выведут все флаги для команды с кратким описанием и возможностью применения ключа.
  2. Zsh и Fish отличаются улучшенной навигацией по директориям. При вводе директории в Bash отображается лишь перечень возможных вариантов перемещения. Аналогичная команда в Zsh и Fish вызывает интерактивный список, в котором сразу можно выбрать директорию для перехода.
  3. Если ввести неправильную команду, Bash и Zsh выдадут ошибку только после попытки выполнения. Оболочка Fish предупредит о некорректном вводе до выполнения, окрасив строку в красный цвет.
  4. В Fish для математических вычислений есть команда math. В дефолтном Bash или Zsh те же операции выполнять сложнее.
  5. Fish поддерживает vim. Можно набрать команду и переключиться в визуальный режим. При этом в командной оболочке работает навигация из vim, сочетания клавиш для удаления, копирования и вставки строк. 
  6. Синтаксис Fish и Bash отличается. Поэтому Fish обычно используют для интерактивной работы (из-за удобного автодополнения, подсветки синтаксиса и т. д.), но пишут скрипты на Bash для лучшей совместимости.

Несмотря на преимущества Fish, стоит учитывать, что она сложнее в настройке, особенно когда ресурсы сервера ограничены. Можно настроить Bash аналогично Fish, но это займет немало времени.

Эффективная навигация по файловой системе

Для перемещения по файловой системе в Bash есть 4 основные команды: pwd, cd, ls, find.

Текущая директория

В первую очередь нужно знать свое местонахождение в системе. Определить его можно командой pwd, которая выводит полный путь текущей директории.

С помощью флагов можно получить путь логический (-L, по умолчанию) или реальный (-P):

			# Создание структуры с символическими ссылками
mkdir -p /tmp/real/path
ln -s /tmp/real/path /tmp/virtual/path

# Проверка реального расположения
cd /tmp/virtual/path
pwd -L    # Покажет виртуальный путь
pwd -P    # Покажет реальный путь без символических ссылок
		

В большинстве случаев достаточно pwd без опций.

Быстрое перемещение между директориями

cd — команда для перемещения в системе:

			cd Pictures      # перейти в папку Pictures
cd ..             # вернуться на уровень выше
cd -             # вернуться в предыдущую папку
		

Из любого места можно быстро вернуться в домашний каталог /home/пользователь/ или сразу перейти в подкаталог (например, /home/пользователь/Documents):

			cd                     # без параметров
cd ~/Documents         # тильда заменяет /home/пользователь/
cd $HOME/Documents   # $HOME заменяет /home/пользователь/
		

Bash поддерживает функцию автодополнения: можно написать первые буквы из названия папки и автоматически дописать путь нажатием «Tab».

Если папок с одинаковым началом несколько, нужно дважды нажать «Tab» — командная строка выведет все варианты написания. Bash будет ожидать, что пользователь продолжит ввод, пока не останется один возможный вариант.

			$ cd D
Desktop/ Documents/ Downloads/

# Bash вывел все возможные варианты каталогов, начинающихся на D
# Чтобы уточнить, какой именно каталог нужен, добавляем следующую букву:

$ cd De
# Автоматически дополняется до:
$ cd Desktop/
		

Автодополнение в командной строке Bash адаптируется под контекст команды. Например, для cd дополняются названия каталогов, для cat — названия файлов, для ssh — имена хостов, а для chown — имена пользователей.

Просмотр содержимого директорий

ls — команда для просмотра списка файлов и каталогов. Без параметров она показывает файлы и папки в текущей директории:

			ls              # список файлов в текущей директории
ls /etc         # содержимое папки etc
		

У команды ls множество опций. Основные из них:

			ls -la          # подробный список всех файлов, включая скрытые
ls -lh          # размеры в KB, MB, GB вместо байтов
ls -lt          # сортировка по времени изменения
ls -lS          # сортировка по размеру
		

Поиск файлов

Find находит файлы по критериям: названию, дате изменения, размеру и др.

Команда состоит из трех частей:

			find каталог критерий действие
		
			# Поиск по имени
find /home -name "filename.txt"    # Учитывает регистр
find /home -iname "filename.txt"   # Игнорирует регистр

# Поиск по типу файла
find /home -type d    # Поиск директорий
find /home -type f    # Поиск файлов

# Поиск по размеру
find /home -size +1G    # Файлы больше 1 ГБ
find /home -size -1M    # Файлы меньше 1 МБ
		

Find поддерживает опции -delete, -ls и др. С помощью -exec можно выполнять преобразования самописными функциями. Полный разбор возможностей Find — тема для отдельной статьи.

Работа с историями команд в Bash

С нуля вводить предыдущую команду, чтобы изменить один флаг, — непродуктивно. Командная строка Bash запоминает историю ввода. Листать команды можно стрелками вверх и вниз, и посмотреть все предыдущие команды одним списком:

Рекомендуется установить следующие параметры хранения последних команд в ~/.bashrc:

			HISTSIZE=5000        # Количество команд в памяти
HISTFILESIZE=10000   # Количество команд в файле истории
		

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

Чтобы такого не происходило, нужно добавлять команды в конец файла истории. Для этого в ~/.bashrc нужно добавить следующее:

Стандартное использование клавиш-стрелок для навигации по истории команд не всегда доступно. В таких случаях можно использовать альтернативные сочетания:

  • Ctrl + p — переход к предыдущей команде;
  • Ctrl + n — переход к следующей команде;
  • Alt + < — переход к первой команде в истории;
  • Alt + > — переход к последней команде в истории.

Чтобы не листать все предыдущие команды, можно ввести только ее фрагмент и выполнить поиск по совпадениям сочетанием Ctrl+R.

Управление процессами и ресурсами

Умение отслеживать запущенные процессы и при необходимости завершать зависшие программы помогает поддерживать стабильность системы. Для этого можно использовать один из трех инструментов: top, htop или ps.

top — как диспетчер задач в Windows. После ввода команды в терминале отображается список всех запущенных процессов и обновляется в реальном времени.

Лучшие практики для работы с командной строкой 2

Вывод команды top

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

htop нет в дефолтном Bash. Установка выполняется командой:

Еще список процессов можно отобразить командой ps. Она выводит список запущенных программ в моменте и не обновляет данные, как top и htop.

Фоновые процессы

Иногда нужно запустить программу в фоне или перевести ее туда. Сделать это можно, добавив символ «&» в конец командной строки.

Для перевода работающей программы в фон нужно нажать Ctrl+Z, чтобы приостановить. Затем необходимо ввести bg для запуска процесса в фоновом режиме и fg, чтобы вернуть из фона.

Список всех фоновых задач можно увидеть, если ввести команду jobs.

Если программа зависла или ее нужно остановить, поможет команда kill. Для завершения необходимо знать PID процесса (отображается в таблице top, htop и ps):

			kill PIDkill -9 PID # если программа зависла
		

Работа с текстовыми данными

Рассмотрим основные инструменты и приемы для работы с текстовыми данными в командной строке.

Базовые команды для работы с текстом: cat, grep, awk, sed

cat

Команда cat используется для просмотра содержимого файлов и объединения.

Просмотр содержимого:

Объединение нескольких файлов:

			cat file1.txt file2.txt > combined.txt
		

grep

Команда grep ищет текст по шаблону:

Найти строки «error» в файле:

Показать номера строк с совпадениями:

			grep -n "pattern" file.txt
		

awk

Команда awk запускает инструмент для обработки текста по столбцам:

Вывод первого столбца из файла:

			awk '{print $1}' file.txt
		

Сумма чисел в первом столбце:

			awk '{sum += $1} END {print sum}' numbers.txt
		

sed

Команда sed используется для замены текста:

Замена первого вхождения «old» на «new»:

			sed 's/old/new/' file.txt
		

Удаление пустых строк:

Конвейеры

Передавать вывод одной команды на вход другой можно при помощи конвейеров.

Поиск строк с «error» и подсчет их количества:

			grep "error" log.txt | wc -l
		

Вывод первых 15 строк с «error»:

			grep "error" log.txt | head -n 15
		

Когда данные передаются через конвейер, они обрабатываются последовательно. Система не ждет завершения работы первой команды, чтобы начать выполнение второй.

Перенаправление ввода и вывода

В Bash можно изменять стандартные потоки команд, направляя их в файлы или от файлов, а также связывая между собой.

Операторы перенаправления

«>» — перенаправляет стандартный вывод команды в файл, создавая его, если он не существует, или перезаписывая, если файл уже существует.

«>>» — перенаправляет стандартный вывод команды в конец файла, не перезаписывая его.

«<» — перенаправляет содержимое файла на стандартный ввод команды.

«2>» — перенаправляет стандартный поток ошибок в файл.

			grep "pattern" file.txt 2> errors.log
		

«&>» — перенаправляет стандартный вывод и стандартный поток ошибок в один файл.

Перенаправление в командной строке используется вместе с конвейерами для более гибкой обработки данных.

Автоматизация и скрипты

В командной строке можно написать скрипт для автоматизации рутинных задач.

Bash-скрипты — файлы с последовательностью команд, которые выполняются одна за другой. Они имеют расширение .sh и начинаются с #!/bin/bash.

Пример простого bash-скрипта для резервного копирования:

			#!/bin/bash

# Откуда скопировать
source_dir="/home/user/important_data"

# Куда сохранить
backup_dir="/mnt/backup"

# Создать имя архива с текущей датой
backup_date=$(date +%Y-%m-%d)
archive_name="backup-$backup_date.tar.gz"

# Создать архив и сохранить его в директорию для резервных копий
tar -czf "$backup_dir/$archive_name" "$source_dir"

echo "Резервная копия создана: $backup_dir/$archive_name"
		

В Bash-скриптах также применимы циклы (for, while) и условия (if, case) для управления потоком выполнения.

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

Если еще немного усложнить задачу, то можно сделать так, чтобы скрипт без участия пользователя запускался в указанное время.

Планировщики задач

Планировщик Cron откладывает автоматический запуск скрипта с заданным интервалом. У каждого пользователя есть свой файл crontab, в котором можно указать команды и время их выполнения. Формат записи в crontab: минуты, часы, день месяца, месяц, день недели, команда.

Например, «0 1 * * * backup.sh» будет запускать скрипт backup.sh каждый день в 1:00.

At — упрощенный аналог Cron. Утилита используется для однократного выполнения задач в указанное время.

Безопасность в командной строке

При работе в командной строке важно следить за правами доступа к файлам и директориям. Две ключевые команды для этого — chmod и chown.

chmod изменяет права доступа к файлам и папкам. С ее помощью можно указать, кто может читать, записывать и выполнять файл или директорию. Например:

Команда дает владельцу файла права на чтение и запись (6), а остальным пользователям — только на чтение (4).

chown используется для смены владельца файла или директории. Например:

			chown vadim:admin document.txt
		

Команда назначает пользователя «vadim» владельцем файла «document.txt», а группу «admin» — группой-владельцем.

Еще один аспект безопасности в командной строке — использование sudo. Команда дает временные права суперпользователя (root) и разрешает программе вносить изменения в систему. Следует использовать sudo с осторожностью:

  • проверять команды перед выполнением с sudo;
  • использовать sudo только когда это действительно необходимо.

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

Инструменты для повышения продуктивности

Напоследок перечислим лучшие инструменты, которые упрощают работу с командной строкой.

Менеджеры пакетов

Упрощают установку, обновление и удаление программ в Linux.

Три популярных менеджера пакетов:

  • apt — используется в Debian, Ubuntu и других дистрибутивах на базе Debian;
  • yum — используется в Red Hat, CentOS и Fedora;
  • brew — популярный менеджер пакетов для macOS.

Многооконные менеджеры

Делят терминал на несколько панелей, чтобы работать с ними одновременно.

Два популярных инструмента: tmux и screen.

Лучшие практики для работы с командной строкой 3

Два отдельных терминала в одном окне tmux

С их помощью можно открывать терминальные сессии (для разных проектов) и переключаться между ними. Еще интереснее то, что с помощью плагина tmux-tpm менеджер сохранит эти сессии при перезагрузке компьютера.

Расширенные текстовые редакторы

Текстовые редакторы упрощают работу с кодом:

  • vim — популярный редактор с режимами вставки и команд. В одном режиме можно вводить текст, в другом — выполнять команды для редактирования. Еще vim поддерживает горячие клавиши и команды.
  • nano — простой редактор. Он подходит для быстрого редактирования файлов без необходимости изучать множество команд, как в vim.

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

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

  • возможно, вам стоит попробовать новую командную оболочку: Fish или Zsh;
  • или освоить продвинутую навигацию по файловой системе;
  • или начать использовать многооконные менеджеры;
  • или автоматизировать рутинные операции с помощью скриптов.

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

А если хотите овладеть командной строкой как настоящий профи — Собрали полезные инструменты и команды тут

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

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

  • Терминал
  • Командная оболочка

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

Терминал

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

Терминал

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

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

Сплиты в Iterm2

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

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

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

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

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

Terminal

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

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

~$ 

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

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

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

date

Sun Aug 26 14:02:59 CEST 2018
█

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

# Комментарий

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

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

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

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

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

Pipeline

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

Командную оболочку нередко называют реплом от английского REPL (Read-Eval-Print-Loop). Это сокращение отражает способ взаимодействия командной оболочки с пользователем:

  • Read — оболочка ждет ввода команды от пользователя
  • Eval — исполняет введенную команду
  • Print — выводит результат
  • Loop — возвращаемся к первому пункту

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

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

Чтобы вам было удобнее выполнять задания к урокам, в среде Хекслета сразу запущено два терминала. Терминалы доступны в нижних вкладках под именами Terminal 1 и Terminal 2.

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


Самостоятельная работа

Чтобы научиться работать в командной строке, нужно как можно больше практиковаться в терминале на вашем компьютере.

Сначала нужно установить терминал. Установка зависит от вашей операционной системы:

  • Если вы используете Linux или MacOS, в вашей операционной системе уже есть установленный терминал. Можете использовать его или скачать более продвинутую версию — например, iTerm2 для MacOS и Tilix для Linux

  • Если вы работаете с ОС Windows, вам потребуется использовать WSL

    Далее убедитесь, что внутри терминала можно запустить bash-сессию. Откройте терминал и введите такой текст:

    echo $SHELL
    
    /bin/bash # Это вывод команды, которую вы ввели выше
    

Дополнительные материалы

  1. Как работать с Linux, используя Windows

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно


  • 130 курсов, 2000+ часов теории

  • 1000 практических заданий в браузере

  • 360 000 студентов

Наши выпускники работают в компаниях:

Интерфейс командной строки для начинающих разработчиков

Уровень сложностиПростой

Время на прочтение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

Тут каждая команда выполняет свою задачу, разберём их по порядку.

  1. cat log.txt — читает содержимое файла log.txt и передаёт его в конвейер.

  2. sort — сортирует IP-адреса, чтобы одинаковые IP-адреса оказались рядом.

  3. uniq -с — подсчитывает количество повторений каждой уникальной строки (IP-адреса). Флаг -c добавляет число повторений перед каждым IP.

  4. sort -nr — сортирует строки по числовым значениям в порядке убывания (флаг -nr: -n — числовая сортировка, -r — обратный порядок).

  5. awk 'NR==1 {print $2, $1}' — обрабатывает только первую строку (самый активный IP-адрес) благодаря фильтру NR==1. Команда {print $2, $1} выводит второй столбец (IP-адрес) и первый столбец (количество подключений).

  6. 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-совместимых оболочек, которые, на мой взгляд, важно показать тем, кто только начинает знакомство с разработкой и учится работать в командной строке. Мы коснулись основ: работы с историей команд, вызовом справки, построением конвейеров и другими полезными функциями, которые делают консоль мощным инструментом в руках разработчика.

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

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

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Что находится в папке packages windows 10
  • Установленные приложения в реестре windows
  • Avertv studio 505 драйвер windows 10
  • Windows installer нет в списке служб
  • Как настроить разрешение монитора на windows 10