Powershell의 'more'또는 'less'명령과 동일합니까?
출력을 linux \ unix 셸에서 사용할 수있는 'more'명령으로 파이프하여 페이지를 매기는 방법이 있습니까?
글쎄요 ... 다른 플랫폼에서 기대할 수있는 것과 거의 같은 (...) "more"가 있습니다. 다음 예를 시도하십시오.
dir -rec | more
예 :
some-cmdlet | out-host -paging
dir -rec | more
나쁜 조언입니다.
화면에 출력하기 전에 powershell이 전체 명령을 평가하도록합니다. 출력 페이지 매김과 같은 작업에는 필요하지 않습니다.
일부 극단적 인 경우에 따라서는 충돌 (예를 시스템을 일으킬 수 dir 'C:\' | more
)
반면에를 사용 out-host -paging
하면 사용 가능한 정보가 화면에 출력됩니다.
파워 쉘 커뮤니티 확장 실제로 페이징을 처리하기 위해 less.exe의 포팅 사본을 사용하여,보다 완전한 유닉스 스타일의 기능 세트를 제공하는 '덜'라는 편리한 기능을 가지고있다.
관리자 셸 을 시작 하고 다음을 실행 하여 설치할 수 있습니다 .
Find-Package pscx | Install-Package -Force
( force
이전 버전을 업그레이드 하는 것 입니다)
문자열을 파이프로 연결하거나 파일 이름을 직접 매개 변수로 지정할 수 있습니다.
type foo.txt | less
less foo.txt, bar.txt, baz.txt
ConEmu 및 Powershell 창에서 작동하지만 안타깝게도 v2.0 ISE에서 예상하는 방식으로 작동하지 않습니다.
"more"명령보다 "less"명령을 선호합니다. less 명령을 사용하면 결과를 앞으로가 아니라 뒤로 페이지 할 수도 있습니다.
Windows 용 Git 의 "less"가 저에게 효과적입니다 (내 경로는 C:\Program Files (x86)\Git\usr\less.exe
. Powershell에서 Gow 버전 "less" 오류가 발생했습니다 .
예:
ls|less
입력을 저장하기 위해 Powershell 프로필에 less라는 별칭 "l"을 추가했습니다.
sal l "C:\Program Files (x86)\Git\bin\less.exe"
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
이 기능은 주로 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으로 전체 출력을 기다리는 것과 반대).
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
VIM이 설치되어 있다면 dir -r | vim -R -
. 불행히도 이것은 동일한 문제를 안고 있습니다 more
(즉, 스트리밍 없음).
cat C:\Temp\test.txt
cat은 Get-Content의 별칭입니다. 더 큰 파일을 사용하면 터미널 하단에-More-출력이 표시됩니다.
-wait를 추가 할 수도 있습니다.
cat C:\Temp\test.txt -wait
-wait는 tail을 사용하는 것과 비슷하지만 실제로는 출력을 새로 고치는 명령을 다시 실행합니다.
cat C:\Temp\test.txt | oh –Paging
오 = 외부 호스트
Suggestion: Put the file into a temporary/disposable .txt file, then let the OS invoke your favorite editor, the one that is linked to the .txt extension.
Get-Process | Out-File temp.txt ; .\temp.txt
Note: each time you use this you will overwrite any pre-existent temp.txt file. Pick the file name wisely.
The above is just a basic idea.
Next step would be transforming this into "| more" using aliases or profile functions, etc.
HTH, Marcelo Finkielsztein
I had exactly this question (well I wanted less, not more) and found the answer of @richard-berg worked for me, being new to PowerShell (but not to Linux), I found the things missing from that answer (for me) were: I first needed to go:
Find-Package pscx | Install-Package
which then prompted for "installing nuget package". I did this but then had to use the -AllowClobber
parameter on Install-Package
.
then in order to use less, I had to:
Set-ExecutionPolicy RemoteSigned
which all worked :-)
참고URL : https://stackoverflow.com/questions/1078920/equivalent-of-more-or-less-command-in-powershell
'programing tip' 카테고리의 다른 글
Flutter 앱에 스플래시 화면 추가 (0) | 2020.10.09 |
---|---|
Double.TryParse 또는 Convert.ToDouble-어느 것이 더 빠르고 안전합니까? (0) | 2020.10.09 |
상대 URL에서 절대 URL 가져 오기. (0) | 2020.10.08 |
오류가 발생하면 using 문이 데이터베이스 트랜잭션을 롤백합니까? (0) | 2020.10.08 |
codeigniter 웹 사이트를 다국어로 만드는 가장 좋은 방법입니다. (0) | 2020.10.08 |