Утилита копирования и вставки буфера обмена из командной строки?

В Windows я использовал утилиты копирования и вставки буфера обмена командной строки ...

  • pclip.exe и gclip.exe

Это были порты UnixUtils Windows (но они обрабатывают только простой текст). Существовала пара других нативных утилит Windows, которые могли записывать / извлекать любой формат.

Я искал что-то похожее в Synaptic Package Manager, но ничего не могу найти.

Есть ли что-то, что я пропустил? ... или это доступно в скриптах Bash?

Тип утилиты, которую я хотел бы, сможет читать / писать через std-in / std-out или file-in / file-out и обрабатывать Unicode, Rich Text Format, изображения и т. Д. Форматы буфера обмена ...

Примечание: я не за менеджером буфера обмена.

127
задан 1 April 2017 в 05:52

14 ответов

Я использую xsel Install xsel , но я использую его только с обычным текстом и текстом Unicode.


xsel можно копировать и вставлять в три разных «буфера обмена». По умолчанию он использует первичный выбор X Window System , который в основном соответствует тому, что в данный момент находится в выборе. Система X Window также имеет вторичный выбор (который используется не часто) и выбор буфера обмена . Вероятно, вы ищете выбор буфера обмена , поскольку именно это среда рабочего стола (например, Gnome, KDE, XFCE) использует для своего буфера обмена. Чтобы использовать это с xsel:

xsel --clipboard < new-clipboard-contents.txt
xsel --clipboard > current-clipboard-contents.txt
0
ответ дан 1 April 2017 в 05:52

Недавно я наткнулся на инструменты xclip-copyfile, xclip-cutfile и xclip-pastefile (пакет , 113] ). Эти инструменты позволяют копировать / вырезать / вставлять целые файлы через командную строку.

Вы можете увидеть их справочную страницу здесь.

0
ответ дан 1 April 2017 в 05:52

Parcellite

Я использовал parcellite в течение многих лет в качестве менеджера буфера обмена. Он работает в области уведомлений и предлагает множество опций для управления основным выбором и стандартным буфером обмена freedesktop.org.

Tray Icon

Это был мой ответ на управление элементами буфера обмена.

Preferences

0
ответ дан 1 April 2017 в 05:52

xclip Install xclip может быть одним из ваших вариантов.

cat samples.sh | xclip -sel clip

Вы также можете установить его в файле .bashrc, используя псевдоним.

alias clipboard='xclip -sel clip'

Ключ для вставки двоичных данных в файл с xclip - указать, какие типы носителей у вас есть в буфере обмена. Для PNG вы можете:

xclip -selection clipboard -t image/png -o > "`date '+%Y-%m-%d_%T'`.png"

Итак, теперь на ~/Dropbox/.mybashrc;) вы можете добавить псевдоним (clipboard2photo), чтобы легко вставить его в файл изображения (возможно, однажды он будет у нас на Nautilus [ 118]).

0
ответ дан 1 April 2017 в 05:52

Pastie

Недавно был выпущен новый менеджер буфера обмена с поддержкой индикатора-апплета (хотя пока не в архиве). В дополнение к отслеживанию истории буфера обмена, он также будет захватывать и сохранять записи буфера обмена данных (файлы, папки и т. Д.), Что может быть полезно, если вы много манипулируете файлами через среду графического интерфейса / буфера обмена.

alt text

Вы можете добавить следующие PPA : ppa:hel-sheep/pastie

0
ответ дан 1 April 2017 в 05:52

Для этого вы можете использовать CopyQ . С веб-сайта:

Менеджер буфера обмена с расширенными функциями

  • CopyQ - менеджер буфера обмена с доступной для поиска и редактирования историей.
  • Поддерживает Linux и Windows.
  • Экспериментальная поддержка OS X 10.9 +.
  • Хранить текст, HTML, изображения и любой другой пользовательский формат.
  • Усовершенствованный интерфейс командной строки и сценарии.

Чтобы скопировать текстовый файл:

copyq action "cat /tmp/file.txt" "" && copyq select 0

Чтобы скопировать изображение (необходимо указать тип MIME):

copyq write image/png - < file.png && copyq select 0

Чтобы скопировать файл данных (вам нужно указать тип MIME):

copyq write application/pdf - < file.pdf && copyq select 0

Проверьте их вики для получения дополнительной документации и примеров использования .

Вы можете установить его либо с помощью ppa: noobslab / Indicators PPA, либо вручную загрузив предварительно упакованные .deb файлы последней стабильной версии из раздела Загрузки проекта .

0
ответ дан 1 April 2017 в 05:52

