Подтвердить что ты не робот

Эквивалент команды "больше" или "меньше" в Powershell?

Есть ли способ для разбиения на страницы вывода путем соединения его с некоторой командой "больше", доступной в оболочках linux\unix?

4b9b3361

Ответ 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