Ouvrez l'application pour modifier des fichiers texte à partir de la ligne de commande


9

Lors de l'installation de TextWrangler dans OSX, vous obtenez également une editcommande qui vous permet d'ouvrir n'importe quel fichier texte à partir de la ligne de commande.

Est-il possible d'avoir une fonctionnalité similaire dans Ubuntu pour taper une commande sur le terminal pour ouvrir un fichier dans un éditeur de texte spécifique (disons Kate)?

Réponses:


11

Pour ouvrir un fichier à l'aide de kate, vous pouvez exécuter quelque chose comme:

kate filename

Cela pourrait afficher certains messages comme:

kate(3702)/kdecore (services) KMimeTypeFactory::parseMagic: Now parsing  "/usr/share/mime/magic"
kate(3702)/kdecore (services) KMimeTypeFactory::parseMagic: Now parsing  "/home/user/.local/share/mime/magic"
Bus::open: Can not get ibus-daemon's address. 
IBusInputContext::createInputContext: no connection to ibus-daemon

Pour supprimer ces messages, redirigez le flux de sortie d'erreur vers /dev/null:

kate filename 2>/dev/null

Si vous souhaitez continuer à utiliser le même terminal, ajoutez un &après la commande:

kate filename 2>/dev/null &

Si vous souhaitez exécuter edit filenamepour l'ouvrir, vous pouvez créer une fonction bash dans votre ~/.bashrcfichier. Ajoutez le code suivant à votre ~/.bashrcfichier:

edit() { kate "$@" 2>/dev/null & }

Cela se rapproche de ce que je cherchais. Merci d'avoir réellement exécuté les commandes et de voir les problèmes qui pourraient survenir avec les solutions les plus évidentes. Je suppose que je vais créer une nouvelle commande que je peux simplement appeler edit filenamepour exécuter le tout kate filename 2>/dev/null &.
Juan A. Navarro

1
@Juan: J'ai ajouté un exemple pour ce faire. Le $@est nécessaire au cas où vous auriez besoin de passer des options supplémentaires comme le numéro de ligne. Comme alternative, vous pouvez modifier cette fonction pour la prendre en charge edit filename linenumber.
Lekensteyn

Vous avez un bug dans votre réponse et je n'arrive pas à le modifier. Vous avez oublié les guillemets $@(devrait être "$@"), ce qui signifie que votre script échoue avec les noms de fichiers qui contiennent des espaces.
Scott Severance

18

Vous pouvez ouvrir (à ma connaissance) l'un des éditeurs comme celui-ci:

NAME_OF_EDITOR FILENAME

gedit filename(Ubuntu)
kate filename(Kubuntu)
bluefish filename
kwrite filename
libreoffice filename

Vous pouvez même ouvrir une page Web de la même manière
firefox filename.html
chrome filename.html
banshee filename.oggou .mp3

Vous pouvez voir la tendance ici ..


En fait, il devrait en être gedit filename &autrement, le terminal reste inutilisable. La même chose se produit avec katemais, même avec, &cela rend le terminal inutilisable car il commence à cracher des informations de débogage (ou autre) sur le terminal. Existe-t-il un moyen d'éviter le tout &à la fin? Comme je le fais avec editTextWrangler?
Juan A. Navarro

Peu importe , la réponse de Lekensteyn est (au moins plus proche) de ce que je cherchais.
Juan A. Navarro

1
Certes, vous pouvez y ajouter le & ou même ajouter 2> / dev / null pour ne pas générer d'erreur et d'autres éléments dans la console si vous souhaitez continuer à l'utiliser.
Luis Alvarado

3

Si vous préférez utiliser la commande editdans Ubuntu également parce que vous en avez l'habitude, vous pouvez également définir un alias pour votre éditeur préféré comme pour Kate:

alias edit='kate'

Pour rendre cet alias permanent, ajoutez simplement cette ligne à ~/.bash_aliases.


2

Si vous ne disposez d'aucun environnement graphique et que vous utilisez la console, vous pouvez toujours utiliser:

vim foo.txt
nano bar.txt
pico foo.html
emacs bar.xml
...

et ainsi de suite revient à la première réponse ..


1
"emacs -nw" ou "xemacs -nw" si vous voulez des emacs VT100 (x) même dans un environnement fenêtré.
barrycarter

1

Vous pouvez utiliser la commande CLI de l'éditeur souhaité pour ouvrir et modifier des fichiers, par exemple geditdans gnome ou katedans KDE.

Tapez simplement:

kate filename

ouvrir un fichier dans kate.


1

J'utilise parfois un terminal classique où mcedit est mon éditeur préféré, et j'aime souvent passer un numéro de ligne, pour corriger un programme / script.

Pour les appeler de manière uniforme, edit source.sh 123j'ai écrit ce script, que j'ai placé comme «modifier» dans le chemin:

#!/bin/bash
#   - edit a file using mcedit or gedit, depending on X11 or console invoking.
#   - jump to specified line, if any.

Xedit=/usr/bin/gedit

if [[ $TERM = "linux" ]]; then
    if [ $# -eq 1 ]; then
        mcedit $1
        else if [ $# -eq 2 ]; then
#           echo "edit invoked\t/usr/bin/mcedit +$2 $1" >> /tmp/edit.log
            /usr/bin/mcedit +$2 $1
            else if [ $# -eq 0 ]; then
                /usr/bin/mcedit
            fi
        fi
    fi
    else if [[ $TERM = "xterm" ]]; then
        # scheint nicht zu helfen
        # LANGUAGE=C
        export LC_ALL=C
        if [ $# -eq 1 ]; then
            $Xedit $1
            else if [ $# -eq 2 ]; then
#               echo "edit invoked\t/usr/bin/scite -open:$1 -goto:$2" >> /tmp/edit.log
                # $Xedit -open:$1 -goto:$2
                $Xedit +$2 $1 
                else if [ $# -eq 0 ]; then
                    $Xedit
                fi
            fi
        fi
    fi
fi

Utilisez voir les anciennes instructions de débogage de quand j'ai utilisé scite, pas gedit, comme éditeur graphique.

Quelque chose, qui ne fonctionne pas de cette façon, ouvre plusieurs fichiers comme celui-ci:

 edit *.html

s'il y a plus d'un fichier html, le modèle est étendu à plusieurs fichiers.

Les invocations valides sont:

 edit 
 edit foofile 
 edit foofile 123

depuis X ou terminal.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.