Bonjour,
J'ai fait un fichier avec une liste de commandes utiles à utiliser dans une console.
Parfois certaines lignes sont longues et les copier à la main n'est pas envisageable.
Je me suis alors mis à chercher d'une commande qui pourrait copier la ligne qui m'intéresse dans le presse papier pour la recoller dans le prompt afin de l'éxécuter. Mais à priori la notion de presse papier va de paire avec X. Je peux copier dans vim, mais pas coller en dehors de vim.
Pour ça je cherche une alternative, c'est à dire, un moyen de copier la ligne qui m'intéresse (je l'extrais et l'affiche avec grep par ex. ou sed, ou cat (ou awk ou peu importe), mais ça ne fait jamais que l'afficher. Je cherche à envoyer la commande dans un pipe ou ailleurs (dans une variable ?) afin de pouvoir l'éxécuter dans la foulée. Bien sûr toutes mes commandes vont passées en alias, et ce sera facile de les éxécuter et le problèmene se posera plus.
Mais par simple curiosité, et parce que ça peut servir ailleurs à d'autre moments, j'aimerais savoir comme éxécuter ces commandes directement après les avoir extraites/affichées.
Je vous remercie par avance de votre aide. :)
# simple :)
Posté par LaBienPensanceMaTuer . Évalué à 3. Dernière modification le 30 mars 2019 à 11:08.
Tu utilises $().
Exemple:
[^] # Re: simple :)
Posté par gro.frxunil . Évalué à 1.
Bonjour et merci pour ton aide. :)
J'arrive pas à comprendre comment faire, alors je te propose un cas concret :
Dans mon fichiers (qui s'appelle "commandes") avec plein de commandes dedans, j'ai par exemple celle-ci, qui sert à afficher une arboresence des dossiers :
Je l'extrais du fichier avec grep :ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
Sauf que je ne sais pas quoi faire pour l'éxécuter directement, à la place de juste afficher cette ligne. Parce que je suis en console TTY et j'ai pas accès à la souris pour copier/coller cette ligne afin de l'éxécuter.grep "sed -e" commandes
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
[^] # Re: simple :)
Posté par Pnchbllz . Évalué à 3.
Salut,
tu peux tout simplement piper le résultat de ton grep dans sh:
grep "sed -e" commandes | sh
[^] # Re: simple :)
Posté par gUI (Mastodon) . Évalué à 2. Dernière modification le 30 mars 2019 à 08:26.
$()
exécute la sortie de la commande qu'il y a dans les parenthèses.Exemple :
ls
=> toto tata
(j'ai deux fichiers, toto et tata)
$(ls)
=> toto : command not found
(il a tenté d'exécuter
toto tata
, qui est donc le résultat de la commande ls, comme si toto était une commande avec comme paramètre tata)Autre exemple plus proche de ce que tu cherches à faire :
echo ls
=> ls
$(echo ls)
=> toto tata
Donc il te conseille de faire un
$(sed blablabla)
: la commandesed
affichera des commandes, et donc elles seront exécutéesSinon le
| sh
conseillé dans un autre commentaire marchera tout autant.En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: simple :)
Posté par David Marec . Évalué à 1. Dernière modification le 30 mars 2019 à 09:22.
Comme l'explique Gérald, un shell va exécuter ce qui se trouve entre entre les
$( … )
, ou sous son autre forme, entre des apostrophes.Par contre, si sous un terminal le presse-papier n'existe pas stricto-sensu, le copier-coller existe, lui.
Il faut sélectionner un texte avec la souris et le coller en appuyant sur le bouton droit (ou milieu, ou les deux boutons selon les OS) voire avec la séquence
ctrl-insert
.Pour que cela fonctionne sous vim, il faut configurer la souris en mode visual:
:set mouse=v
[^] # Re: simple :)
Posté par deuzene (site web personnel) . Évalué à 4. Dernière modification le 30 mars 2019 à 12:14.
Ça ne serait pas plus simple d'utiliser des alias (ou des fonctions) ?
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »
# Problème résolu. :)
Posté par gro.frxunil . Évalué à 2.
Bonjour, et merci à tous pour vos commentaires. :)
@Pnchbllz :
Cette commande marche parfaitement, elle fait le job !
@gUI et @David Marec :
J'ai testé les commandes proposées (et merci pour l'explication du post de Gérald) mais à priori elles ne fonctionnent pas à tous les coups. Pour cette raison je vais privilégier | sh ou | bash.
Exemples :
Par contre pour d'autres commandes plus simples ça fonctionne bien. Néanmoins je me servirais sûrement de cette forme dans un script.
@deuzene
Merci pour l'idée de l'alias, mais j'ai déjà évoqué son utilisation dans mon premier post, ce n'est pas ce que je cherchais. :)
Bonne soirée les linuxiens.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.