linux \ unixシェルで利用可能な 'more'コマンドに出力をパイプすることにより、出力にページ番号を付ける方法はありますか?
linux \ unixシェルで利用可能な 'more'コマンドに出力をパイプすることにより、出力にページ番号を付ける方法はありますか?
回答:
まあ... "もっと"があります。それは多かれ少なかれ(...)他のプラットフォームに期待するものと同じです。次の例を試してください。
dir -rec | more
はいあります:
some-cmdlet | out-host -paging
less
はstdin
、テキストを受け入れる大きなテキストビューアアプリケーションです。あなたは、一時ファイルへのパイプそれは可能性があり、それを開くnano
か、vim
EVEN MOAR POWERRRRのために!ポイントではありません。PowerShellは似ていますbash
(ただし、より良いのはimho)。less
にありませんbash
。それは別のバイナリです。だからあなたの批判は無効です。
oh
のためであるOut-Host
、と競合はありません場合は、コマンドがかもしれないので、パラメータは、省略することができますSome-Cmdlet | oh -p
dir -rec | more
悪いアドバイスです。
それは画面に出力する前にコマンド全体を評価するようにし、出力のページ付けのようなものには必要ありません。
いくつかの極端な例では、(例えば、システムがクラッシュする可能性がありdir 'C:\' | more
)
一方、を使用out-host -paging
すると、利用可能な情報が画面に出力されます。
out-host -paging
必要に応じて 機能します。more
リモートコマンドの実行中にパイプスルーすることは役に立ちません。テキスト全体が一度に表示されます。
out-host -paging
ですoh -pa
。
PowerShellのコミュニティの拡張機能は、実際にページングを処理するためにless.exeの移植コピーを使用して、より完全なUnixスタイルの機能セットを提供します「少ない」という名前の便利な機能を持っています。
管理シェルを起動して実行することでインストールできます:
Find-Package pscx | Install-Package -Force
(これforce
は古いバージョンをアップグレードすることです)
パイプで文字列を渡すか、ファイル名をダイレクトパラメータとして指定できます。
type foo.txt | less
less foo.txt, bar.txt, baz.txt
ConEmuおよびPowershellウィンドウで機能しますが、残念ながらv2.0 ISEで期待したとおりに機能しません。
force
れるため、「古いバージョンをアップグレードすること」と表示されます少し誤解を招く。
Find-Package pscx | Install-Package -Force -scope currentuser -allowclobber
「more」コマンドより「less」コマンドの方が好きです。lessコマンドを使用すると、結果を順方向ではなく逆方向にページングすることもできます。
Git for Windowsの「less」が機能します(私のパスはC:\Program Files (x86)\Git\usr\less.exe
です。PowershellでGowバージョンの「less」でエラーが発生しました。
例:
ls|less
入力を節約するために、Powershellプロファイルにエイリアス「l」を追加しました。
sal l "C:\Program Files (x86)\Git\bin\less.exe"
less
ここにもう一人のファン。しかし、私はこのエラーを受け取ります。何かアドバイス?________________________________________PS C:\Users\oli> Get-Content tmpf | out-host 'C:\Program Files\Git\usr\bin\less.exe' Out-Host : A positional parameter cannot be found that accepts argument 'C:\Program Files\Git\usr\bin\less.exe'. At line:1 char:20 + Get-Content tmpf | out-host 'C:\Program Files\Git\usr\bin\less.exe' + CategoryInfo : InvalidArgument: (:) [Out-Host], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.OutHostCommand
more
出力を制限するために使用されるのではなく、出力にページ番号を付けて、ターミナルで読みやすくするために使用されます。
head
andの使用について話していtail
ますか? EggHeadCafeには次の例があります。
type my.txt | select-object -first 10
type my.txt | select-object -last 10
エミュレートするhead
とtail
。
head
し、tail
今PowerShellのは:stackoverflow.com/a/41626586/1081043
関数定義とエイリアスをデフォルトのプロファイルに追加しました
%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との完全な出力を待ってではなく)。
私はまさにこの質問をしていて(まあ私はもっと少なくしたかったのですが)@ richard-bergの答えが私にとってうまくいき、PowerShell(Linuxではない)の初心者だったので、私はその答えから欠けているものを見つけました(私にとって)だった:私は最初に行く必要があった:
Find-Package pscx | Install-Package
それから「nugetパッケージのインストール」を促された。私はこれを行いましたが、で-AllowClobber
パラメータを使用する必要がありましたInstall-Package
。
次に、使用量を減らすために、私はしなければなりませんでした:
Set-ExecutionPolicy RemoteSigned
これはすべてうまくいきました:-)