Je colle des noms de fichiers / etc dans Terminal tout le temps, et parfois le contenu du presse-papiers n'est pas ce que j'attends.
Souvent, le résultat est plusieurs centaines de lignes de texte (par exemple, le code source) collées dans l'invite de commande, déclenchant que dieu ne sait que la méchanceté.
Existe-t-il un moyen d'empêcher bash d'exécuter aveuglément tout ce que je colle? Je souhaite qu'il collerait simplement le texte et me laisse décider après si je veux l'exécuter.
Réponses:
En supposant que vous utilisez bash: si vous activez les raccourcis emacs avec,
set -o emacs
vous pouvez également utiliser Emacs pour modifier la ligne de commande:la source
Ctrl
au lieu deCmd
. En outre, sans le faire,set -o emacs
il semble utiliser$EDITOR
. Merci! c'est parfait.La solution la plus simple est probablement d'utiliser un éditeur de texte comme tampon où vous pouvez revérifier le contenu, puis copier de l'éditeur de texte vers Terminal. Si vous utilisez TextEdit pour cela, vous voudrez probablement vous assurer qu'il est en mode texte brut ( menu Format → Créer du texte brut; ⇧⌘T) pour éviter des problèmes tels que les liens collés en tant que liens, pas les URL.
L'autre chose à noter est que Bash tentera d'exécuter tout ce qui précède un caractère de nouvelle ligne, donc si vous copiez un bloc de texte, vous voudrez peut-être vous assurer que votre sélection s'arrête après le dernier caractère, plutôt que d'inclure la fin du caractère ligne.
Tu veux ça:
Pas ça:
Bien sûr, si vous copiez des éléments avec des sauts de ligne dans le texte ( c'est -à- dire plusieurs paragraphes), vous devrez modifier manuellement la sélection.
la source
Je comprends ça aussi!
Ma solution est de coller à l' aide Launchbar gestionnaire de presse - papiers », avec le raccourci clavier
Cmd+\
. Cela fait apparaître une liste de coupures récentes, ce qui me permet de prévisualiser le résultat avant de le coller: si je ne vois pas le contenu que j'attends, je clique sur Échap avant de publier Cmd. Je peux également utiliser une touche fléchée pour «saisir» un extrait de texte, ce qui me permet de voir le contenu ligne par ligne.Je crois que la plupart des lanceurs le font - Alfred (addon powerpack) & Quicksilver (gratuit), par exemple.
la source
Vous voudrez peut-être examiner un gestionnaire de presse-papiers. J'utilise un logiciel gratuit et léger appelé Jumpcut . Cela me permet de conserver plusieurs presse-papiers et de voir ce qui y est stocké avant de coller le contenu, le tout depuis le clavier.
Il existe de nombreux gestionnaires de presse-papiers, donc si Jumpcut ne fait pas flotter votre bateau, peut-être qu'un autre répondra mieux à vos besoins
la source
Utilisez de la pâte entre crochets .
La pâte entre crochets est une fonctionnalité où le terminal indique au shell que vous avez collé quelque chose au lieu de simplement le taper, de sorte que le shell ne peut pas exécuter la commande tant que vous n'appuyez pas sur Entrée.
Terminal.app prend en charge cela, mais pas tous les terminaux.
De même, tous les obus ne le supportent pas non plus. La version de bash fournie avec OS X ne prend pas en charge le collage entre crochets (au moment de la rédaction, c'est la v3.2.57).
Cependant, zsh prend en charge la pâte entre crochets:
Zsh est principalement compatible avec bash (même les scripts fonctionneront probablement, à moins que vous n'utilisiez une sorte de fonctionnalité vraiment obscure), et mieux à bien des égards - par exemple, il a même une édition de commande sur plusieurs lignes!
la source
Vous pouvez mettre ce petit script Bash quelque part dans votre
PATH
:Si je mets ce contenu
/usr/local/pbexecute
par exemple et le rend exécutable, je pourrais exécuter en toute sécurité àpbexecute
partir de la ligne de commande, ce qui demanderait ma confirmation avant d'exécuter le contenu du presse-papiers.Une autre approche consiste à lancer un éditeur de texte avec le contenu du presse-papiers à partir du shell et à exécuter automatiquement le contenu modifié à la sortie. Par exemple:
la source
Sous
Preferences -> Profiles -> Basic -> Advanced
, cochez la case "Coller les sauts de ligne au retour du chariot". (De base est le nom d'un profil. Si vous utilisez un autre profil, vous devez choisir celui-ci à la place.)Dans certains shells (zsh et bash fonctionnent pour moi, tcsh ne fonctionne pas), cela vous permettra d'éditer ou d'interrompre (via Ctrl-C) ce qui est collé avant qu'une partie ne soit passée au shell.
Vous devrez peut-être créer une nouvelle fenêtre de terminal pour que la préférence commence à fonctionner.
J'utilise cette fonctionnalité tout le temps, non seulement pour coller et éditer des commandes complexes, mais aussi pour afficher du texte en colonnes et parfois pour sélectionner et copier des sous-rectangles en les faisant glisser avec la touche d'option.
la source