Komut satırı tamamlama - Command-line completion

Image
Bash'de komut satırı tamamlama örneği .
Image
Intellisense ile PowerShell'de komut satırı tamamlama örneği .

Komut satırı tamamlama (ayrıca sekme tamamlama ), programın kısmen yazılan komutları otomatik olarak doldurduğu komut satırı yorumlayıcılarının ortak bir özelliğidir .

Komut satırı yorumlayıcıları, bir Grafik Kullanıcı Arabiriminde (GUI) bir fareyi işaret edip tıklatmanın aksine, bir komut satırı arabirimi (CLI) kullanarak komut isteminde komutlar yazarak kullanıcının temel işletim sistemiyle etkileşime girmesine izin veren programlardır. Komut satırı tamamlama, kullanıcının bir komutun, programın veya dosya adının ilk birkaç karakterini yazmasına ve Tab ↹öğenin geri kalanını doldurmak için bir tamamlama tuşuna (normalde ) basmasına olanak tanır . Kullanıcı daha sonra basar Returnveya ↵ Enterkomutunu çalıştırın veya dosyayı açmak için.

Bu makaleye eşlik eden animasyonda gösterildiği gibi, komut satırı tamamlama birkaç yönden yararlıdır. Yaygın olarak erişilen komutlar, özellikle uzun adlara sahip olanlar, ulaşmak için daha az tuş vuruşu gerektirir. Uzun veya yazılması zor dosya adlarına sahip komutlar, ilk birkaç karakteri yazıp komutu veya dosya adını tamamlayan bir tamamlama tuşuna basarak girilebilir. Birden fazla olası tamamlama durumunda, bazı komut satırı yorumlayıcıları, özellikle Unix kabukları, bu birkaç karakterle başlayan tüm olası tamamlamaları listeler. Kullanıcı daha fazla karakter yazabilir Tab ↹ve yazılan karakterler hala belirsizse yeni, daraltılmış bir liste görmek için tekrar basabilir veya komutu/dosya adını bir boşlukla tamamlayabilir. Giriş belirsiz olduğunda, alternatif bir tamamlama biçimi tüm eşleşen sonuçlar arasında döner.

Tamamlanabilir öğeler, belirli yorumlayıcıya ve yapılandırmasına bağlı olarak komutları, bağımsız değişkenleri, dosya adlarını ve diğer varlıkları içerebilir. Komut satırı tamamlama genellikle yalnızca etkileşimli modda çalışır . Yani, komut dosyalarında veya toplu iş dosyalarında kısmen yazılan komutları tamamlamak için, tamamlama açık olsa bile çağrılamaz. Sekme tamamlama adı , komut satırı tamamlamanın genellikle sekme tuşuna basılarak çağrılması gerçeğinden gelir .

Tarih

Sekme tamamlama, bilgi işlem geçmişinde erken ortaya çıktı; ilk örneklerden biri SDS 940 için Berkeley Zaman Paylaşım Sisteminde ortaya çıktı ; burada yazılan bir dize belirsizse yorumlayıcı hiçbir şey yapmaz, ancak dize belirsiz değilse , kullanıcıdan herhangi bir komut almadan otomatik olarak tamamlardı. Bu özellik, çok sık yapılan yazım hatalarıyla iyi çalışmadı ve bu nedenle karışık bir nimet oldu. Bu özellik, önemli bir değişiklik yapan Tenex geliştiricileri tarafından taklit edildi : Tenex , kullanıcı tarafından kaçış anahtarına (dolayısıyla adı) basılmadığı sürece yorumlayıcının otomatik tamamlamaya çalışmadığı "kaçış tanıma" kullandı . Etki alanı ayrıca, yalnızca Berkeley sistemindeki program adlarından hem program adlarına hem de Tenex'teki dosyalara genişletildi. Tenex'in soyundan gelen TOPS-20 , komut satırının tamamlanmasını komut yorumlayıcısından COMND JSYS sistem çağrısı aracılığıyla işletim sistemine taşıyarak, diğer kullanıcı uygulamalarının kullanımına açtı. Oradan Unix tarafından ödünç alındı.

Örnek

Intro-to-command-line-completion.html dosyasını Firefox ile açmak için şunu yazın:

 firefox introduction-to-command-line-completion.html

Bu yazmak için uzun bir komuttur. Bunun yerine komut satırı tamamlamayı kullanabiliriz.

tamamlama istemi

Aşağıdaki örnek, Bash'de komut satırı tamamlamanın nasıl çalıştığını gösterir . Diğer komut satırı kabukları biraz farklı performans gösterebilir.

İlk önce komutumuzun ilk üç harfini yazıyoruz:

 fir

Ardından basıyoruz Tab ↹ve sistemimizde "fir" ile başlayan tek komut "firefox" olduğu için şu şekilde tamamlanacak:

 firefox

Ardından dosya adını yazmaya başlıyoruz:

 firefox i

Ancak bu sefer input-to-command-line-completion.html geçerli dizinde "i" ile başlayan tek dosya değil. Dizin ayrıca input-to-bash.html ve Introduction-to-firefox.html dosyalarını içerir . Sistem bu dosya adlarından hangisini yazmak istediğimize karar veremez, ancak dosyanın "introduction-to-" ile başlaması gerektiğini bilir, bu nedenle komut şu şekilde tamamlanacaktır:

 firefox introduction-to-

