Comment puis-je charger le contenu d'un fichier dans le presse-papiers?

81

J'ai des fichiers dans lesquels j'ai besoin de copier leur contenu dans un autre fichier ou dans une application et plutôt que de l'ouvrir, sélectionner tout le texte puis copier et coller. J'aimerais savoir si je peux effectivement catinsérer le contenu du fichier dans le Presse-papiers. Est-ce possible?

Un programme Windows conviendrait, mais une solution fonctionnant sous Linux serait également utile. Je n'utilise pas de Mac mais cela pourrait être utile à d'autres. Points bonus si cela peut être fait en ligne de commande.

Jonathon Watney
la source
1
Aha, je savais que cela avait déjà été demandé à Windows: "Comment diriger le texte de la ligne de commande vers le Presse-papiers" sur superuser.com/questions/97762/… Peut-être laisser cela ouvert pour Linux alors?
Arjan
1
Banlieue. On dirait que je peux utiliser clip.exe pour cela. Voudrais toujours une version non-en ligne de commande cependant. Peut-être via le menu contextuel de Windows Explorer?
Jonathon Watney

Réponses:

62

Puisque vous n'avez pas posé de questions sur les Mac: cat file | pbcopy(et même pbpaste) pour ceux-là.

Arjan
la source
Zut. Je n'utilise pas de Mac. Restera pour référence future si. ;)
Jonathon Watney
ça marche aussi sur Mac;)
HMagdy
51

xclip (probablement disponible dans les dépôts de votre système Linux) fonctionnera pour tout système X11, y compris la plupart des versions de Linux, ou même X fonctionnant sous Windows ou Mac OSX.

Exemple d'utilisation: xclip -sel clip < ~/.ssh/id_rsa.pub

Justin Smith
la source
23
Exemple d'utilisation:xclip -sel clip < ~/.ssh/id_rsa.pub
wim
13

Sous Linux et d’autres systèmes possibles qui prennent en charge xclip:

xclip -i -selection c file_to_copy_to_clipboard.txt

J'ai vu @JustinSmith également mentionné, xclipmais il manquait un exemple. J'ai donc dû le rechercher moi-même.

Un autre utile: coller votre presse-papiers dans un fichier.

xclip -o -selection c > file_to_paste_to.txt

La source

Sam Stoelinga
la source
2

Utilisez la commande "type" en tant qu'équivalent de "cat" dans Windows pour diriger le contenu des fichiers au format texte dans stdout (sortie standard), car il s'agit de l'émulateur de terminal / invite que vous utilisez (CMD dans Windows). Donc, vous pouvez combiner les commandes dans quelque chose comme ceci:

type myFile.txt > clip 

maintenant le contenu de myFile.txt est transféré dans le tampon clipBoard (je pense que c'est juste un tampon puisqu'il ne s'agit pas de linux). C'est aussi une valeur globale, donc une valeur est détenue à la fois par l'ensemble du système d'exploitation. Donc, c'est pour la fonctionnalité "copier", maintenant pour le "coller":

  • Soit vous voulez ajouter à un fichier existant les valeurs du CLIP comme d'habitude:

    tapez clip >> target.txt (ou votre fichier cible - ajoutera des données sans supprimer celles existantes dans ce fichier cible)

  • Ou, vous voulez ajouter / créer un nouveau fichier avec les valeurs du CLIP comme:

    type clip> target.txt (ou votre fichier cible - ajoutera des données ou OVERWRITE signifie la suppression de l'existant dans ce fichier cible)

Hichem Al Abbessi
la source
1

Utilisez ce programme f2clip. Exécutez-le à partir de la ligne de commande. Il copie le contenu du fichier dans le presse-papier. Je l'utilise pour copier des fichiers texte dans un navigateur Web pour un traitement ultérieur. Téléchargez-le à partir de http://smrz.xf.cz/f2clip.exe ou écrivez le vôtre à partir de cette source (c'est moche):

 program f2clip;

 {$APPTYPE CONSOLE}

 uses
SysUtils,
clipbrd;

var i,r:integer;
    s:string;
 f:file;
 buf:array[0..1024*1024-1] of byte;

 data:string;
 d:pointer;
 begin
 try

 { TODO -oUser -cConsole Main : Insert code here }
    if (paramcount=0) then begin
    writeln('parameters: f2clip filename.txt');
end else begin
    write('parameter count: ');
  writeln(paramcount);  
    for i:=1 to paramcount do begin
    s:=paramstr(i);
    writeln('file: ',s);

    assignfile(f,s);
    reset(f,1);
    BlockRead(f,buf,1024*1024,r);
    writeln('size: ',r);
    buf[r]:=0;

    d:=@(buf[0]);
    data:=PAnsiChar(d);
Clipboard.AsText := data;
    close(f);
  end;

  end;

 except
   on E:Exception do
     Writeln(E.Classname, ': ', E.Message);
 end;
end.

Pardon.

JanSmrz
la source
1
+1 J'apprécie cet effort, même si je pense que xclip est une meilleure solution.
0xc0de