क्या आउटपुट को कुछ 'अधिक' कमांड से पाइपिंग करने का एक तरीका है, जो linux \ unix गोले में उपलब्ध है?
क्या आउटपुट को कुछ 'अधिक' कमांड से पाइपिंग करने का एक तरीका है, जो linux \ unix गोले में उपलब्ध है?
जवाबों:
खैर ... वहाँ "अधिक" है, जो कमोबेश (...) वही है जो आप अन्य प्लेटफार्मों से उम्मीद करेंगे। निम्न उदाहरण का प्रयास करें:
dir -rec | more
हाँ वहाँ है:
some-cmdlet | out-host -paging
lessसिर्फ एक बड़ा पाठ दर्शक अनुप्रयोग है जो stdinपाठ के लिए स्वीकार करता है । आप इसे एक अस्थायी फ़ाइल में पाइप कर सकते हैं और इसे खुले में nanoया नीचे की ओर खोल सकते हैं vim! बात नहीं है। 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 के पोर्टेड प्रति का उपयोग कर वास्तव में पेजिंग को संभालने के लिए है।
आप इसे व्यवस्थापक शेल शुरू करके और चलाकर स्थापित कर सकते हैं :
Find-Package pscx | Install-Package -Force
( forceपुराने संस्करणों को अपग्रेड करना है)
आप इसे तार को पाइप कर सकते हैं, या फ़ाइलनाम को सीधे मापदंडों के रूप में दे सकते हैं।
type foo.txt | less
less foo.txt, bar.txt, baz.txt
यह ConEmu और Powershell windows में काम करता है, लेकिन दुर्भाग्य से यह v2.0 ISE के तहत आपके द्वारा अपेक्षित तरीके से काम नहीं करता है।
forceपुराने वर्जन को अपग्रेड करना" लगता है। थोड़ा भ्रामक।
Find-Package pscx | Install-Package -Force -scope currentuser -allowclobber
मैं "कम" कमांड को "अधिक" कमांड पर पसंद करता हूं। कम आदेश के साथ, परिणाम भी केवल आगे की ओर पीछे की ओर छेड़े जा सकते हैं।
विंडोज के लिए गिट से "कम" मेरे लिए काम करता है (मेरा पथ है C:\Program Files (x86)\Git\usr\less.exe। मेरे पास "कम" के गो संस्करण के साथ पॉवर्सशेल में त्रुटियां थीं ।
उदाहरण:
ls|less
टाइपिंग को बचाने के लिए मैंने अपने पॉवर्सशेल प्रोफाइल में कम के लिए उपनाम "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और 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और यह पावरशेल की पाइपलाइन के कारण तुरंत पृष्ठांकित आउटपुट शुरू कर देता है (जैसा कि अधिक.com के साथ पूर्ण आउटपुट की प्रतीक्षा करने के लिए विरोध किया गया है)।
cat C:\Temp\test.txt
बिल्ली गेट-कंटेंट के लिए एक उपनाम है - बड़ी फ़ाइलों के साथ आपको टर्मिनल के निचले भाग में अधिक - आउटपुट मिलेगा
आप -वाइट को भी जोड़ सकते हैं
cat C:\Temp\test.txt -wait
-वाइट टेल का उपयोग करने जैसा है लेकिन यह वास्तव में कमांड को रीफ़्रेश करता है जो आउटपुट को रीफ्रेश करता है
cat C:\Temp\test.txt | oh –Paging
ओह = मेजबान
मेरे पास वास्तव में यह प्रश्न था (अच्छी तरह से मैं कम चाहता था, अधिक नहीं) और पाया गया कि मेरे लिए काम करने वाले @ रीचर्ड-बरग ने पावरशेल (लेकिन लिनक्स पर नहीं) के लिए नया है, मुझे उस उत्तर से गायब चीजें मिलीं (मेरे लिए) थे: मुझे पहली बार जाने की जरूरत थी:
Find-Package pscx | Install-Package
जो तब "नौगेट पैकेज स्थापित करने" के लिए प्रेरित हुआ। मैंने ऐसा किया, लेकिन फिर -AllowClobberपैरामीटर का उपयोग करना पड़ा Install-Package।
तब कम उपयोग करने के लिए, मुझे यह करना पड़ा:
Set-ExecutionPolicy RemoteSigned
जो सभी ने काम किया :-)
सुझाव: फ़ाइल को एक अस्थायी / डिस्पोजेबल .txt फ़ाइल में डालें, फिर OS को आपके पसंदीदा संपादक को आमंत्रित करें, जो कि .txt एक्सटेंशन से जुड़ा हुआ है।
जाओ-प्रक्रिया | आउट-फ़ाइल temp.txt; । \ Temp.txt
नोट: हर बार जब आप इसका उपयोग करते हैं तो आप किसी भी पहले से मौजूद temp.txt फ़ाइल को अधिलेखित कर देंगे। फ़ाइल नाम बुद्धिमानी से चुनें।
उपरोक्त केवल एक मूल विचार है।
अगला चरण इसे उपनाम या प्रोफाइल फ़ंक्शन आदि का उपयोग करके "अधिक" में बदलना होगा।
HTH, Marcelo Finkielsztein