ڊفالٽ سيٽنگون WSL پروفائلز ۾ عرف ۽ ماحوليات جي متغيرن سان عزت نه آھن.
لينڪس رستي جي مڪمل ٿيڻ جي حمايت نه ڪئي وئي آهي.
ڪمانڊ مڪمل ڪرڻ جي حمايت نه ڪئي وئي آهي.
دليل جي مڪمل ٿيڻ جي حمايت نه ڪئي وئي آهي.
نتيجي طور، لينڪس حڪمن کي ونڊوز جي تحت سيڪنڊ-ڪلاس شهرين وانگر علاج ڪيو ويندو آهي- ۽ مقامي حڪمن کان وڌيڪ استعمال ڪرڻ ڏکيو آهي. انهن جي حقن کي برابر ڪرڻ لاء، اهو ضروري آهي ته فهرستن جي مسئلن کي حل ڪيو وڃي.
پاور شيل فنڪشن ريپرس
PowerShell فنڪشن ريپرز سان، اسان ڪمانڊ مڪمل ڪرڻ شامل ڪري سگھون ٿا ۽ پريفڪس جي ضرورت کي ختم ڪري سگھون ٿا wsl، ونڊوز رستن کي WSL رستن ۾ ترجمو ڪندي. شيل لاء بنيادي گهرجون:
هر لينڪس ڪمانڊ لاءِ لازمي طور تي هڪ ئي نالي سان هڪ فنڪشن ريپر هجڻ گهرجي.
شيل کي لازمي طور تي منظور ٿيل ونڊوز رستن کي تسليم ڪرڻ گهرجي ۽ انهن کي WSL رستن ۾ تبديل ڪرڻ گهرجي.
شيل کي سڏڻ گهرجي wsl ڪنهن به پائپ لائن ان پٽ تي مناسب لينڪس ڪمانڊ سان ۽ فنڪشن ڏانهن منظور ٿيل ڪنهن به ڪمانڊ لائن دليلن کي پاس ڪرڻ سان.
جيئن ته هي نمونو ڪنهن به حڪم تي لاڳو ٿي سگهي ٿو، اسان انهن لفافي جي تعريف کي ختم ڪري سگهون ٿا ۽ متحرڪ طور تي انهن کي درآمد ڪرڻ لاء حڪمن جي فهرست مان ٺاهي سگهون ٿا.
# The commands to import.
$commands = "awk", "emacs", "grep", "head", "less", "ls", "man", "sed", "seq", "ssh", "tail", "vim"
# Register a function for each command.
$commands | ForEach-Object { Invoke-Expression @"
Remove-Alias $_ -Force -ErrorAction Ignore
function global:$_() {
for (`$i = 0; `$i -lt `$args.Count; `$i++) {
# If a path is absolute with a qualifier (e.g. C:), run it through wslpath to map it to the appropriate mount point.
if (Split-Path `$args[`$i] -IsAbsolute -ErrorAction Ignore) {
`$args[`$i] = Format-WslArgument (wsl.exe wslpath (`$args[`$i] -replace "", "/"))
# If a path is relative, the current working directory will be translated to an appropriate mount point, so just format it.
} elseif (Test-Path `$args[`$i] -ErrorAction Ignore) {
`$args[`$i] = Format-WslArgument (`$args[`$i] -replace "", "/")
}
}
if (`$input.MoveNext()) {
`$input.Reset()
`$input | wsl.exe $_ (`$args -split ' ')
} else {
wsl.exe $_ (`$args -split ' ')
}
}
"@
}
جي فهرست $command درآمدي حڪمن کي بيان ڪري ٿو. اسان پوءِ متحرڪ طور تي ڪمانڊ استعمال ڪندي انهن مان هر هڪ لاءِ فنڪشن ريپر ٺاهيندا آهيون Invoke-Expression (پهرين ڪنهن به عرف کي هٽائڻ سان جيڪو فنڪشن سان تڪرار ڪندو).
ڪمانڊ لائن دليلن تي ڪم ڪري ٿو، ڪمانڊ استعمال ڪندي ونڊوز رستن کي طئي ڪري ٿو Split-Path и Test-Path۽ پوء انهن رستن کي WSL رستن ۾ تبديل ڪري ٿو. اسان هڪ مددگار فنڪشن ذريعي رستن کي هلائيندا آهيون Format-WslArgument، جنهن جي وضاحت ڪنداسين بعد ۾. اهو خاص ڪردارن کان بچي ٿو جهڙوڪ خال ۽ قوس جيڪي ٻي صورت ۾ غلط تشريح ڪيا ويندا.
آخرڪار، اسان بيان ڪريون ٿا wsl پائپ لائن ان پٽ ۽ ڪو به ڪمانڊ لائن دليل.
انهن ريپرز سان توهان پنهنجي پسنديده لينڪس ڪمانڊ کي وڌيڪ قدرتي طريقي سان ڪال ڪري سگهو ٿا بغير ڪنهن اڳياڙي کي شامل ڪرڻ wsl ۽ بغير پريشان ٿيڻ جي ته ڪيئن رستا تبديل ڪيا ويا آهن:
man bash
less -i $profile.CurrentUserAllHosts
ls -Al C:Windows | less
grep -Ein error *.log
tail -f *.log
حڪمن جو بنيادي سيٽ هتي ڏيکاريل آهي، پر توهان ڪنهن به لينڪس ڪمان لاء شيل ٺاهي سگهو ٿا صرف ان کي لسٽ ۾ شامل ڪندي. جيڪڏھن توھان ھي ڪوڊ شامل ڪريو توھان جي پروفائل PowerShell، اهي حڪم توهان لاءِ دستياب هوندا هر PowerShell سيشن ۾، جيئن ته مقامي حڪمن وانگر!
ڊفالٽ سيٽنگون
لينڪس ۾، لاگ ان پروفائلز ۾ عرف ۽/يا ماحوليات جي متغيرن کي بيان ڪرڻ عام آھي، اڪثر استعمال ٿيل حڪمن لاءِ ڊفالٽ پيٽرول سيٽنگ ڪرڻ (مثال طور، alias ls=ls -AFh يا export LESS=-i). هڪ غير مداخلت واري شيل ذريعي پراکسي ڪرڻ جي نقصانن مان هڪ آهي wsl.exe - ته پروفائيل لوڊ نه ڪيا ويا آهن، تنهن ڪري اهي اختيار ڊفالٽ طور تي دستياب نه آهن (يعني. ls WSL ۾ ۽ wsl ls مٿي بيان ڪيل عرف سان مختلف طريقي سان عمل ڪندو).
PowerShell مهيا ڪري ٿو $PSDefaultParameterValues, ڊفالٽ پيٽرول جي وضاحت ڪرڻ لاء هڪ معياري ميڪانيزم، پر صرف cmdlets ۽ ترقي يافته افعال لاء. يقينن، اسان پنهنجي شيل مان ترقي يافته ڪم ڪري سگهون ٿا، پر اهو غير ضروري پيچيدگين کي متعارف ڪرايو آهي (مثال طور، PowerShell جزوي پيٽرولر نالن سان تعلق رکي ٿو (مثال طور، -a سان لاڳاپو رکي ٿو -ArgumentList)، جيڪو لينڪس ڪمانڊ سان ٽڪراءُ ڪندو جيڪي جزوي نالا دليلن طور وٺن ٿا)، ۽ ڊفالٽ ويلز کي واضع ڪرڻ لاءِ نحو سڀ کان وڌيڪ مناسب نه هوندو (ڊفالٽ دليلن کي ڪي ۾ پيراميٽر جي نالي جي ضرورت هوندي آهي، نه رڳو ڪمانڊ جو نالو) .
تنهن هوندي، اسان جي شيل ۾ ٿوري تبديلي سان، اسان هڪ نموني کي لاڳو ڪري سگهون ٿا $PSDefaultParameterValues، ۽ لينڪس ڪمانڊز لاءِ ڊفالٽ آپشنز کي فعال ڪريو!
حالتن ۾ جتي bash خودڪار مڪمل ٿيڻ ڪو به نتيجو نه ٿو ڏئي، PowerShell سسٽم جي ڊفالٽ ونڊوز رستن ڏانهن موٽائي ٿو. اهڙيء طرح، عملي طور تي، توهان پنهنجي صوابديد تي ٻنهي طريقن سان گڏ استعمال ڪري سگهو ٿا.
ٿڪل
PowerShell ۽ WSL استعمال ڪندي، اسان لينڪس حڪمن کي ونڊوز ۾ مقامي ايپليڪيشنن جي طور تي ضم ڪري سگھون ٿا. Win32 تعميرات يا لينڪس يوٽيلٽيز کي ڳولڻ جي ڪا ضرورت ناهي يا لينڪس شيل ڏانهن وڃڻ سان توهان جي ڪم جي فلو کي مداخلت ڪرڻ جي ضرورت ناهي. بس WSL انسٽال ڪريو، ترتيب ڏيڻ PowerShell پروفائل и انھن حڪمن کي لسٽ ڪريو جيڪي توھان درآمد ڪرڻ چاھيو ٿا! لينڪس ۽ ونڊوز ڪمانڊ پيرا ميٽرز ۽ فائل رستا لاءِ رچ خودڪار مڪمل ڪارڪردگي آهي جيڪا اڄ به مقامي ونڊوز ڪمانڊز ۾ موجود ناهي.
مٿي بيان ڪيل مڪمل سورس ڪوڊ، انهي سان گڏ اضافي هدايتون ان کي توهان جي ڪم فلو ۾ شامل ڪرڻ لاءِ، موجود آهي هتي.
ڪھڙا لينڪس ڪمانڊ توھان کي تمام گھڻو مفيد ملندا آھن؟ ونڊوز ۾ ڪم ڪرڻ وقت ڪهڙيون ٻيون عام شيون غائب آهن؟ تبصرن ۾ لکو يا GitHub تي!