Nomi amichevoli di completamento della tabulazione per avvio / interruzione


0

Ho molti script che vengono utilizzati per avviare e interrompere i servizi. È frustrante quando si utilizza il completamento della tabulazione che è necessario digitare:

 ./serviceScript.sh [sta|sto]

prima che ci siano sufficienti informazioni per completare la tabulazione per completare la parola start o stop.

Qualcuno ha un paio di parole diverse che potrebbero essere sensibilmente utilizzate al posto di start stop o, in alternativa, una soluzione migliore al mio problema?

Risposte:


2

Se stai solo cercando di evitare di digitare ogni volta molto, puoi usare Ctrl + R per vedere la cronologia dei comandi dopo averli digitati una volta.

Dopo aver premuto Ctrl + R puoi iniziare a scrivere una volta che inizi a scrivere non appena inizi a scrivere la cronologia di bash per completare i comandi dalla cronologia. Quindi, se dopo aver premuto Ctrl + R hai appena scritto st e l'ultimo comando eseguito è stato il comando con fermare argomento che apparirà.

Se si desidera uno più vecchio, ad es., Il comando con inizio argomento, basta premere Ctrl + R per ottenere il comando di avvio completo.


1

Se le parole inizio e fermare sono troppo da digitare, perché non creare alias che eseguono l'uno o l'altro?

# (for bash)
alias myservicebegin='serviceScript.sh start'
alias myserviceend='serviceScript.sh stop'

Certamente se digitando è troppo impegnativo, puoi sempre creare icone / scorciatoie del desktop per le azioni desiderate, quindi devi solo fare clic ... Solo le opzioni successive potrebbero essere una scimmia di servizio o qualcosa del genere. (ha! servizio Monkey per i servizi ...)


1

Per Bash puoi usare la funzione di completamento di Bash. Installa il pacchetto bash_completion dalla tua distribuzione. Ci sono buone probabilità che abbiate già il completamento per gli script /etc/init.d. Altrimenti, puoi leggere come completarti da solo in rete. Eccone uno collegamento .

Un altro modo è utilizzare funzioni predefinite come queste:

if [[ ${EUID} == 0 ]] ; then # available only for root user
       # rc scripts managing
       rc() { /etc/init.d/$*; }
       complete -o filenames -W "$(cd /etc/init.d/ && echo *)" rc

       rc-start() { for arg in $*; do rc $arg start; done } 
       rc-restart() { for arg in $*; do rc $arg restart; done } 
       rc-stop() { for arg in $*; do rc $arg stop; done } 
       rc-status() { for arg in $*; do rc $arg status; done } 
fi

Qui puoi usare il rc comando per chiamare gli script init.d come: rc apache2 start. Questo si tradurrà in /etc/init.d/apache2 start. Il comando ha anche il completamento automatico per i file nel tuo init.d directory, cioè quando scrivi: rc apa[TAB] completerà automaticamente rc apache2.

Gli altri comandi brevi sono per comodità: rc-start apache2 chiamerà rc apache2 start e quindi /etc/init.d/apache2 start

Modificare: è possibile modificare il percorso /etc/init.d in /etc/rc.d se la propria distribuzione utilizza rc.d per i servizi.


-1: non affronta la domanda. OP sta cercando sinonimi per "start" e "stop" che non richiedono di digitare tre caratteri prima che il completamento della tablatura li distingua. In primo luogo, non sta cercando il modo in cui impostare il completamento delle schede.
Dave Sherohman

@DaveSherohman, per essere chiari: come ho detto nella risposta "Un altro modo è utilizzare funzioni predefinite come queste", significa che l'OP può denominare le funzioni con nomi diversi, ad esclusione delle parole [start | stop] ... ad es. rc-s (), rc-t () ...
0xAF

1

La prima cosa da pensare era inizio / fine, ma ./my_service begin non si sente abbastanza bene semanticamente.

Run / halt non vengono usati più spesso, quindi potrebbero essere più difficili da ricordare, ma ./my_service run e ./my_service halt sembra funzionare bene con i normali significati inglesi delle parole.

Ricordalo, se vuoi init essere in grado di gestire i tuoi servizi, il start e stop i comandi dovranno comunque essere supportati anche se inserisci altri comandi che sono più adatti al completamento delle schede.


0

Potresti provare qualcosa di hacky come questo:

a=(/etc/init.d/*(x:t))
function start stop restart reload {  /etc/init.d/$1 $0 }
for i (start stop restart reload) compctl -k a $i

Ti permetterà di digitare qualcosa come rest linguetta sma linguetta che si espanderà a restart smartmontools e chiama /etc/init.d/smartmontools restart.

Ma potrebbe esserci già una sorta di funzione di completamento nella distribuzione zsh per quel lavoro. Basta dare un'occhiata in giro functions/Completion/Unix/.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.