“Sekme tamamlandı” ile görüntülenen komutların listesi nasıl oluşturulur?


12

Bash komutlarını kullanırken Kullanılabilir komutları görüntülemek için çift sekme seçeneğini seviyorum. Bazı komutların diğerlerinden daha olası eşleşmeleri vardır:

Sekme tamamlamanın ekran görüntüsü http://img13.imageshack.us/img13/5541/picturemhy.jpg

Çift tırnağın çıkışını bir yere borulamak için bir yol var mı grep? İlgili bir yazı buldum , ancak bunu grep'e bağlamak için nasıl uygulayacağından hala emin değilim.


grepNormal ifadeye gireceğinizi tam olarak nasıl hayal ediyorsunuz ? (y or n or g[rep])? Kötümser gelmekten nefret ediyorum, ama bunun bash koduna eklenmeden yapılabileceğinden şüpheliyim.
Kevin

Yanıtlar:


21

Komutlar için compgen -cşunları kullanın :

$ compgen -c bas
basename
base64
bashbug
bash
basename
base64
bashbug

Bu çıkış basitçe geçebilirsiniz grep.


+1 Komut için ... Bir sonraki ilginç kısım bunun için bir klavye kısayolu nasıl yapılabilir.
rozcietrzewiacz

3

@ Salutis cevabı göre I adı verilen bir komut dosyası oluşturuldu compve saklanan ~/bin/compbu aramaları commands,' aliasesve builtins(isteğe bağlı bayrak, -cabbkz Bash erkek giriş isteğe bağlı ikinci bir parametre ile, ki, bu, boru halinde çıkış) grepve arama ikinci parametre.

Usage: comp string [keyword-for-grep]

Kod:

#!/bin/bash

if [ -z "$1" ]; then
    echo usage: comp string [keyword-for-grep]
    echo 
    exit
fi

if [ -z "$2" ]; then
    compgen -cab -- $1
    exit
fi

compgen -cab -- $1 | grep -i $2

Şahsen ben de komutta kabuk geçmişinden (ilgili bir şey history -d) son komut kaldırmak için bir yol bulmak ilginizi çekecek böylece bashtarih arama yaparken ben compgirişleri bulmak olmaz . Bunu da yapabileceğimi biliyorum HISTIGNOREama linux oldukça güçlü, bu yüzden komut dosyasından da yapmanın bir yolu olmalı - değil mi?


1
Elbette bunu ihtiyaçlarınıza göre ayarlayabilirsiniz, ancak başlamanız gerekir.
işaretleyin

-3

Aradığınızı neden bulamıyorsunuz?

Misal:

find / -name ec2* -executable -type f -perm -og+rx -print

Kullanım durumunuzu bilerek daha ayrıntılı bir komut örneği oluşturabilirim.


2
Başka bir deyişle, bash'ın tamamlanması ne olursa olsun yeniden uygulayabilirsiniz. Tabii, ama bu pratik değil ve sorunun konusu bu değil.
Gilles 'SO- kötü olmayı kes'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.