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



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

573   11  

11 ответов:

хорошо... Есть "больше", то есть больше или меньше (...) то же самое вы ожидаете от других платформ. Попробуйте следующий пример:

dir -rec | more

Да есть такое:

some-cmdlet | out-host -paging

dir -rec | more Это плохой совет.

это заставит powershell оценить всю команду до вывода ее на экран, что-то, что не нужно для чего-то вроде вывода paginating

В некоторых крайних случаях, это может привести к сбою системы (например,dir 'C:\' | more)

С другой стороны, используя out-host -paging будет выводить информацию на экран, как это доступно.

The Расширения Сообщества Powershell есть удобная функция с именем "меньше", которая обеспечивает более полный набор функций в стиле Unix, используя портированную копию less.exe на самом деле ручка подкачки.

вы можете установить его, начиная с admin shell и работает:

Find-Package pscx | Install-Package -Force

(the force это обновление старых версий)

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

type foo.txt | less
less foo.txt, bar.txt, baz.txt

Он работает в ConEmu и Powershell windows, но, к сожалению, это не работает так, как вы ожидали бы под v2.0 ISE.

more не используется для ограничения выход, он используется для вставить выход и сделать его легче читать в терминале, если что-нибудь.

вы говорите об использовании head и tail? EggHeadCafe пример:

type my.txt | select-object -first 10

type my.txt | select-object -last 10

эмуляция head и tail.

Я добавил определение функции и псевдоним в свой профиль по умолчанию по адресу %SystemRoot%\system32\windowspowershell\v1.0\profile.ps1

эта функция в основном основана на эта запись в блоге Амана Дхалли С добавленной обработкой исключений для нажатия 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).

Если у вас установлен VIM, я полностью наслаждаюсь dir -r | vim -R -. К сожалению, это страдает та же проблема с more (т. е. нет потоковой передачи).

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

"меньше" от msysgit работает для меня (для меня, путь C:\Program Files (x86)\Git\bin\less.exe). У меня были ошибки в powershell с ГОУ вариант "меньше".

пример:

ls|less

чтобы сохранить ввод, я добавил псевдоним " l " для меньшего количества в моем powershell профиль:

sal l "C:\Program Files (x86)\Git\bin\less.exe"

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
cat C:\Temp\test.txt

cat-это псевдоним для Get-Content-с большими файлами вы получите -- More -- output в нижней части терминала

вы также можете добавить-подождите

cat C:\Temp\test.txt -wait 

-ожидание похоже на использование хвоста, но на самом деле он перезапускает команду, просто обновляя вывод

cat C:\Temp\test.txt | oh –Paging

oh = Out-Host

предложение: поместите файл во временный / одноразовый .txt-файл, а затем пусть ОС вызовет ваш любимый редактор, тот, который связан с ним .расширение txt.

Get-Process / Out-File temp.формат txt. ; \температура.txt

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

выше это просто основная идея.
Следующим шагом будет преобразование этого в "/ more " с использованием псевдонимов или функций профиля, так далее.

HTH, Марсело Финкельштейн

Comments

    Ничего не найдено.