J'ai une commande complexe dans ma fenêtre de terminal que je voudrais éditer davantage e. g.
echo "This is a complex command I want to edit in an editor"
Comment puis-je diriger cette ligne de code - pas la sortie mais le code réel - vers par exemple. Gedit pour une édition ultérieure? Quelque chose dans le sens de cette solution, juste pour un éditeur basé sur une interface graphique: http://www.commandlinefu.com/commands/view/1446/rapidly-invoke-an-editor-to- écrire un long-complexe-ou-tricky-commande
Veuillez noter que je recherche spécifiquement un moyen de modifier un éditeur externe.
bash
, zsh
et ksh
(y compris ses dérivés) ont cette commande intégrée très soignée fc
, qui ouvre un éditeur pour modifier votre commande précédente. Si la variable FCEDIT
n'est pas définie, elle appellera par défaut l'éditeur défini dans EDITOR
; si la variable EDITOR
n'est pas définie, elle sera appelée par défaut nano
.
Ce que vous pouvez faire est de définir FCEDIT=/usr/bin/gedit
. Maintenant, il y a le truc: vous exécutez une longue commande, vous décidez que vous souhaitez la modifier, alors immédiatement après l'appel, appelez fc
. Cela fera apparaître la fenêtre gedit
avec votre commande, prête à être modifiée. Une fois que vous avez terminé, enregistrez et quittez comme d'habitude.
Le désavantage ? Il laissera une traînée de messages GTK inutiles dans le terminal. Personnellement, j'utilise vim
ou nano
éditeurs de ligne de commande plutôt que gedit - ceux-ci ne laissent aucune trace. En outre, ils peuvent être utilisés dans TTY
et pas seulement dans un environnement graphique. Je vous suggère fortement de passer à nano
car c'est l'un des éditeurs de texte en ligne de commande les plus simples.
note supplémentaire dans bash
, vous pouvez faire de même avec la ligne de commande que vous êtes en train d’éditer avec ctrl+X+E ou ctrl+X - ctrl+E; vous pouvez avoir le même comportement dans zsh
en ajoutant à votre .zshrc
autoload -z edit-command-line
zle -N edit-command-line
bindkey '^XE' edit-command-line # binds CTRL+X+E
bindkey "^X^E" edit-command-line # binds CTRL+X - CTRL+E
Utilisez gedit -
. De cette façon, il lira depuis stdin, vous pourrez donc utiliser
echo 'echo "complex command"'|gedit -
ou simplement
gedit - <<< 'echo "complex command"'
De cette façon, vous n'aurez pas besoin de créer un fichier tmp séparé.
Avec cette commande, vous pouvez obtenir ceci: echo "This is a complex command" > tempfile | gedit tempfile
.
Edit:
Si je comprends bien, vous voulez quelque chose comme ceci: echo echo "This is a complex command" > tempfile | gedit tempfile
. Par exemple, echo ls -d > tempfile | gedit tempfile
ouvrira un fichier gedit avec le texte suivant: "ls -d".
Cela dit, je déconseillerais de modifier les commandes sur Gedit. Le terminal Linux est extrêmement puissant (nous avons un onglet complet).