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.