Есть ли способ для разбиения на страницы вывода путем соединения его с некоторой командой "больше", доступной в оболочках linux\unix?
Эквивалент команды "больше" или "меньше" в Powershell?
Ответ 1
Ну... Существует "больше", которое более или менее (...) такое же, что и на других платформах. Попробуйте следующий пример:
dir -rec | more
Ответ 2
Да, есть:
some-cmdlet | out-host -paging
Ответ 3
dir -rec | more
является плохим советом.
Это заставит powershell оценивать всю команду до вывода ее на экран, что-то, что не нужно для чего-то вроде вывода на страницу
В некоторых крайних случаях это может привести к сбою системы (например, dir 'C:\' | more
)
С другой стороны, использование out-host -paging
выводит информацию на экран по мере его доступности.
Ответ 4
Расширения сообщества Powershell имеют удобную функцию с именем "меньше", которая предоставляет более полный набор функций в стиле Unix, используя портированную копию of less.exe, чтобы фактически обрабатывать пейджинг.
Вы можете установить его, запустив оболочку admin и выполнив:
Find-Package pscx | Install-Package -Force
(force
должен обновить более старые версии)
Вы можете подключать к нему строки или давать имена файлов в качестве прямых параметров.
type foo.txt | less
less foo.txt, bar.txt, baz.txt
Он работает в окнах ConEmu и Powershell, но, к сожалению, он не работает так, как вы ожидали бы под версией v2.0.
Ответ 5
more
не используется для ограничения вывода, он используется для выделения страниц и упрощает чтение в терминале, если что-либо.
Вы говорите об использовании head
и tail
? EggHeadCafe имеет пример:
type my.txt | select-object -first 10
type my.txt | select-object -last 10
для эмуляции head
и tail
.
Ответ 6
Я добавил определение функции и псевдоним моего профиля по умолчанию
%SystemRoot%\system32\windowspowershell\v1.0\profile.ps1
Эта функция в основном основана на этой записи в блоге от Aman Dhally с добавлением обработки исключений для нажатия Q
во время пейджинга.
function more2
{
param(
[Parameter(ValueFromPipeline=$true)]
[System.Management.Automation.PSObject]$InputObject
)
begin
{
$type = [System.Management.Automation.CommandTypes]::Cmdlet
$wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(‘Out-Host’, $type)
$scriptCmd = {& $wrappedCmd @PSBoundParameters -Paging }
$steppablePipeline = $scriptCmd.GetSteppablePipeline($myInvocation.CommandOrigin)
$steppablePipeline.Begin($PSCmdlet)
}
process
{
try
{
$steppablePipeline.Process($_)
}
catch
{
break;
}
}
end
{
$steppablePipeline.End()
}
#.ForwardHelpTargetName Out-Host
#.ForwardHelpCategory Cmdlet
}
New-Alias more more2
поэтому я могу просто называть его как dir -r | more
и сразу же запускает выгружаемый вывод из-за конвейера PowerShell (в отличие от ожидания полного вывода с помощью more.com).
Ответ 7
cat C:\Temp\test.txt
cat - это псевдоним для Get-Content - с более крупными файлами вы получите "Больше" - вывод в нижней части терминала
Вы также можете добавить -wait
cat C:\Temp\test.txt -wait
-wait похож на использование хвоста, но на самом деле он перезапускает команду, просто обновляя вывод
cat C:\Temp\test.txt | oh –Paging
oh = Out-Host
Ответ 8
Если у вас установлен VIM, я полностью наслаждаюсь dir -r | vim -R -
. К сожалению, такая же проблема возникает при использовании more
(т.е. Потоковой передачи).
Ответ 9
Мне нравится команда "меньше" лучше, чем команда "больше", потому что вы можете пойти и вернуться назад (а не просто вперед). Я считаю эту функцию очень полезной.
"less" из msysgit работает для меня (для меня путь C:\Program Files (x86)\Git\bin\less.exe
). У меня были ошибки в powershell с GOW версия "less".
Пример:
ls|less
Чтобы сохранить ввод, я добавил псевдоним "l" меньше в моем профиле powershell:
sal l "C:\Program Files (x86)\Git\bin\less.exe"
Ответ 10
Предложение: поместите файл во временный/одноразовый .txt файл, а затем позвольте ОС вызывать ваш любимый редактор, тот, который связан с расширением .txt.
Get-Process | Out-File temp.txt;.\Temp.txt
Примечание: каждый раз, когда вы используете это, вы перезаписываете любой существующий файл temp.txt. Выберите имя файла с умом.
Вышеизложенное - просто основная идея.
Следующий шаг будет преобразовывать это в "| more" с использованием псевдонимов или функций профиля и т.д.
НТН, Марсело Финикельштейн
Ответ 11
PS> cd C:\
PS> dir -r -ex 0 | out-Host -paging
PS> dir -file -r -ea 0 c:\Windows | Select FullName,Length,LastWriteTime | out-gridview