Как я могу загрузить содержимое файла в буфер обмена?

81

У меня есть файлы, в которые мне нужно скопировать их содержимое в другой файл или в приложение, и вместо того, чтобы открывать его, выбрать весь текст, затем скопировать и вставить. Я хотел бы знать, смогу ли я эффективно catиспользовать содержимое файла в буфере обмена. Это возможно?

Программа для Windows подойдет, но то, что работает в Linux, тоже будет полезно. Я не использую Mac, но это может быть полезно для других. Бонусные баллы, если это можно сделать в командной строке.

Джонатон Уотни
источник
1
Ага, я знал, что это было задано ранее, для Windows: «Как передать текст из командной строки в буфер обмена» на superuser.com/questions/97762/… Может, тогда оставить это открытым для Linux?
Арджан
1
Пригород. Похоже, я могу использовать clip.exe для этого. Хотелось бы все же версию без командной строки. Может быть, через контекстное меню Windows Explorer?
Джонатон Уотни

Ответы:

62

Поскольку вы не спрашивали о Mac: cat file | pbcopy(и аналогично pbpaste) для них.

Арьян
источник
Штопать. Я не использую Mac. Сохраню для дальнейшего использования. ;)
Джонатон Уотни
он работает и в Mac;)
HMagdy
51

xclip (вероятно, доступен в репозиториях вашей системы Linux) будет работать для любой системы X11, включая большинство версий Linux, или даже X, работающий под Windows или Mac OSX.

Пример использования: xclip -sel clip < ~/.ssh/id_rsa.pub

Джастин смит
источник
23
Пример использования:xclip -sel clip < ~/.ssh/id_rsa.pub
Вим
13

В Linux и других возможных системах, которые поддерживают xclip:

xclip -i -selection c file_to_copy_to_clipboard.txt

Я видел, что @JustinSmith тоже упоминался, xclipно не показывал пример, поэтому мне пришлось поискать его самому.

Еще один полезный: вставьте буфер обмена в файл.

xclip -o -selection c > file_to_paste_to.txt

Источник

Сэм Стоилинга
источник
2

используйте команду «type» в качестве эквивалента «cat» в окнах, чтобы передать содержимое файлов в текстовом формате в стандартный вывод (стандартный вывод) для этого эмулятора терминала / приглашения, который вы используете (CMD в окнах). Таким образом, вы можете объединить команды в нечто вроде этого:

type myFile.txt > clip 

теперь содержимое myFile.txt передается в буфер clipBoard (я думаю, что это просто буфер, так как это не linux). Это также глобальное значение, поэтому одно значение хранится за раз во всей ОС. Так что это для функции «копировать», теперь для «вставить»:

  • Либо вы хотите добавить к существующему файлу значения CLIP, как обычно:

    введите clip >> target.txt (или ваш целевой файл - добавит данные, не удаляя существующий внутри этого целевого файла)

  • Или вы хотите добавить / создать новый файл со значениями CLIP, например:

    введите clip> target.txt (или ваш целевой файл - добавьте данные или OVERWRITE означает удаление существующего в этом целевом файле)

Хичем Аль Аббесси
источник
1

Используйте эту программу f2clip. Запустите его из командной строки. Копирует содержимое файла в буфер обмена. Я использую его для копирования текстовых файлов в веб-браузер для дальнейшей обработки. Загрузите его с http://smrz.xf.cz/f2clip.exe или напишите свой собственный из этого источника (это ужасно):

 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.

Сожалею.

JanSmrz
источник
1
+1. Я ценю эти усилия, хотя думаю, что xclip - лучшее решение.
0xc0de