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------