clipit (http://clipit.rspwn.com/) является менеджером по буферу обмена для gtk, который позволяет передавать текст по каналу от командной строки:

ls | clipit;

Править: В настоящее время, нет, ничто на официальном сайте ClipIt кроме Вас не может получить его от GitHub

10
ответ дан 1 April 2017 в 05:52

Как насчет настроек демона GPaste , апплета демона управления буфером обмена с интерфейсом DBus:

  • GPaste - это пакет управления буфером обмена для GNOME, написанный на Vala
  • Внешний вид настроек GPaste был обновлен, чтобы лучше соответствовать недавнему GNOME
  • . Демон теперь полностью равномерен (больше не нужно опрашивать, меньше энергопотребление)
  • GPasteClipboard теперь имеет сигнал «смена владельца», аналогичный GtkClipboard one
  • Новая настройка для установки максимального объема памяти, используемой данными в истории
  • Режим FIFO был отброшен (без проекта)
  • Очистка и модернизация кода
  • [ 1114] g_paste_history_add теперь передается полностью
  • g_paste_keybinder_add_keybinding теперь передается полностью

Установка:

Для установки в ] Ubuntu 13.10 , 13.04 , 12.10 или 12.04 , используйте следующие команды:

sudo add-apt-repository ppa:webupd8team/gnome3
sudo apt-get update
sudo apt-get install gnome-shell-extensions-gpaste

Или [ 1127] установить с gpaste по synaptic package manager ( а также gnome-shell-extensions-gpaste, если вы используете Gnome-Shell).

Другой вариант - установка через software-center.

enter image description here

0
ответ дан 1 April 2017 в 05:52

Я думаю, что следующий инструмент удовлетворит ваши требования:

Вырезать и вставлять файлы в терминал

0
ответ дан 1 April 2017 в 05:52

Если вы просто хотите скопировать текст в буфер обмена:

echo -n "some-text" | xclip -selection clipboard

0
ответ дан 1 April 2017 в 05:52

Я пытаюсь разработать лучшее решение, которое не является менеджером буфера обмена, которое можно найти на https://github.com/baitisj/copypasta . Он еще не совсем правильно обрабатывает RTF и HTML, а большие изображения создают проблемы, но вы можете свободно размещать и отправлять патчи.

0
ответ дан 1 April 2017 в 05:52

Для формата RTF я использую эту процедуру: я копирую текст в буфер обмена в приложении. Если я не уверен, что это rtf или что, я использую эту команду для проверки:

xclip -selection clipboard -o -t TARGETS

Когда она печатает что-то вроде этого:

TARGETS

text / RTF

text / richtext

Так что я не могу удержаться, чтобы громко воскликнуть: «Ну и дела, это гениально! Да благословит Бог Linux!» После этого выстрела следует просто очевидная вещь:

xclip  -selection clipboard -o -t text/rtf > mypreciousRTFcontent.rtf

Затем я обрабатываю все это в libreoffice и рассылаю всем своим друзьям как спам.

: -)

0
ответ дан 1 April 2017 в 05:52

Да, есть. Попробуйте tmux, который является более продвинутым, чем screen. Чтобы установить tmux, введите это в терминале:

sudo apt-get install tmux

Также попробуйте gpm. Команды gpm и tmux могут быть хорошей комбинацией ...

0
ответ дан 1 April 2017 в 05:52

Эй ya gnomers, это - то, что ya получают для использования CORBA-дерьма.
нет ничего лучше для yar программного обеспечения, чем использование инструментов, не установленных по умолчанию.

Имел ya, использовал надлежащую настольную среду, такую как KDE-плазма, у Вас не будет той проблемы, потому что ya мог просто использовать dbus из любого программного обеспечения ya как, например, консоль:

qdbus org.kde.klipper /klipper setClipboardContents "NiHao"
qdbus org.kde.klipper /klipper getClipboardContents

Лично, я на самом деле соединяюсь с dbus непосредственно с C#, что означает, что мне не нужен qdbus.
Это, вероятно, бесполезно для Вас, так как ya не имеют ограничителя, но я думал, что упомяну это так или иначе, только для раздражения ya из-за того, как это сделано правильно.

пз: не копируйте это код C#, Задача. Результат мог бы зайти в тупик.

private static async System.Threading.Tasks.Task<string> GetClipboardContentsAsync()
{
    string clipboardContents = null;

    Tmds.DBus.ObjectPath objectPath = new Tmds.DBus.ObjectPath("/klipper");
    string service = "org.kde.klipper";

    using (Tmds.DBus.Connection connection = new Tmds.DBus.Connection(Tmds.DBus.Address.Session))
    {
        await connection.ConnectAsync();

        IKlipper klipper = connection.CreateProxy<IKlipper>(service, objectPath);

        clipboardContents = await klipper.getClipboardContentsAsync();
    } // End Using connection 

    return clipboardContents;
}


private static string GetClipboardContents()
{
    return GetClipboardContentsAsync().Result;
}


private static async System.Threading.Tasks.Task SetClipboardContentsAsync(string text)
{
    Tmds.DBus.ObjectPath objectPath = new Tmds.DBus.ObjectPath("/klipper");
    string service = "org.kde.klipper";

    using (Tmds.DBus.Connection connection = new Tmds.DBus.Connection(Tmds.DBus.Address.Session))
    {
        await connection.ConnectAsync();

        IKlipper klipper = connection.CreateProxy<IKlipper>(service, objectPath);

        await klipper.setClipboardContentsAsync(text);
    } // End using connection 

}


private static void SetClipboardContents(string text)
{
    SetClipboardContentsAsync(text).Wait();
}
0
ответ дан 22 November 2019 в 22:55

Другие вопросы по тегам:

Похожие вопросы: