[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Lanciare emacs (Era: Re: Script per sapere se un processo è attivo)



On Thu, Apr 05, 2001 at 12:16:22AM +0200, FB scripsit:
> Prova con questo miniscript in fondo alla mail. 
> ---------------------------------
> script apriconemacs.bash
> ---------------------------------
> 
> #!/bin/bash
> #questo programma controlla se esiste un processo emacs
> #se si, usa emacsclient per aprire un file in esso
> #altrimenti lancia emacs abilitando la funzione di server
> #NOTE : 
> #  attivando emacs con server si lanciano due processi al prezzo di uno
> #  un buffer aperto csi' andrebbe chiuso con C-x #, ma usando --no-wait
> #  si puo' chiuderlo al solito modo
> #
> emacspid=`ps -u $USER |awk '$4=="emacs"{print $1}'`
> if [ $emacspid ]; then
>         emacsclient  --no-wait $1
> else
>         emacs -f server-start $1
> fi

Salve,
  per la serie perché far semplice quando si può far complicato... :)
(vabbé, il tipo che ha scritto la pagina man di emacsclient dice che
lui usa addirittura uno script perl...) In bash (e anche in altre
shell) || concatena due comandi in modo tale 
che il secondo è eseguito se e solo se il primo esce con un
errore. Quindi

#!/bin/bash
(emacsclient  -n +0 $1 2>/dev/null) || (emacs -f server-start $1)

fà cio che vuoi: prova a lanciare un emacsclient, se non ci riesce
perché emacs non c'è, lancia emacs e il server dentro di lui:)

Se vuoi fare il colmo della raffinatezza (IMHO), metti nello script
sopra i path completi:
\
#!/bin/bash
(/usr/bin/emacsclient  -n +0 $1 2>/dev/null) || (/usr/bin/emacs -f server-start $1)

lo piazzi in ~/bin che metti all'inizio del PATH e lo chiami emacs :) 

Cia'
--
Leo TheHobbit 
IRCnet #roma2
ICQ 56656060

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GED/CS d? s-:+>-: a C+++ U+++ L++(+++)>++++ P+++>+++++ E+(++) 
W++ N+ K? o? !w O? M V--- PS+++ PE-- Y+ GPG+ t++ 5? X- R+ tv+ 
b++++ D? DI? G e(++++)* h(+) r--(---) y--(+)>+++*
------END GEEK CODE BLOCK------





Reply to: