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.
Rispondi
Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

bash_completion

Messaggio da danix »

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??
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
ildiama
Linux 3.x
Linux 3.x
Messaggi: 536
Iscritto il: mar 27 dic 2005, 16:49
Slackware: mine
Kernel: 2.6.alto..
Desktop: KDE4
Località: Senigallia
Contatta:

Re: bash_completion

Messaggio da ildiama »

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
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Re: bash_completion

Messaggio da danix »

ma non basta dare ad opts il valore $(ls /var/log/packages) ??
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
ildiama
Linux 3.x
Linux 3.x
Messaggi: 536
Iscritto il: mar 27 dic 2005, 16:49
Slackware: mine
Kernel: 2.6.alto..
Desktop: KDE4
Località: Senigallia
Contatta:

Re: bash_completion

Messaggio da ildiama »

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ì :)

Rispondi