Şimdi "c" yazıyoruz:

 firefox introduction-to-c

Bastıktan sonra Tab ↹tüm dosya adına tamamlanacaktır:

 firefox introduction-to-command-line-completion.html

Kısaca şunu yazdık:

 firTab ↹iTab ↹cTab ↹

Bu, komut satırı tamamlamayı kullanmadan yazmamız gereken 52 tuş vuruşundan önemli ölçüde daha az olan sekiz tuş vuruşudur.

Dönen tamamlama

Aşağıdaki örnek, Windows'un CMD'sinin kullandığı gibi, komut satırı tamamlamanın dönen tamamlama ile nasıl çalıştığını gösterir .

Aşağıdakileri elde edene kadar tamamlamayı istemekle aynı prosedürü izliyoruz:

 firefox i

Sonuçla bir Tab ↹kez basarız:

 firefox introduction-to-bash.html

Biz basın Tab ↹, elde yine:

 firefox introduction-to-command-line-completion.html

Kısaca şunu yazdık:

 firTab ↹iTab ↹Tab ↹

Bu, yalnızca yedi tuş vuruşudur ve komut istemi stili tamamlama ile karşılaştırılabilir. Bu, tercümanın hangi olasılıkları döndüreceğini bilirsek en iyi sonucu verir.

Farklı komut satırı arayüzlerinde tamamlama

  • Bash (çoğu Linux dağıtımında varsayılan kabuk ) ve diğerleri arasında ksh dahil olmak üzere Unix kabukları , uzun süredir devam eden gelişmiş ve özelleştirilebilir tamamlama yetenekleri geleneğine sahiptir.
    • Bash programlanabilir tamamlama completeve compgenkomutlar, 2000 yılında 2.04'ün beta sürümünden beri mevcuttur ve en azından Yol Adı ve dosya adı tamamlama sunar.
    • KornShell kullanıcıları için dosya adının tamamlanması EDITOR değişkeninin değerine bağlıdır. EDİTÖR vi olarak ayarlanmışsa, adın bir kısmını ve ardından Escape, yazarsınız \. EDITOR, Emacs olarak ayarlanmışsa , adın bir kısmını ve ardından Escape, yazarsınız Escape.
    • Z kabuğu (zsh) kullanıcı otomatik olarak bir kaplamaya sahip bulunmakta de uygun olarak, bilinen tüm anahtarların tanımlara kabuk priming ile gerçekleştirilir kabuğun kendisine, ilişkisiz çeşitli komutların parametrelerini tamamlamak için izin tamamen programlanabilir tamamlanması için destek öncülük parametre türleri. Bu, kullanıcının örneğin tar xzf Tab ↹ }}
    yazmasına ve kabuğun, girdi parametreleriyle uyumlu olmayan dosyaları atlayarak, gerçek dosya sisteminden yalnızca tarlı gzip arşivlerini tamamlamasını sağlar. Modern bir zsh kurulumu, beş yüzün üzerinde komut için tamamlama tanımlarıyla birlikte gelir.
  • Tcsh , kullanılarak etkinleştirilen varsayılan dosya, komut ve değişken adı tamamlama sunar Tab ↹. 'complete' yerleşik komutu, tamamen programlanabilir tamamlama sağlar. Kaynak kodu, tamamlama sözdiziminin birçok örneğini içeren bir 'complete.tcsh' dosyasıyla birlikte gelir.
  • Microsoft'un nesne yönelimli programlamaya ve Microsoft .NET çerçevesine dayanan genişletilebilir komut kabuğu olan Windows PowerShell , geleneksel Unix kabuklarına benzer güçlü ve özelleştirilebilir tamamlama yetenekleri sağlar.
  • Cmd.exe komut işlemcisi Windows NT temel tamamlama sistemleri destekler tabanlı. Yalnızca eşleşen dizin adları için ayrı bir anahtar bağlama kullanmak mümkündür.
  • cmd.exe /F:ON , dosya ve dizin adı tamamlama karakterlerini etkinleştirir (varsayılan olarak ^F ve ^D). cmd.exe / kullan ? daha fazla bilgi için.
  • TweakUI , dosya adı ve dizin adı tamamlama için kullanılan anahtarları yapılandırmak için kullanılabilir.
  • MS-DOS komut işlemcisi COMMAND.COM komut satırı tamamlama yoktu: Sekme tuşuna basarak sadece öne çıkaracağı imleci . Ancak, 4DOS , COMMAND.COM'un FreeDOS sürümü veya Gelişmiş DOSKEY.COM gibi MS-DOS için çeşitli geliştirilmiş kabuklar, Unix stili sekme tamamlama özelliğine sahiptir.
  • Far Manager , dosya yönetimi işlevlerinin yanı sıra Windows için komut geçmişi ve satır tamamlama sağlar.
  • Ayrıca bakınız

    Referanslar

    Dış bağlantılar

    Unix kabukları

    Windows komut yorumlayıcıları

    (Her makaledeki "Aşağıdakilere Uygulanır" bölümünü kontrol ettiğinizden emin olun)