79

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

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

6 ответов6

62

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

48

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

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

33

В Linux вы можете использовать xsel для имитации pbcopy и pbpaste:

alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output'

Источник: Где Уолден?»Pbcopy и pbpaste для Linux

14

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

xclip -i -selection c file_to_copy_to_clipboard.txt

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

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

xclip -o -selection c > file_to_paste_to.txt

Источник

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.

Сожалею.

0

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

type myFile.txt > clip 

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .