Domanda

Domanda veloce. Amo emacs. Odio digitando roba, però, così mi piace usare e per invocare emacs.

In precedenza ho avuto il mio .bash_profile (OS X) configurato come: alias e="emacs .". Tuttavia, ero stanco di dover digitare ancora emacs {file} quando volevo solo modificare un file.

Così ho provato a montare questo in su, da un po 'googling, ma bash si lamenta il []:

###smart emacs, open file, or if none, dir 
e()
{
    if [$1]; then
        emacs $1
    else
        emacs .
    fi
}

Voglio usare questo per fare:. e something.c o, semplicemente e

È stato utile?

Soluzione

#!/bin/bash                       

###smart emacs, open file, or if none, dir
e()
{
    if [[ -z "$1" ]]; then # if "$1" is empty
        emacs .
    else
        emacs "$1"
    fi
}

Altri suggerimenti

Prova

if [ $# -ge 1 ]; then
  emacs "$@"

Credo che bash è molto particolare sugli spazi. Sono anche sorpreso che si è permesso di omettere uno spazio tra il nome della funzione e (). (Inoltre, utilizzando $ @ dovrebbe aprire tutti i file si passa.)

ETA: migliore controllo contro numero di argomenti, in caso di e "" foo.txt ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top