Repository 32bit  Forum
Repository 64bit  Wiki

bash_completion

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

bash_completion

Messaggioda danix » dom dic 06, 2009 19:31

Ciao a tutti,
qualcuno ha idea di come si faccia ad aggiungere una funzione di autocompletamento per le opzioni di slackpkg alla bash completion?? So che basta mettere lo script in /etc/bash_completion.d, ma non ho idea di come fare lo script... :(

Sarebbe fantastico se funzionasse come l'autocompletamento di rmmod, che ti lista automaticamente i moduli caricati, in questo modo se uno scrive:
slackpkg upgrade [TAB]
gli esce la lista dei pacchetti installati...

Ovviamente deve completare anche le opzioni tipo "upgrade", "install", ecc...

Avete idea di come si faccia??
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: bash_completion

Messaggioda ildiama » lun dic 07, 2009 10:34

Allora, per la prima parte dovrebbe essere più o meno così

Codice: Seleziona tutto
# slackpkg completion

_slackpkg()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="update check-updates install upgrade reinstall remove clean-system upgrade-all install--new blacklist download info search new-config"

    if [[ ${cur} == * ]] ; then
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
        return 0
    fi
}
complete -F _slackpkg slackpkg

Mi sa che non ho aggiornato questa versione all'ultima slackpkg perché dalla 13 in poi l'autocompletion non mi funziona più e non ho ancora trovato il tempo per capire perché.
Per completare con la lista dei pacchetti installati dovresti scriverne prima uno analogo che cerca le opts in /var/log/packages. Pensavo di fare cosa gradita con lo script veloce, adesso non ritrovo più la guida che avevo seguito. Ma penso che con una semplice ricerca su google la trovi da solo. Vediamo chi fa prima :D
Avatar utente
ildiama
Linux 2.6
Linux 2.6
 
Messaggi: 536
Iscritto il: mar dic 27, 2005 16:49
Località: Senigallia
Slackware: mine
Kernel: 2.6.alto..
Desktop: KDE4

Re: bash_completion

Messaggioda danix » mar dic 08, 2009 20:22

ma non basta dare ad opts il valore $(ls /var/log/packages) ??
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: bash_completion

Messaggioda ildiama » mer dic 09, 2009 10:10

danix ha scritto:ma non basta dare ad opts il valore $(ls /var/log/packages) ??

Ad una nuova opts2, in modo da completare: "slackpkg" "opzione" "nome pacchetto". Sì, certo. Però se non aggiusti bene il controllo te lo completerà con ogni opzione. Ad esempio slackpkg search non serve per cercare i pacchetti che già hai installato.
Comunque, se uno si accontenta, basta quello sì :)
Avatar utente
ildiama
Linux 2.6
Linux 2.6
 
Messaggi: 536
Iscritto il: mar dic 27, 2005 16:49
Località: Senigallia
Slackware: mine
Kernel: 2.6.alto..
Desktop: KDE4


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti