লিনাক্স-ইউনিক্স শেলগুলিতে কিছু 'আরও' কমান্ডে পাইপ করে আউটপুটকে কীভাবে প্যাগিনেট করার উপায় আছে?
লিনাক্স-ইউনিক্স শেলগুলিতে কিছু 'আরও' কমান্ডে পাইপ করে আউটপুটকে কীভাবে প্যাগিনেট করার উপায় আছে?
উত্তর:
ঠিক আছে ... "আরও" আছে, যা কম বা কম (...) আপনি অন্যান্য প্ল্যাটফর্মগুলি থেকে আশা করতেন তেমনই। নিম্নলিখিত উদাহরণ ব্যবহার করে দেখুন:
dir -rec | more
হ্যা এখানে:
some-cmdlet | out-host -paging
lessএটি কেবলমাত্র একটি বড় পাঠ্য দর্শকের অ্যাপ্লিকেশন যা stdinএই পাঠ্যের জন্য গ্রহণ করে। আপনি এটি একটি অস্থায়ী ফাইলে পাইপ করতে পারেন এবং এটি এভেন মোয়ার পাওয়ারের জন্য nanoবা এটি খুলতে পারেন vim! বিন্দু নয়। পাওয়ারশেলটি bash(তবে আরও ভাল, ইমো) এর মতো। 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
এটি কনেমু এবং পাওয়ারশেল উইন্ডোতে কাজ করে তবে দুর্ভাগ্যক্রমে এটি v2.0 ISE এর অধীনে আপনি যেভাবে প্রত্যাশা করতেন তা কাজ করে না।
forceপুরোনো সংস্করণগুলি আপগ্রেড হয়" একটি বলে মনে হয় সামান্য বিভ্রান্তিকর।
Find-Package pscx | Install-Package -Force -scope currentuser -allowclobber
আমি "কম" কমান্ডের চেয়ে "কম" কমান্ড পছন্দ করি। কম কমান্ডের সাহায্যে ফলাফলগুলি কেবল সামনের দিকে না গিয়ে পিছন দিকে পেজ করা যায়।
উইন্ডোজের জন্য গিট থেকে "কম" আমার পক্ষে কাজ করে *
টাইপিং সংরক্ষণ করতে আমি আমার পাওয়ার শেল প্রোফাইলে (") এর জন্য" এল "নামটি যুক্ত করেছিলাম notepad $profile:
sal l "C:\Program Files (x86)\Git\bin\less.exe"
lessউপরের পথে C:\Program Files\Git\usr\bin\less.exeবা অনুরূপ উভয়ের জন্য সন্ধান করুন ।
*: আমি PowerShell ত্রুটি ছিল Gow "কম" এর সংস্করণ।
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? EggHadCafe এর একটি উদাহরণ রয়েছে:
type my.txt | select-object -first 10
type my.txt | select-object -last 10
অনুকরণ করা headএবং tail।
headএবং tailPowerShell এখন: stackoverflow.com/a/41626586/1081043
আমি আমার ডিফল্ট প্রোফাইলে একটি ফাংশন সংজ্ঞা এবং ওরফে যুক্ত করেছি
%SystemRoot%\system32\windowspowershell\v1.0\profile.ps1
এই ফাংশনটি মূলত আমান Dালির এই ব্লগ এন্ট্রির উপর ভিত্তি করে 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এবং এটি পাওয়ারশেলের পাইপলাইনের কারণে তত্ক্ষণাত্ পেজড আউটপুট শুরু করে (আরও ডটকমের সাথে সম্পূর্ণ আউটপুট অপেক্ষা করার বিপরীতে)।
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 ফাইলে রাখুন, তারপরে ওএস আপনার প্রিয় সম্পাদককে ডেকে আনুক, যেটি .txt এক্সটেনশনের সাথে যুক্ত।
গেট-প্রক্রিয়া | আউট-ফাইল temp.txt; । \ temp.txt
দ্রষ্টব্য: প্রতিবার আপনি এটি ব্যবহার করার সময় আপনি কোনও প্রাক-বিদ্যমান টেম্প। টেক্সট ফাইল ওভাররাইট করতে পারবেন। বুদ্ধি করে ফাইলের নামটি বেছে নিন।
উপরেরটি কেবল একটি প্রাথমিক ধারণা।
পরবর্তী পদক্ষেপটি এটিকে "| আরও" রূপান্তরিত করবে এলিয়াসগুলি বা প্রোফাইল ফাংশন, ইত্যাদি ব্যবহার করে using
এইচটিএইচ, মার্সেলো ফিনকিয়েলসটেইন