Question

Question rapide. J'adore emacs. Je déteste taper des choses, donc je tiens à utiliser e d'invoquer emacs.

Auparavant, j'avais mon .bash_profile (OS X) configuré comme: alias e="emacs .". Cependant, j'étais fatigué d'avoir toujours à taper emacs {fichier} quand je voulais éditer un fichier.

J'ai donc essayé de fouetter tout ça, de quelques googler, mais bash se plaint du []:

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

Je veux l'utiliser pour faire:. e something.c ou, juste e

Était-ce utile?

La solution

#!/bin/bash                       

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

Autres conseils

Essayez

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

Je pense que bash est très particulière sur les espaces. Je suis même surpris que vous êtes autorisé à omettre un espace entre le nom de la fonction et (). (Aussi, en utilisant $ @ devrait ouvrir tous les fichiers que vous passez.)

ETA: meilleur contrôle par rapport au nombre d'arguments, en cas de e "" foo.txt ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top