Uzun süredir Linux kullanıcısı olarak komut isteminde çok rahatım. Her ne kadar Windows deneyimi Powershell’in çıkışından büyük fayda sağlasa da, araç yazmam gerektiğinde genellikle rahat olduğum bir dile yöneliyorum; Windows’ta bu C#’tır. Etkili C# betiklerini hızlı bir şekilde yaymak için LINQPad’den daha iyi bir şey yoktur.
LINQPad artık betikleri doğrudan terminalden yürütmek için lprun adı verilen bir yol sunuyor, ancak onu çağırmak biraz zor çünkü 1) varsayılan olarak PATH’inizde değil ve 2) .linq dosyalarını çalıştırmak için varsayılan program etkileşimli LINQPad düzenleyicisidir ( ve haklı olarak öyle). Peki bu tatlıyı etkinleştirmek için ne gerekiyor? $ myscript.linq with args
büyü? Sorduğuna sevindim…
Dosya uzantısı ilişkilendirmesi ekleme
İşte ilk kötü haber: yeni bir uzantıya ihtiyacımız var. Evet, bunun yerine lprun’u çağıracak şekilde .linq ilişkilendirmesini sıfırlayabilirsiniz, ancak büyük olasılıkla eski davranışını korumak ve bu dosyaları varsayılan olarak düzenleyicide açmak istersiniz. Bu eğitimde yeni bir uzantı oluşturacağız: .linqRLINQ Runner için.
İlk adım, üzerinde test edilecek bir komut dosyası oluşturmaktır. Benimki oldukça basit (dili şu şekilde ayarlamayı unutmayın: C# Program
):
void Main(string[] args)
{
Console.WriteLine("Arguments: " + String.Join(", ", args));
}
Bunu bir yere kaydedin ve uzantıyı verin .linqr
. LINQPad size başka bir seçenek sunmadığı için Explorer’da dosyayı yeniden adlandırmanız gerekebilir. .linq
kullanıcı arayüzünden kaydederken. İlişkilendirmeyi kurmanın en kolay yolu, dosya özelliklerine gidip “Varsayılan Programı” güncellemektir, ancak bu yalnızca ilk adımdır. Explorer’da bir dosya ilişkilendirmesi kurduğunuzda, kendisine gönderilen ek bağımsız değişkenleri yok sayar. Bu iken irade yukarıdaki betiği yürütün,
args
her zaman boş bir dizi olacaktır.
$ myscript.linqr hello world
Arguments:
Düzeltmek için kayıt defterine girmemiz gerekiyor. ‘Regedit’ adlı uygulamayı açın ve klasöre gidin
HKEY_CLASSES_ROOT\.linqr
. İçeride şu adı taşıyan bir giriş göreceksiniz:
(Default)
. İçeriğini al Data
değer ve kayıt defteri anahtarını bulun HKEY_CLASSES_ROOT\
– benim durumumda, HKEY_CLASSES_ROOT\linqr_auto_file
. Tamamen aşağıya doğru kazın command
klasörüne gittiğinizde Varsayılan verilerin yolunuzu içerdiğini göreceksiniz. lprun.exe
ardından "%1"
. Bu yüzde göstergesi, dosyanızda boşluk olması durumunda çevresinde tırnak işaretleri bulunan ilk argümanı, komut dosyanızın adını ifade eder. Kalan bağımsız değişkenleri eklemek için çift tıklayın. (Default)
alanını açın ve satırın sonuna (öndeki boşluk dahil) şunu ekleyin: ` %‘. *Olmadığına emin olun bunun etrafına çift tırnak koymak gerekir çünkü aksi takdirde her ek argüman tek bir argümanda toplanır. Artık betiği argümanlarla çalıştırdığınızda bunlar dahil edilecek:
$ myscript.linqr hello world
Arguments: hello, world
.reg betikleriyle aranız iyiyse bu komut yukarıdakileri otomatik olarak yapacaktır. Yapılandırmak istiyorsanız lprun uzantısını veya yolunu değiştirdiğinizden emin olun.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\linqr_auto_file]
@=""
[HKEY_CLASSES_ROOT\linqr_auto_file\shell]
[HKEY_CLASSES_ROOT\linqr_auto_file\shell\open]
[HKEY_CLASSES_ROOT\linqr_auto_file\shell\open\command]
@="\"C:\\Program Files (x86)\\LINQPad5\\lprun.exe\" \"%1\" %*"
[HKEY_CLASSES_ROOT\.linqr]
@="linqr_auto_file"
Ben gerçek bir idam edilebilirim!
Her seferinde uzantıyı yazmak zorunda kalmasaydık, tuş vuruşlarını kaydetmek açısından iyi olurdu. EXE’ler bu muameleyi görüyor, neden çalıştırılabilir komut dosyalarımız olmasın? Tek yapmanız gereken değişiklik yapmak PATHEXT
Uzantımızı içerecek ortam değişkeni. Bu talimatlar Windows 7 içindir, ancak diğer sürümlerde de benzer adımlar olacaktır (tamamen aynı değilse):
- Başlat Menüsünde “Bilgisayar”a sağ tıklayın ve “Özellikler”i seçin
- Gelişmiş Sistem Ayarları iletişim kutusunu açın
- “Ortam Değişkenleri” düğmesine tıklayın.
- İki bölüm vardır: biri kullanıcı değişkenleri için, biri sistem için. Yapmak Olumsuz için bir kullanıcı değişkeni ekleyin
PATHEXT
aksi takdirde mevcut uzantılarınızın yerini alacaktır (istemediğiniz .EXE dosyalarını yürütme yeteneğinizin ortadan kalkması da dahil). - Şuna ekle:
PATHEXT
sistem ortamı değişkeni uzantısı.LINQR
(Gerekirse noktalı virgülle ayrılır). - Terminalinizi yeniden başlatın ve çalıştırın
echo %PATHEXT%
linqr dahil uzantıların listesini görüntülemelidir. - Deneyin!
$ myscript hello world
Arguments: hello, world