I want to display the content of a text file in a CMD window. In addition, I want to see the new lines that added to file, like tail -f
command in Unix.
asked Jun 20, 2013 at 15:16
3
We can use the ‘type’ command to see file contents in cmd.
Example —
type abc.txt
More information can be found HERE.
answered Dec 25, 2015 at 1:22
Anmol SarafAnmol Saraf
14.7k10 gold badges50 silver badges60 bronze badges
1
I don’t think there is a built-in function for that
xxxx.txt > con
This opens the files in the default text editor in windows…
type xxxx.txt
This displays the file in the current window. Maybe this has params you can use…
There is a similar question here: CMD.EXE batch script to display last 10 lines from a txt file
So there is a «more» command to display a file from the given line, or you can use the GNU Utilities for Win32 what bryanph suggested in his link.
answered Jun 20, 2013 at 15:24
inf3rnoinf3rno
24.4k11 gold badges114 silver badges194 bronze badges
0
To show content of a file:
type file.txt
— cmd
cat file.txt
— bash/powershell
answered Apr 20, 2021 at 2:28
LaurentBajLaurentBaj
4415 silver badges10 bronze badges
You can use the ‘more’ command to see the content of the file:
more filename.txt
answered Jun 5, 2017 at 19:12
1
Using a single PowerShell command to retrieve the file ending:
powershell -nologo "& "Get-Content -Wait c:logFile.log -Tail 10"
It applies to PowerShell 3.0 and newer.
Another option is to create a file called TAIL.CMD with this code:
powershell -nologo "& "Get-Content -Wait %1 -Tail %2"
answered Feb 17, 2016 at 12:59
EyalEyal
1611 silver badge9 bronze badges
1
To do this, you can use Microsoft’s more advanced command-line shell called «Windows PowerShell.» It should come standard on the latest versions of Windows, but you can download it from Microsoft if you don’t already have it installed.
To get the last five lines in the text file simply read the file using Get-Content
, then have Select-Object
pick out the last five items/lines for you:
Get-Content c:scriptstest.txt | Select-Object -last 5
Source: Using the Get-Content Cmdlet
answered May 18, 2016 at 18:50
1
You can do that in some methods:
One is the type
command: type filename
Another is the more
command: more filename
With more
you can also do that: type filename | more
The last option is using a for
for /f "usebackq delims=" %%A in (filename) do (echo.%%A)
This will go for each line and display it’s content. This is an equivalent of the type
command, but it’s another method of reading the content.
If you are asking what to use, use the more
command as it will make a pause.
answered Jun 14, 2020 at 16:01
Anic17Anic17
6855 silver badges18 bronze badges
If you want it to display the content of the file live, and update when the file is altered, just use this script:
@echo off
:start
cls
type myfile.txt
goto start
That will repeat forever until you close the cmd window.
answered Mar 11, 2017 at 3:08
1
There is no built in option available with Windows. To constantly monitor logs you can use this free application BareTailPro.
answered Jun 20, 2013 at 15:21
SudheejSudheej
1,8136 gold badges28 silver badges55 bronze badges
If you want to display for example all .config
(or .ini
) file name and file content into one doc for user reference (and by this I mean user not knowing shell command i.e. 95% of them), you can try this :
FORFILES /M *myFile.ini /C "cmd /c echo File name : @file >> %temp%stdout.txt && type @path >> %temp%stdout.txt && echo. >> %temp%stdout.txt" | type %temp%stdout.txt
Explanation :
- ForFiles : loop on a directory (and child, etc) each file meeting criteria
- able to return the current file name being process (@file)
- able to return the full path file being process (@path)
- Type : Output the file content
Ps : The last pipe command is pointing the %temp%
file and output the aggregate content. If you wish to copy/paste in some documentation, just open the stdout.txt file in textpad.
Anic17
6855 silver badges18 bronze badges
answered Nov 19, 2019 at 18:25
0
You can use either more filename.[extension] or type filename.[extension]
StupidWolf
43.7k17 gold badges37 silver badges68 bronze badges
answered Jun 4, 2021 at 6:12
2
tail -3 d:text_file.txt
tail -1 d:text_file.txt
I assume this was added to Windows cmd.exe at some point.
Ian
29.8k19 gold badges69 silver badges105 bronze badges
answered Jan 29, 2016 at 14:14
2
Время чтение: 6 минут
2013-08-24
Вторая часть поста, в котором будут рассмотрены основные команды для работы с файлами. В первой части было рассказано про то, как удалить файл и каталог используя cmd.exe, если Вы не читали, то советую прочитать. В этом посте будут рассмотрены команды, которые позволят пользователю…
- Перемещать файлы.
- Переименовывать файлы.
- Выводить содержимое файлов в консоль.
- Записывать в файл (txt) результат выполнения команды.
Как всегда, все команды будут представлены Вашему вниманию в сопровождении коротких, но ясных описаниях, а так же будут прилагаться «Пошаговые» скриншоты.
Первым делом, я расскажу, как переместить файл из одной директории в другую.
Как переместить файл через консоль?
Для перемещения файлов используется команда под названием «MOVE». Что бы переместить файл из корня диска «C: Move.txt» в папку, в моём случаи это «С:Test_Move» пишем в консоль:
Результат выполнения команды. Файл «Move.txt» был перемещён в папку «Test_Move»
Если Вам нужно переместить все файлы с конкретным расширением, то в этом случаи стоит писать так:
Для примера я создал 3 файла «Move_1.txt, Move_2.txt и Move_3.txt» Как видно из скриншота выше, все три файла были перемещённых. В этом можно убедится не закрывая консоль.
Для проверки используем команду «DIR»
С перемещением файлов на этом все. Но, если в каталоге куда нужно переместить файл уже есть такой? То пользователь получит сообщения, в котором его спросят подтвердить, перезаписать файл или нет.
Если ввести символ «Y» то файл будет перезаписан. При этом содержимое уже имеющегося файла в каталоге «C:Test_Move» будут потеряны.
Если ввести символ «N» файл не будет перемещён.
Если ввести «ALL» то будут перемещены и перезаписаны все файлы с конкретным расширением. При этом, также, содержимое файлов в директории «C:Test_Move» будут потеряны.
Примечание: За место «ALL» можно просто ввести букву «А» результат будет додже.
Что бы отключить предупреждения используется ключик «/Y»
Теперь все файлы будет перемещены и перезаписаны без всяких предупреждений. Будьте внимательны, можно потерять важную информацию.
Как переименовать файл через cmd.exe?
Для того, чтобы переименовать существующий файл используется команда «RENAME» Я создал файл с именем «test.txt» в корне диска «С:» что бы его переименовать, скажем в «NEW_Name.txt» пишем в консоли.
Файл «test.txt» будет переименован.
Примечание: Команду «RENAME» можно писать короче, просто «REN» от этого результат не изменится.
Можно сменить расширения у всех файлов в каталоге, например с «txt» на «cmd». Для этого делаем так:
Теперь уже в знакомой нам папке «Test_Move» все 3(три) файла приобретут расширение «cmd» за место «txt»
Как вывести содержимое файла в консоль?
Если появилась необходимость просмотреть содержимое файла прямо в cmd. Для этого пользуемся командой «TYPE» Я создал файл и написал в нём адрес своего блога. Теперь попробуем просмотреть данный файл из консоли, не запуская его обычном, привычным образом.
В общем все просто. Но как быть с файлами большего размера, где много информации? В этак случаи содержимое файла нужно выводить с паузой, чтобы просмотреть его полностью.
Для этого пишем так:
Для примера взял текст с первого попавшегося забугорного сайта.
В конце добавляем «| more» таким образом содержимое файла будет выводится не полностью а отрывками, чтобы просмотреть следующею часть файла жмём «Enter»
Как записать в файл результат выполнения команды?
Для примера запишем в файл результат команды «DIR» В консоль пишем:
Обратите внимание на символ «>» он то и играет здесь главную роль. В итоге появится файл на диске «C:» с именем «Save.txt» куда будет записан результат выполнения команды.
Если Вам понадобится записать результат команды «DIR» ещё раз, то файл «Save.txt» будет перезаписан и ранние содержимое файла будет удалено!
Что бы этого избежать и просто добавить новый результат не удаляя старый, стоит использовать символ «>» два раза, то есть вот так:
Теперь файл не будет перезаписан, в него просто добавится новый результат в конец файла.
На этом я пожалуй закончу пост, и отправлюсь праздновать первый день рождения сына, ему сегодня исполняется один годик!!!
Спасибо за внимание!
- Как открыть командную строку Windows?
- Параметры команд и получение помощи
- Запуск системных компонентов и программ из командной строки
- Работа с файлами и папками из командной строки
- Востребованные сетевые команды командной строки
- Редко используемые, но очень полезные команды
Выполнение множества задач в операционных системах Windows возможно не только при использовании привычного графического пользовательского интерфейса, но и при помощи интерпретатора командной строки (командной строки, консоли). Через него можно изменять различные системные параметры, управлять файлами и папками, запускать системные компоненты и любые программы, выполнять иные операции. Рассмотрим наиболее важные команды командной строки Windows, которые могут пригодиться любому пользователю.
Как открыть командную строку Windows?
Некоторые из консольных команд можно выполнить лишь из учетной записи администратора. Потому лучше сразу запомнить, как запускать интерпретатор с максимальным количеством прав доступа к системе. В ОС Windows 7/8/10 делается это просто:
- Откройте «Поиск» в/около меню «Пуск».
- Впишите поле поиска «Командная строка».
- В результатах поиска отобразится нужная нам программа. Кликните по ней правой кнопкой мыши, затем выберите из выпадающего меню пункт «Запустить от имени администратора».
Но для выполнения простых команд консоль Windows можно запускать и без прав администратора. Проще всего это сделать следующим образом:
- Нажмите на клавиатуре клавиши «Win» и «R».
- Откроется окно «Выполнить».
- Впишите в него команду cmd и нажмите «ОК».
Так или иначе, системное приложение «Командная строка Windows» будет запущена и готова выполнению пользовательских команд:
Параметры команд и получение помощи
Прежде чем приступать к изучению команд, следует понимать два важных момента:
- У многих команд существуют изменяемые параметры, уточняющие выполнение командой той или иной функции.
- По любой команде можно получить помощь прямо в окне интерпретатора. Для этого следует сразу после команды вписать «/?«, что также является параметром.
Возьмем, к примеру, одну из наиболее востребованных команд ping. Впишите в консоль следующую строку:
ping /?
Подобным способом можно получить справку по большинству команд (в основном по тем, у которых имеются атрибуты).
Запуск системных компонентов и программ из командной строки
Здесь стоит отметить, что запускать системные компоненты и программы все же проще не напрямую из командной строки, а из ранее упомянутого приложения «Выполнить». Но разницы в синтаксисе (написании) самих команд никакой нет. В обоих случаях после ввода команды достаточно нажать «Enter».
Вот список наиболее востребованных команд для запуска системных приложений и компонентов:
- control — запуск «Панели управления Windows».
- regedit — запуск «Редактора реестра».
- devmgmt.msc — запуск «Диспетчера устройств».
- taskmgr — запуск «Диспетчера задач».
- services.msc — запуск приложения «Службы».
- appwiz.cpl — «Программы и компоненты» («Установка и удаление программ»).
И это далеко не полный список команд запуска системных приложений и компонентов, а лишь самые востребованные у нас — обычных пользователей.
А вот 4 команды для запуска предустановленных (стандартных) в Windows программ:
- calc — запуск «Калькулятора».
- mspaint — запуск графического редактора «Paint».
- notepad — запуск текстового редактора «Блокнот».
- wordpad — запуск текстового редактора «WordPad»
Вообще, из командной строки можно запустить любую другую программу или файл. Рассмотрим, как это сделать, а заодно познакомимся с некоторыми командами по управлению файлами и папками.
Работа с файлами и папками из командной строки
Бывают ситуации, когда невозможно запустить стандартный файловый менеджер «Проводник Windows». Например, из-за действия вирусов-блокировщиков или при системных сбоях. В любом случае все, что можно сделать при помощи «Проводника», можно сделать и при помощи командной строки. Начнем с самого простого — просмотра содержимого папок.
Просмотр содержимого папки. При запуске командной строки перед мигающим курсором можно увидеть адрес расположения папки учетной записи на жестком диске. В нашем случае — это «C:Usersvzgn»:
Давайте, выведем на экран список все других объектов (файлов и папок), содержащихся в данной папке. Для этого используйте команду dir:
Объекты, напротив которых написано <DIR> — это папки, все остальное — файлы (напротив них указан размер в байтах).
Команду dir можно применять вообще папкам, расположенным в вообще любом месте на жестком диске. Для этого после команды следует указать путь до каталога. К примеру, для просмотра содержимого папки «Windows» на диске «C:» следует ввести команду:
dir c:windows
Запомните одно простое правило. Если в именах папок/файлов присутствуют пробелы, их следует писать в двойных («имя папки или файла») кавычках.
Открытие файла из командной строки. Для открытия файла достаточно вписать его полное название вместе с расширением в командную строку. Что не вводить имя файла целиком, используйте клавишу «Tab» (с ее помощью можно поочередно перебирать имена всех объектов в текущей папке).
В нашем случае был открыт файл .pgAdmin4.startup.log при помощи «Блокнота». Если бы это был музыкальный файл, запустился бы аудиопроигрыватель, если DOC/DOCX-файл — редактор «MS Word» и т.д. Таким образом, открытие файла в командной строке равнозначно двойному клику по файлу в «Проводнике Windows».
Переход в другую папку. Для перехода в папку используется команда cd, после которой следует прописать путь к открываемой папке либо просто ее имя (если она расположена в нашем текущем местоположении на жестком диске).
Перейдем в папку «Music». Т.к. она находится в текущем каталоге, достаточно ввести в консоль:
cd music
Теперь наше местоположение изменилось на «C:UsersvzgnMusic».
Давайте, перейдем в какую-нибудь папку, расположенную на другом локальном диске. Это можно сделать несколькими способами, но воспользуемся самым легким для запоминания.
- Для начала перейдем в сам локальный диск (изменим наше местоположение). Для этого достаточно использовать (независимо от текущего местоположения) команду e:. Вместо e можно использовать любую другую букву локального диска (или даже флешки, например):
- Допустим, нам известно, что на диске «E» существует папка «Install«, а в ней — пака «Web«. Перейти в нее можно одной командой:
cd e:installweb
Запуск/открытие программы/файлы в другой папке или на другом диске. Запустим программу, расположенную где-нибудь глубоко на диске. Для запуска файла или программы можно просто указать полный путь до него. Текущее местоположение в этом случае не имеет значения. Запустим, например, текстовый редактор «Notepad++» одной командой:
C:»Program Files»Notepad++notepad++.exe
Обратите внимание, что имя папки «Program Files» взято в кавычки, т.к. в нем присутствует пробел.
Создание, удаление и переименование файлов и папок. Из командной строки можно выполнить все эти операции над файлами и папками.
- Создание простого текстового файла — copy nul простой_текстовый_файл.txt. Перед названием файла можно указать путь до конечной папки, в которой тот будет создан (если не указать, файл создастся в текущей папке).
- Создание папки — mkdir папка. Папка также создается в текущем местоположении.
- Удаление файла (или нескольких) — del простой_текстовый_файл.txt (если требуется удалить несколько файлов, просто вписываем их имена друг за другом через пробел). Удаляем созданный ранее файл.
- Удаление папки — rmdir папка. Удаляем созданную ранее папку.
- Переименование папки/файла — ren простой_текстовый_файл.txt новое_имя_файла.txt или ren папка новое_имя_папки. Переименуем созданный файл и папку.
Через командную строку можно выполнить и ряд других операций над файлами и папками, включая копирование, перемещение, применение/изменение атрибутов (скрытый, системный, только для чтения и т.д.), слияние и т.д.
Востребованные сетевые команды командной строки
Из командной строки Windows можно взаимодействовать с сетевыми подключениями, изменять их настройки, просматривать различную информацию и многое другое. Рассмотрим наиболее востребованные сетевые команды.
Команда ping
Наверное, это самая популярная команда среди пользователей ОС Windows (как, впрочем, и других операционных систем). Предназначена она для проверки доступности и качества связи между компьютером и целевым IP-адресом. Также команда может применяться для определения IP-адреса сайта по доменному имени сайта и для выполнения других задач.
Определим, есть ли связь с каким-нибудь IP-адресом. Пусть это будет — 173.194.73.139 (IP-адрес поисковой системы Google). Вводим следующую команду:
ping 173.194.73.139
Как видим, обмен пакетами с указанным IP-адресом осуществляется, значит, связь есть. Если бы ее не было, картина была бы следующая (уберем из IP Google последнюю цифру):
«100% потерь» означает, что связь установить не удалось.
А теперь определим IP-адрес сайта по его доменному имени. Возьмем адрес softsalad.ru:
ping softsalad.ru
На изображении выше можно увидеть IP-адрес сайта, определенный по его доменному имени.
Команда tracert
А эта команда применяется для отслеживания сетевого маршрута от компьютера до целевого IP-адреса (можно использовать и доменное имя сайта):
tracert softsalad.ru
Видите, чтобы «достучаться» до сайта компьютеру в данном случае потребовалось обратиться к 12 промежуточным IP-адресам (ваш провайдер, сервер сайта и т.д.).
Команда ipconfig
С помощью этой команды можно получить информацию о настройках IP-протокола компьютера (или, грубо говоря — настройки сетевых карт). Воспользуемся данной командой с атрибутом /all, который позволит вывести более подробную информацию:
ipconfig /all
Команда getmac
Если требуется определить только MAC-адрес сетевой карты, используем эту команду без всяких атрибутов:
getmac
Редко используемые, но очень полезные команды
При помощи командной строки можно выполнять различные интересные функции (большинство приведенных ниже команд работает только с правами администратора):
Превращаем ноутбук в Wi-Fi-роутер (включение раздачи интернета с ноутбука или настольного компьютера с Wi-Fi-адаптером)
Для реализации этой затеи нужно поочередно выполнить три несложные команды:
- netsh wlan set hostednetwork mode=allow
- netsh wlan set hostednetwork mode=allow ssid= MiWiFi key= MiWiFipassword keyUsage=persistent. Вместо MiWiFi и MiWiFipassword можно использовать свои фразы. Первый параметр задает имя беспроводной сети, второй — пароль (должен состоять из 8 символов или более).
- netsh wlan start hostednetwork.
Если после выполнения каждой команды вы видите сообщения, аналогичные тем, что приведены на изображении выше, значит, все прошло успешно. Теперь к ноутбуку можно подключиться, например, с телефона так же, как и к обычному Wi-Fi-роутеру.
Удалениям службу Windows (или любую другую) через командную строку
Если попробовать удалить службу через штатное приложение «Службы», то ничего не получится (в нем попросту не предусмотрено такой функции). Однако это бывает необходимым, особенно после установки различных программ, которые устанавливают службы, но «забывают» их удалять при деинсталляции. Это легко реализуется через командную строку. Однако для начала необходимо узнать имя службы, и это можно сделать через стандартное Windows-приложение:
- Запустите программу «Службы», используя команду msc.
- Найдите в отобразившемся списке службу, которую необходимо удалить, и кликните по ней два раза мышкой:
- Нас интересует текст в блоке «Имя службы».
- Теперь вернитесь в окно командной строки и впишите в него команду:
sc delete имя_службы
- Подставьте вместо фразы «имя_службы» имя удаляемой службы. Если оно содержит пробелы, как в нашем случае, заключите имя службы в кавычки.
- Служба удалена.
Выключаем/перезагружаем/отправляем в сон/гибернацию компьютер с задержкой. Если необходимо выключить, перезагрузить или отправить в сон компьютер с задержкой по времени, не обязательно использовать какие-либо сторонние программы — все можно сделать при помощи командной строки. Для этого достаточно использовать команду:
shutdown /s /t 60 /f
В данном случае компьютер будет выключен (параметр «/s«) через 60 секунд (параметр «/t 60«) с принудительным завершением работы всех приложений без предупреждения пользователя (параметр «/f» — обязательный при использовании таймера «/t«).
Вместо выключения компьютера «/s» использовать:
- /l — завершение сеанса (выход из учетной записи пользователя с блокировкой, если для входа требуется пароль).
- /r — перезагрузка компьютера.
- /hybrid /s — «отправка» компьютера в сон (параметр «/s» использовать обязательно).
- /h — режим гибернации (или режим максимального энергосбережения, при котором ключевые компоненты компьютера остаются включенными).
Для выключения компьютера, например, через 2 часа следует указывать в параметре «/t» число 7200 (1 час равен 3600 секундам).
Сразу после выполнения команды на экран будет выведено уведомление:
Выполнение команды всегда можно отменить (если была использована задержка), воспользовавшись:
shutdown /a
Просмотр списка запущенных процессов и завершение работы любого из них. Если по каким-то причинам не удается запустить «Диспетчер задач», но имеется доступ к командной строке, запущенный процесс может быть снят при помощи специальных команд:
- Сначала выведем на экран список всех запущенных процессов при помощи команды tasklist:
- Нас интересует идентификатор «PID» завершаемого процесса. Возьмем для примера PID процесс «NVDisplay.Container.exe» — 1100.
- Для завершения его работы используем команду taskkill /pid 1100 /f (параметр «/f» необходим для принудительного завершения работы процесса).
Чиним интернет при помощи командной строки. Разнообразные неполадки с сетевыми подключениями можно устранить «одним махом» через командную строку путем сброса настроек TCP/IP (не будем вдаваться в подробности, но если вам интересно, об это можно почитать тут — Netsh Winsock — что это и зачем нужно?.
Для выполнения этой задачи нужно поочередно ввести две команды:
netsh int ip reset
netsh winsock reset
Перезагружаем компьютер для применения изменений.
Бывает, что некоторые команды Windows cmd сложно вспомнить, и сохранение их на компьютере или на бумаге в качестве шпаргалки является хорошей практикой. Этот список не является полным, но он содержит наиболее часто используемые команды. Не стесняйтесь добавить свои наиболее часто используемые команды в комментариях ниже, а так же поделиться этим списком.
Управление файлами и папками
- COPY — Копирование файлов в другое место
- DIR — Отображение файлов и папок в текущем каталоге
- DEL или ERASE — Удаление файлов
- EDIT — Запуск редактора файлов
- CD — Изменить каталог
- EXPAND — Распаковать сжатые файлы
- FC — Сравнивает файлы и показывает различия между ними
- FIND — Найти текстовую строку в файле
- MD или MAKEDIR — Создать папку
- MOVE — Переместить файлы из одной папки в другую
- PRINT – отобразить содержимое текстового файла
- RD или RMDIR — удалить папку
- REN или RENAME — переименовать файл или папку
- REPLACE — Замена файлов в одном каталоге на файлы с тем же именем в другом каталоге
- ROBOCOPY — Использует программу робокопи для копирования файлов и каталогов
- TREE — Показывает структуру каталогов диска или папки
- TYPE — Отображает содержимое текстовых файлов
- OPENFILES — Управление открытыми локальными или сетевыми файлами
- XCOPY — Копирование файлов и деревьев каталогов
Приложения и процессы
- SCHTASKS – Запланированный запуск приложения приложения (планировщик задач)
- SHUTDOWN — Выключение или перезагрузка компьютера
- TASKLIST — Список выполняемых задач
- TASKKILL — Остановить или прекратить выполнение задачи (для остановки задачи используется PID, который можно узнать из TASKLIST).
- REG — Запустить редактор реестра
- RUNAS — Запуск задачи от имени другого пользователя
Управление дисками
- CHKDISK — Проверяет диск и показывает статистику
- DEFRAG — Запуск дефрагментации диска
- CHKNTFS — Отображает или изменяет выполнение проверки диска при загрузке
- COMPACT — Отображает и изменяет сжатие файлов в разделах NTFS
- CONVERT — преобразование дискового тома FAT в NTFS
- DISKPART — Отображение и настройка свойств разделов диска
- FORMAT — Форматирование диска
- FSUTIL — Отображение и настройка свойств файловой системы
- LABEL — Создание, изменение или удаление метки тома диска
- RECOVER — Восстановление данных с поврежденного или испорченного диска
- VOL — Отображение метки тома и серийного номера диска
Системная информация
- DATE — Выводит или устанавливает текущую дату
- TIME — Выводит или устанавливает системное время
- DRIVERQUERY — Отображает текущее состояние и свойства драйвера устройства
- HOSTNAME — Отображает имя компьютера
- SYSTEMINFO — Отображает информацию о конфигурации компьютера
- VER — Позволяет просмотреть версию Windows
- GPRESULT — Отображает текущие примененные групповые политики (RSoP)
- GPUPDATE — Обновление групповых политик
Сеть
- IPCONFIG — Отображает информацию о сетевых интерфейсах
- PING — Отправляет ICMP-запросы на целевой хост, проверяет его доступность
- TRACERT – Отображение пути пакетов в сети
- NSLOOKUP — Поиск IP-адреса по имени ресурса
- ROUTE — Отображает таблицы сетевых маршрутов
- ARP — Показывает таблицу с IP-адресами, преобразованными в физические адреса
- NETSH — Запускает программу управления сетевыми настройками
- GETMAC — Показывает MAC-адрес сетевого адаптера
- TFTP — Запускает TFTP-клиент в консоли
Настройка командной строки
- CLS — Очистить экран
- CMD — Отображает другую командную строку
- COLOR — Устанавливает цвет текста и фона в консоли
- PROMPT – Изменение начального текста командной строки
- TITLE — Присвоение заголовка для текущего сеанса
- HELP — Запуск справки CMD
- EXIT — Выход из командной строки
Аverage rating : 4
Оценок: 2
191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
700
300
ООО «ИТГЛОБАЛКОМ ЛАБС»
191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
700
300
ООО «ИТГЛОБАЛКОМ ЛАБС»
700
300
Если вы оказались без доступа к чему-либо кроме командной строки или Windows PowerShell и по какой-то причине вам требуется возможность создания или чтения текстовых файлов, это вполне реализуемо, причем более чем одним методом.
В этой инструкции подробно о работе с текстовыми файлами в командной строки или PowerShell (разумеется, можно и в Терминале Windows) — создание и сохранение текстовых файлов, их вывод и чтение в консоли.
Создание текстовых файлов в командной строке
Возможность создания текстовых файлов доступна как в командной строке (cmd.exe), так и в PowerShell. Начнем с первого варианта.
Во всех случаях учитывайте, что при использовании кириллицы потенциально возможны проблемы с кодировкой, а в некоторых случаях кодировка может отличаться при использовании разных команд.
Команда ECHO
Команда командной строки echo предназначена для вывода текстовых сообщений в окне консоли, например, при выполнении сценария в bat-файле, но может быть использована и для вывода текста в файл, благодаря возможности использования оператора «>» для перенаправления вывода из консоли в файл.
Пример команды:
echo Содержимое текстового файла > file.txt
В результате её выполнения в текущей рабочей папке командной строки будет создан файл с именем file.txt и содержимым «Содержимое текстового файла».
COPY CON
Команда copy с параметром con позволяет скопировать содержимое консоли в файл. Использование возможности будет состоять из следующих шагов:
- Введите команду
copy con имя_файла.txt
файл не будет создан, но после выполнения указанной команды у вас появится возможность набрать содержимое этого файла, которое по завершении процесса будет в него сохранено.
- Курсор переместится на строчку ниже, и вы сможете набирать текст так, как делаете это обычно, включая перенос строки.
- Для завершения набора и сохранения текстового файла нажмите сочетание клавиш Ctrl+Z, а затем — Enter. Это добавит отметку конца файла и сохранит его в текущей папке с указанным на 1-м шаге именем.
Создание текстового файла в PowerShell
PowerShell также имеет набор встроенных командлетов для сохранения текстовых данных в файл.
Out-File
Использование Out-File в PowerShell по своей функциональности сходно с оператором перенаправления вывода в командной строке. Вывод консоли перенаправляется в заданный файл.
Пример использования:
"Текстовая строка" | Out-File -FilePath .file.txt
В этом примере в текущей папке PowerShell будет создан файл с именем file.txt и содержимым «Текстовая строка».
New-Item
Создание нового текстового файла в PowerShell возможно с помощью командлета New-Item. Пример команды, в которой создается текстовый файл file.txt, содержащий «Текстовая строка» в текущем расположении:
New-Item -Path . -Name "file.txt" -ItemType "file" -Value "Текстовая строка"
Set-Content и Add-Content
Ещё два командлета PowerShell для работы с текстовыми файлами:
- Set-Content — перезаписывает содержимое файла
- Add-Content — добавляет содержимое в конце выбранного файла
Их использование можно увидеть на примере следующей команды:
Add-Content -Path .file.txt -Value "Ещё одна текстовая строка"
Вывод (чтение) текстового файла в командной строке и PowerShell
Теперь перейдем к способам просмотреть текстовые файлы в командной строке или PowerShell. Как и в предыдущем случае, учитывайте, что для файлов, содержащих кириллицу, возможны проблемы с отображением символов в правильной кодировке.
TYPE
Самый простой вариант — использование команды TYPE с указанием пути к файлу, который нужно отобразить в консоли, например:
type file.txt
MORE
Если файл объемный и содержит большое количество строк, используйте команду more, например:
more file.txt
Выполнив команду, вы увидите часть содержимого текста, которая помещается в окне консоли, далее вы можете использовать следующие клавиши:
- Enter — для отображения следующей строки файла.
- Пробел — для отображения следующих строк документа, которые поместятся в активное окно консоли.
- P — Показать следующие N строк. После нажатия этой клавиши с последующим указанием количества строк, будет выведено соответствующее количество строк текстового документа.
- S — пропустить следующие N строк, работает аналогично предыдущему варианту.
- Клавиша «=» — для отображения текущего номера строки.
- Q — для прекращения выполнения команды more.
Get-Content
Вывести содержимое текстового файла в PowerShell можно с помощью Get-Content с указанием пути к файлу, например:
Get-Content file.txt
Также вы можете выводить определенные строки файла, с помощью команд вида (вывод первых или последних 10 строк соответственно):
Get-Content file.txt | Select-Object -First 10 Get-Content file.txt | Select-Object -Last 10
Или присвоить содержимое файла переменной и вывести конкретную строку:
$file_text = Get-Content file.txt $file_text[2]
Помимо использования ручного ввода команд, вы можете использовать консольные текстовые редакторы — сторонние в версиях для Windows, такие как Vim, Nano, Kinesics Text Editor или даже старый встроенный edit.com (может отсутствовать в вашей версии системы и требовать патча NTVDMx64).
Как начать пользоваться командной строкой
Командная строка — это способ взаимодействия с компьютером, когда ты печатаешь команды, а он их исполняет. Она может использоваться для запуска программ (например на языке PHP) и для настройки некоторых программ.
Для начала, надо знать что командная строка реализована немного по-разному в разных ОС: в линуксе и маке один вариант, в windows другой. На андроиде и iOS тоже есть линуксоподобная командная строка, но чтобы в нее попасть, тебе надо установить какую-нибудь программу-терминал.
Краткий мануал чайника по командной строке:
Как попасть в командную строку?
- Windows XP: Пуск — Выполнить — набрать cmd — нажать [enter]
- Windows7: Пуск — набрать cmd — нажать [enter]
- MacOS: Запустить приложение Терминал (его можно найти поиском в той штуке которая справа вверху экрана)
- Ubuntu: Запустить приложение Терминал или нажать Alt + Ctrl + F1 (вернуться назад в графический режим — Alt + Ctrl + F7)
- Другие дистрибутивы Linux: если ты линуксоид, ты и так знаешь
Клавиши, работающие во всех операционных системах
↑,↓ — стрелки вверх и вниз в командной строке позволяют смотреть предыдущие введенные команды, чтобы 2 раза не набирать. В Windows при закрытии окошка консоли вся история теряется, в других ОС — сохраняется.
[tab] — автодополняет имена файлов и команды. Если в текущем каталоге есть файл file.txt, ты наберешь fi и нажмешь [tab] то он автодополнит имя файла (или предложит варианты, если таких файлов несколько).
[ctrl+c] — прерывает выполнение команды, например, если она долго тупит
Важно: клавиша Esc, как и многие привычные клавиши, не работает в командной строке. Клавиши Ctrl + C, V, X обычно не работают как «копировать/вырезать/вставить» (иногда для вставки можно использовать Shift + Ins). Клавиша Ctrl + Q не работает как «выход».
Особенности линукса и мака
В линуксе и маке, [ctrl+l] очищает экран, [ctrl+k] и [ctrl+u] удаляют все перед или после курсора, [ctrl+w] удаляет слово перед курсором, [ctrl+r] делает поиск по истории команд (для отмены поиска нажми [ctrl+c], escape в командной строке не работает, для завершения поиска нажми стрелку вправо/влево), [ctrl+d] завершает работу и закрывает консоль.
Еще в линуксе и маке иногда не работают Home и End, используй [ctrl+a], чтобы перейти в начало строки и [ctrl+e], чтобы в конец. [alt + b] (back) и [alt + f] (forward) двигают курсор на 1 слово назад/вперед.
В линуксовой и маковской файловой системе нет букв дисков. Пути к файлам там начинаются из единого корня, и используют прямой слеш (например /home/ivan/file.txt
), а дополнительные диски (например USB-носители) монтируются в одну из папок внутри файловой системы (например /mnt/flash
). В линуксе регистр букв в имени файла имеет значение.
Особенности Windows
По умолчанию в Windows в консоли очень маленький и нечитаемый шрифт. Нажми правой кнопкой мыши на заголовок, зайди в настройки и поставь нормальный размер шрифта.
Пути к файлу в Windows используют бекслеш (например d:tmpfile.txt
), а регистр букв в них не имеет значения.
Буфер обмена
В командной строке обычно не работает ctrl+v,c,x для вставки, копирования и вырезания текста. Иногда (зависит от настроек системы) вставить текст можно через [shift+ins], иногда правой кнопкой мыши. Погугли, как это делается в твоей ОС.
Скопировать текст обычно можно, выделив мышью (в Windows надо разрешить выделение текста, нажав правой кнопкой на заголовок, зайдя в настройки окна, и также нажать Enter после выделения).
Текущий каталог
В командной строке результат выполнения команд часто зависит от того, в каком каталоге и на каком диске ты находишься. Также, когда ты указываешь в команде относительное имя файла (без полного пути и имени диска), оно ищется в текущем каталоге.
Какой каталог текущий, в Windows написано в подсказке, а в linux можно узнать командой pwd
(print working directory)
Чтобы перейти в другой каталог, в линуксе используют команду cd
:
cd / — перейти в корневой каталог (в линукс нет букв дисков, и корневой каталог один на всю систему)
cd /etc/apache — перейти в каталог /etc/apache
cd files — переходит в каталог files внутри текущего
cd .. — переходит в родительский каталог
cd ../.. — переходит на 2 уровня выше
cd ~ — перейти в свой домашний каталог (/home/anon например)
cd ~/test — перейти в /home/anon/test
В Windows, сначала надо перейти на нужный диск командой c:
, d:
, e:
и так далее. Потом использовать cd
или chdir
:
d: - перейти на диск d:
cd — перейти в корневой каталог
cd windowssystem32
cd ..
cd ....
Обрати внимание, windows и linux используют разные виды слешей. Обрати внимание, ..
обозначает «родительский каталог». Обрати внимание, только в линукс и мак ~
обозначает «домашний каталог» (это /home/username
или /Users/username
). .
(одна точка) обозначает текущий каталог и cd .
никуда не перейдет. /
(линукс) или (Windows) обозначает корневой каталог.
В Windows 7 и выше можно открыть окно консоли с заданной текущей папкой. Есть 2 способа, как это сделать:
- зажав shift, щелкнуть правой кнопкой по пустому месту в открытом окне папки, из появившегося меню выбрать пункт «command line here» («открыть командную строку»)
- поставить курсор в адресную строку в окне папки, ввести cmd и нажать Enter
Если тебе часто в windows приходится открывать консоль в какой-то папке (например папке с твоими программами), ты можешь создать на рабочем столе ярлык (правой кнопкой на рабочем столе → создать ярлык → ввести cmd, нажать «Далее» → ввести название, нажать «Готово» → зайти в свойства ярлыка → указать рабочую папку, нажать «ОК»). При запуске ярлыка будет открываться командная строка с выбранной текущей папкой.
В линуксе/маке, чтобы быстро перейти в нужную папку, можно набрать cd и перетащить в консоль иконку папки — должен вставиться полный путь к ней. Не гарантирую что это работает во всех дистрибутивах линукса, на маке работает.
Очистка экрана
В linux — команда clear
или клавиша [ctrl+L], в windows — команда cls
(clear screen).
Список файлов
Посмотреть, какие файлы есть в текущем каталоге, можно командой dir
в Windows и командой ls
в линуксе (ls -a
— показывает все файлы, включая скрытые, ls -l
— показывает не только имена, но и размер, дату создания файла, права на него).
Посмотреть права на файл в Линукс можно либо командой ls -l
, либо stat file.txt
Команды и оболочка
Оболочка — это cmd.exe в Windows и bash в линукс, это та программа, которая собственно мигает курсором и выполняет твои команды. Ты набираешь команды, а она их выполняет. Команда обычно состоит из имени команды, и, иногда, дополнительных параметров, отделенных пробелом, вроде:
ls — показать список файлов в линукс
ls -l — показать файлы с подробностями
dir — показать список файлов в windows с подробностями
dir /b — показать только имена файлов, без подробностей
Подсказка и получение помощи
Почти у любой команды есть подсказки. Чтобы их увидеть, добавь к имени команды параметр (--help
или /?
):
В линукс: ls --help
— выведет справку по команде ls
В линукс: man bash
— выведет подробную длинную справку по команде bash (для выхода жми q,
для прокрутки используй стрелки и PgUp/PgDn). Также, man bash
можно набирать в поисковой системе (Гугл, Яндекс) — скорее всего она покажет ссылку на тот же самый мануал.
Также, для Линукса есть прекрасный сайт https://explainshell.com/ , который умеет для введенной команды находить мануал по ней и выводить объяснения каждого аргумента. Он полезен, когда ты видишь где-то в статье команду и хочешь понять, что делает каждая опция в ней. Пример объяснения для команды ls -la /tmp. В Хроме и ФФ также можно нажать правой кнопкой мыши в поле поиска, выбрать там пункт вроде «Добавить как поисковую систему», задать для него ключевое слово (например, exp) и тогда запрос можно будет писать прямо в адресной строке браузера как exp ls -la /tmp
.
В Windows: dir /?
— выведет справку по команде dir
В Windows: help
выведет подсказку по основным командам
Виды команд
Команды бывают внутренние (это маленький список команд, встроенных в оболочку). Встроенные команды — это, например, cd
в линукс или exit
в Windows. Их мало.
Внешние команды — их большинство — это фактически программы, лежащие на диске. Оболочка ищет их не по всему диску, а только в заранее заданных папках. Список папок перечислен в специальной переменной PATH. Просмотреть эту переменную можно так:
В линуксе: echo $PATH
В windows: echo %PATH%
В linux PATH — это папки /bin, /usr/bin, /usr/local/bin, /sbin, /usr/sbin, именно в них в Линуксе хранятся почти все программы. В текущем каталоге программы не ищутся, если это не указать явно, набрав ./command
.
В Windows PATH — это всякие системные папки вроде c:windows, c:windowssystem32 и так далее + текущий каталог, в котором ты находишься. Заметь, что папки вроде c:program filesautocad в PATH не добавлены и в Windows таким образом, из командной строки обычные программы, установленные в Program Files, не запустить. Только то, что положено в системные папки.
Таким образом: если ты под линуксом, и ты набираешь команду php
, то скорее всего файл php лежит в одной из *bin папок и эта команда запустит php. Если ты под Windows установил php допустим в c:php, и не прописал этот путь в PATH, то набрав php
, оболочка не найдет файл php.exe и ничего не запустит. И ты скажешь «что за кривой мануал, ничего не работает».
Печалька.
Что же делать? Есть 2 варианта:
- добавить папку с php в PATH через мой компьютер — свойства и перезалогиниться в систему
- писать вместо
php
полный путьc:phpphp.exe
Продолжаем. Допустим, ты хочешь запустить в командной строке файл my.php , который находится в текущем каталоге:
Линукс: php my.php
Windows: c:phpphp.exe my.php
Допустим, ты хочешь запустить php-файл не из текущего каталога. Тогда надо написать путь к нему:
Линукс: php /some/dir/my.php
Windows: c:phpphp.exe d:filesmy.php
В общем, проще запускать файлы из текущего каталога, чем мучаться с путями.
Больше команд — linux
Попрактиковаться в линукс в командной строке можно на таких командах:
- Создать текстовый файл:
cat > file.txt
[enter] ввести текст [enter][ctrl+d] — и файл создан - Создать текстовый файл содержащий данную строку:
echo Hello World > file.txt
- Просмотреть текстовый файл:
cat file.txt
- Просмотреть огромный текстовый файл, который не влезает на экран:
cat file.txt | less
илиless file.txt
. В просмотрщике работают стрелки и q для выхода (escape не работает). - Удалить файл:
rm file.txt
- Скопировать файл:
cp file.txt copy.txt
- Переместить/переименовать файл:
mv file.txt copy.txt
- Скопировать в другую папку:
cp file.txt /some/other/directory
- Запустить команду и сохранить ее вывод в файл, не выводя на экран:
ls -la > file.txt
(эта команда выведет список файлов, но не на экран, а сохранит в файл. Бывает иногда полезно). - Запустить команду, вывести результат на экран и сохранить в файл:
ls | tee -a file.txt
- Вывести файл, но не весь, а только первые 10 строк:
cat file.txt | head -10
- Вывести последние 10 строк файла:
cat file.txt | tail -10
- Следить за обновлением файлов и выводить в консоль новые строки, которые в них дописывают:
tail -f file1.txt file2.txt
(удобно так мониторить логи) - Вывести только строки файла, содержащие слово «dog»:
cat file.txt | grep -i dog
(-i
значит игнорировать регистр букв) - Найти файлы, в имени которых есть «dog», в каталоге /tmp:
find /tmp -iname '*dog*'
- Узнать текущее время:
date
- Создать папку:
mkdir folder
- Удалить папку:
rm -r folder
- Померять, сколько времени выполнялась команда:
time [команда]
- Узнать свой id пользователя:
id
- Показать список запущенных процессов:
ps -lax
- Показать что-то вроде диспетчера задач:
top
(для выхода q) - Запустить редактор, из которого хрен выйдешь, так как никакие привычные кнопки не работают:
vi
(попробуй:q!
если все-таки в него попал) - Запустить нормальный редактор файла:
nano file.txt
Подробнее о работе команд можно узнать с помощью параметра --help
, дописанного после команды.
Больше команд — Windows
Попрактиковаться в командной строке в Windows можно так:
help
— выводит список полезных командdir
— выводит файлы в каталоге- Создать текстовый файл:
copy con file.txt
[enter]ввести текст[enter][ctrl+z][enter] — файл создан - Просмотреть текстовый файл:
type file.txt
- Просмотреть огромный текстовый файл:
type file.txt | more
(enter — прокрутка, q — выход) - Удалить файл:
del file.txt
- Скопировать файл:
copy /b file.txt copy.txt
- Переименовать файл:
ren file.txt copy.txt
- Запустить команду и сохранить вывод в файл:
dir /? > file.txt
- Создать текстовый файл с одной строкой текста:
echo lalala lololo > file.txt
- Дописать строчку в конец файла:
echo boom >> file.txt
- Создать папку:
mkdir folder
- Удалить папку:
rmdir folder
- Узнать текущее время:
time
иdate
(ctrl+с для выхода)
Подробнее о работе команд можно узнать с помощью параметра /?
, дописанного после команды.
Команды для работы с сетью Интернет
В линукс: показать информацию о настройке сети: ifconfig
(или /sbin/ifconfig
если у
тебя в PATH нет /sbin)
В Windows показать информацию о сети: ipconfig
Пропинговать (проверить связь) с сервером: ping google.com
Узнать IP по имени домена: nslookup yandex.ru
Показать список открытых с компьютера сетевых соединений: netstat -an
(в подсказке по команде указаны также параметры, с помощью которых, например, можно вывести какая программа установила это соединение).
Проверить путь до какого-то сервера или узла сети:
- в Windows:
tracert google.com
- в linux:
traceroute google.com
(не работает? пиши/usr/sbin/traceroute
или пропиши уже себе sbin в PATH)
Больше информации
Используй ключи --help
и /?
Гугли мануал по командной строке windows/linux в интернете.
Продвинутые возможности командной строки линукса
Этот раздел читать необязательно, но если ты хочешь знать больше, то пожалуйста.
- версию php можно узнать либо добавив ключ —version, либо -v:
php --version
- список установленных модулей:
php -m
- вывести конфигурацию (список текущих настроек) PHP:
php -i
Потоки и перенаправления.
В мире Линукс (да и в Windows тоже) у каждой программы обычно есть 3 потока (они имеют номера):
#0 — стандартный ввод — это поток из которого программа читает данные. По умолчанию в него поступает то, что ты набираешь на клавиатуре в консоли. Т.е. по умолчанию программы читают данные с клавиатуры.
#1 — стандартный вывод. В этот поток программа выводит результат работы, по умолчанию он подключен к консоли (т.е. результаты пишутся в консоль). Например, команда ls выводит список файлов в текущем каталоге на стандартный вывод
#2 — поток ошибок. Сюда правильно написанная программа пишет сообщения об ошибках, о ходе выполнения задачи. Для них специально предусмотрен отдельный поток (чтобы при сохранении результатов работы в файл в него не записывались сообщения о ходе работы), но по умолчанию так же как и #1 он подключен к консоли.
Перенаправления
Эти потоки можно легко перенаправить в файл или даже другую программу (для чего они и придуманы). Вот как можно перенаправить стандартный ввод, чтобы команда читала данные не с клавиатуры а из файла:
команда < file.txt
Пайп (вертикальная черта) позволяет перенаправить выход одной программы на вход другой. Программа ls
выводит список файлов в каталоге. Программа head -10
читает строки с стандартного ввода и выводит только первые 10 из них. Объединив эти команды, можно вывести имена первых 10 файлов:
ls | head -10
В линуксе есть и другие команды фильтры, которые можно применять вместе с пайпом. Это sort
(сортирует результаты и позволяет удалять дубликаты), grep слово
(отбирает строки, в которых встречается заданное слово), head -N
(выводит первые N строк), tail -N
(выводит последние N строк) и другие.
Перенаправить стандартный вывод в файл можно так:
ls > file.txt
В этом случае результат работы ls запишется в файл. При этом поток ошибок останется неперенаправленным и они будут выводиться в консоль — именно для этого эти потоки разделены.
Перенаправить поток ошибок в файл можно так:
команда 2> file.txt
Перенаправить и вывод, и ошибки в файл можно так:
команда 2>&1 > file.txt
Когда вывод перенаправлен в файл, ты не видишь ничего в консоли. Для борьбы с этим есть команда tee
, которая расщепляет поток: одна копия идет в файл. другая выводится в консоль:
команда 2>&1 | tee file.txt
Команда tee
по умолчанию при запуске очищает файл, если там что-то было, можно добавить параметр -a
, чтобы она этого не делала, а дописывала строки в конец файла.
Программы-фильтры
Все эти программы берут данные со стандартного ввода, обрабатывают и выдают результат на выход. Они предназначены для совместного использования с перенаправлением потоков ввода/вывода.
grep
,egrep
— отбирает только строки, соответствующие (или не соответствующие) регулярномуsort
— сортирует поданные на вход строкиcat -n
— нумерует поданные на вход строкиhead
,tail
— берут первые или последние строкиtac
— читает строки с входа, переворачивает их и выдает в обратном порядкеtr
— заменяет указанные символыsed
— позволяет делать более сложные замены, напримерsed -rn 's!value=(d+)!1n!gp'
найдет во входном тексте строки вида value=123, выделит из них числа и выведет их каждое на своей строкеgzip
/gunzip
— архивируют/разархивируют данныеwc
— считает число строк, слов и символов во входном файлеcut
— разбивает каждую строку на куски по символу-разделителю и вырезает указанные куски
Подробнее:
- http://xgu.ru/wiki/%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D1%8B%D0%B5_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%B8_%D0%B2%D0%B2%D0%BE%D0%B4%D0%B0/%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B0
Сравнение файлов
Команда diff file1 file2
сравнивает 2 файла и выдает список различий в них. Она также умеет сравнивать папки с вложенными в них файлами рекурсивно.
Прогресс
Если установить команду pv то можно выводить шкалу прогресса. Допустим мы подаем огромный файл на вход команды и хотим следить сколько байт уже передано. Команда pv перекачивает данные со своего входа на выход, при этом считая их и выводя полоску прогресса:
cat file.txt | pv | другая команда
Сеть
Скачать файл можно командой wget: wget -O file.txt 'http://example.com/download/file'
Кавычки нужны.
Можно отправлять POST- и GET-запросы, например, для тестирования твоего приложения, командой curl:
curl -F name=Username -F 'comment=Hello World' 'http://example.com/post/comment'
Архивация
С помощью программы gzip
/gunzip
можно сжимать файлы. По умолчанию она берет данные, поступающие на стандартный вход, сжимает и выдает на выход. Степень сжатия задается параметрами от -1
(минимальная) до -9
(максимальная).
- сжать файл на диске:
cat file.txt | gzip -9 > file.txt.gz
- разжать файл и вывести на экран:
cat file.txt.gz | gunzip
- выполнить команду, сжать и сохранить в файл ее результат:
команда | gzip -9 > file.txt.gz
Пейджер
Если команда выводит очень много данных, удобно направить ее вывод в программу-пейджер less. Она позволяет прокручивать результат стрелками, искать по регулярке командой / (n — перейти к следующему результату). Для выхода жми q, escape не работает. Во как направить вывод в less:
ls | less
Если надо туда же направить и поток ошибок то пиши так:
ls 2>&1 | less
Переменные окружения
Некоторые настройки хранятся в переменных окружения. Например, путь к домашнему каталогу хранится в $HOME и вывести ее можно так:
echo $HOME
Поменять переменную можно так: export VAR=value
. Обрати внимание, у каждого процесса свой набор переменных, и они наследуются от родителя при создании процесса так что поменять переменные ты можешь только у программ, которые будут запускаться в этой консоли в дальнейшем, а у уже запущенных не поменяешь. Также, можно поменять переменную только для одной запускаемой команды, так:
VAR=value команда
, например SOME_VAR=1 OTHER_VAR=2 php file.php
Cmd- и bash-скрипты
Мощь командной строки заключается в том, что если нам надо выполнить последовательность каких-то команд, то не требуется каждый раз вводить их вручную. Вместо этого, можно поместить их в файл (скрипт) и запустить этот файл. То есть, мы можем написать что-то вроде программы, составленной из отдельных команд.
В Windows
В Windows скрипты для командной строки (пакетные скрипты) должны иметь расширение .bat
или .cmd
. В них пишутся команды, которые надо выполнить, каждая на новой строке, например:
@echo off REM перейти на диск D d: REM перейти в папку test cd test REM напечатать текст echo Привет мир
Как видно, кроме полезных команд, тут есть несколько дополнительных строк. Команда echo off
отключает вывод команд в консоль перед их выполнением, а знак @
отключает вывод самой команды echo off
. Команда REM
позволяет добавить комментарии в текст скрипта. Запускается скрипт просто указанием его имени (с указанием пути, если скрипт не находится в текущей папке или PATH
). При этом будет неявно запущен интерпретатор cmd.exe и он будет выполнять команды из указанного файла:
В скриптах также можно использовать переменные окружения, создавать ветвления (IF
) и циклы (FOR
).
Подробнее про скрипты CMD в Windows:
- https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D0%BA%D0%B5%D1%82%D0%BD%D1%8B%D0%B9_%D1%84%D0%B0%D0%B9%D0%BB
- http://www.intuit.ru/studies/courses/1059/225/info
- http://rsdn.org/article/winshell/batanyca.xml
- https://technet.microsoft.com/ru-ru/library/bb490869.aspx
- http://ab57.ru/cmd.html
Возможности bat-скриптов очень ограниченны, потому на смену им Microsoft разработала мощный интерпретатор Powershell и язык скриптов для него.
В Linux и Mac
В linux (и mac) любой текстовый файл можно сделать исполняемым, если поставить ему флаг execute (признак, что файл исполняемый) командой chmod +x file.xyz
и в первой строке файла указать специальную конструкцию под названием shebang (#!
), за которой указан полный путь к программе-интерпретатору. Ну например, если у нас есть PHP-файл, мы можем сделать его исполняемым и написать в начале строку (обратите внимание, если файл сохранен в кодировке utf-8, в нем не должно быть BOM):
И этот файл станет исполняемым, мы сможем запускать его, просто написав его имя:
Если в качестве интерпретатора прописать путь к оболочке bash, то получится bash-скрипт. В нем указываются команды, которые надо выполнить, каждая на новой строчке, например:
#!/bin/bash set -e # перейти в папку tmp cd /tmp/ # вывести список файлов в ней ls -al
Здесь использованы дополнительные конструкции: set -e
— говорит, что при ошибке выполнения любой команды скрипт завершается (без этого скрипт бы продолжил выполняться), символ #
обозначает комментарий. Язык bash довольно мощный, в нем есть ветвления (if
), циклы (for
, while
), функции и переменные.
Для bash-скриптов обычно либо указывают расширение .sh
, либо никакого расширения. В linux, как было написано выше, интерпретатор для файла определяется первой строчкой в нем, а не расширением.
Подробнее:
- https://ru.wikipedia.org/wiki/%D0%A8%D0%B5%D0%B1%D0%B0%D0%BD%D0%B3_(Unix)
- https://habrahabr.ru/company/ruvds/blog/325522/
- http://www.opennet.ru/docs/RUS/bash_scripting_guide/
Пакетный менеджер в Дебиан/Убунту
Линуксоиды — суровые занятые люди и меньше всего им хочется ради установки программы что-то искать, скачивать, проверять на вирусы, запускать, жать далее, обнаружить что надо сначала поставить NET framework и так далее, а потом отвечать на вопросы типа «Не хотите ли проверить обновления?». Они придумали другой способ: на сервере создается репозиторий пакетов с программами, а пользователь несколькими командами может найти и установить нужный. В Debian используются пакеты формата deb и программа apt-get
.
Для начала надо скачать свежий список пакетов:
sudo apt-get update
Эту команду стоит делать если ты давно ее не делал. Теперь список пакетов скачан и можно воспользоваться поиском. попробуем найти Апач:
apt-cache search apache | sort
Заметь, этой команде права рута не нужны. Команда sort сортирует результаты. Среди кучи результатов видим:
apache2 — Apache HTTP Server metapackage
Попробуем его установить. Это делается командой apt-get install
(имена пакетов):
sudo apt-get install apache2
Готово! При этом команда install автоматически обновит имеющиеся у тебя программы и библиотеки, если для них вышла более новая версия. Заметь, что ты можешь указать много пакетов сразу:
sudo apt-get install apache2 php5-common php5-curl
С помощью apt-get и заготовленного списка пакетов можно одной командой установить на сервер весь нужный софт. Так-то! Просмотреть установленные пакеты можно командой dpkg-query -l
Все пакеты подписаны цифровой подписью и она проверяется при установке, так что вирусов можно не бояться, если только ты не установил в систему ключи из других источников, в этом случае ты должен доверять автору ключа так как он может установить тебе в систему что угодно и выполнить любой код. По умолчанию установлены только официальные дебиановские ключи.
Пакеты, которые стоит установить сразу:
apache2 apache2-mpm-prefork php5 php5-cli php5-curl php5-dev php5-gd php5-gmp php5-imap php5-intl php5-mcrypt php5-mysqlnd php5-xdebug php5-xsl — думаю понятно что это.
- git — система управления версиями, она тебе понадобится чтобы коммитить код на гитхаб.
- htop (линуксовый цветной диспетчер задач, попробуй его запустить, q = выход)
- iftop (показывает какая программа куда соединяется и сколько трафика качает)
- iotop (показывает кто мучает диск)
- mc (файловый менеджер и редактор mcedit)
- nano (простой текстовый редактор)
- sysv-rc-conf (включает и выключает службы в автозапуск)
Чем править конфиги
Удобно использовать редактор nano, который часто предустановлен в линуксе. Горячие клавиши в нем подписаны внизу экрана.
Или же mcedit, который входит в состав файлового менеджера mc. Пиши например sudo mcedit /etc/apache2/httpd.conf и редактируй. Кнопки: F2 — сохранить, F10 — выйти, F7 − искать, Shift + F7 — искать еще, Esc + Tab — автодополнение. Escape как «отмена» работает, но надо жать 2 раза.
Просмотр логов
sudo less /var/log/apache2/error.log
sudo tail /var/log/messages
Отслеживать лог в реальном времени (попробуй): sudo tail -f /var/log/error.log
Поиск в логе через grep:
cat /var/log/messages | grep -i word
Для доступа к логам не нужны будут права админа если ты добавишь себя в группу adm.
Управление службами (апач. mysql): sudo service mysql действие
Где действие — это:
- start = запустить
- stop = остановить
- restart = перезапустить
- reload = обновить настройки из конфига (если ты его правил например) без остановки работы службы. То есть сайт ни на секунду не перестанет работать (в случае с restart — перестанет на несколько секунд). Не все службы это умеют, но если умеют то это удобно.
Выбор какие службы будут запускаться при загрузке: sudo sysc-rc-conf
, для выхода жми q.