Утилита копирования и вставки буфера обмена из командной строки?
В Windows я использовал утилиты копирования и вставки буфера обмена из командной строки...
pclip.exe
а такжеgclip.exe
Это были порты UnixUtils для Windows (но они обрабатывали только простой текст). Существовала пара других собственных утилит Windows, которые могли писать / распаковывать любые форматы.
Я искал что-то похожее в Synaptic Package Manager, но ничего не могу найти.
Есть ли что-то, что я пропустил?... или это доступно в скриптах Bash?
Тип утилиты, которую я хотел бы, сможет читать / писать через std-in / std-out или file-in / file-out и обрабатывать Unicode, Rich Text Format, изображения и т. Д. Форматы буфера обмена...
NB: я не за менеджером буфера обмена.
13 ответов
Я использую xsel , но я использую его только с обычным текстом и текстом Unicode.
xsel
можно копировать и вставлять в три разных "буфера обмена". По умолчанию он использует основной выбор X Window System, который в основном соответствует тому, что в данный момент находится в выборе. Система X Window также имеет дополнительный выбор (который используется не часто) и выбор буфера обмена. Вы, вероятно, ищете выбор буфера обмена, поскольку именно это среда рабочего стола (например, Gnome, KDE, XFCE) использует для своего буфера обмена. Чтобы использовать это с xsel:
xsel --clipboard < new-clipboard-contents.txt
xsel --clipboard > current-clipboard-contents.txt
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).
Parcellite
Я много лет использовал parcellite в качестве менеджера буфера обмена. Он работает в области уведомлений и предлагает множество возможностей для управления как основным выбором, так и стандартным буфером обмена freedesktop.org.
Это был мой ответ на управление элементами буфера обмена.
Я недавно наткнулся на инструменты xclip-copyfile
, xclip-cutfile
, а также xclip-pastefile
(пакет xclip
). Эти инструменты позволяют копировать / вырезать / вставлять целые файлы через командную строку.
Вы можете увидеть их справочную страницу здесь.
clipit ( http://clipit.rspwn.com/) - менеджер буфера обмена для gtk, который позволяет передавать текст из командной строки:
ls | clipit;
Редактировать: В настоящее время на официальном сайте ClipIt ничего нет, но вы можете получить его с GitHub
Вы можете использовать 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 ppa: noobslab / Indicators, либо вручную загрузив предварительно упакованный пакет. .deb
файлы последней стабильной версии из раздела " Загрузки" проекта.
Если вы просто хотите скопировать текст в буфер обмена:
echo -n "some-text" | xclip -selection clipboard
Pastie
Недавно был выпущен новый менеджер буфера обмена с поддержкой индикатора-апплета (но пока не в архиве). В дополнение к отслеживанию истории буфера обмена, он также будет захватывать и сохранять записи буфера обмена данных (файлы, папки и т. Д.), Что может быть полезно, если вы много манипулируете файлами через среду графического интерфейса / буфера обмена.
Вы можете добавить следующий PPA: ppa:hel-sheep/pastie
Для формата RTF я использую эту процедуру: я копирую текст в буфер обмена в приложении. Если я не уверен, что это rtf или что, я использую эту команду для проверки:
xclip -selection clipboard -o -t TARGETS
Когда он печатает что-то вроде этого:
ЦЕЛЕВЫЕ
текст / RTF
Текст / RichText
Поэтому я не могу удержаться от того, чтобы громко воскликнуть: "Ну и дела, это гениально! Боже, благослови Linux!" После этого выстрела молитва, следует только очевидная вещь:
xclip -selection clipboard -o -t text/rtf > mypreciousRTFcontent.rtf
Затем я обрабатываю все это в libreoffice и рассылаю всем своим друзьям как спам.
:-)
Я думаю, что следующий инструмент удовлетворит ваши требования:
Вырезать и вставлять файлы в терминал
Как насчет настроек демона GPaste, апплета демона управления буфером обмена с интерфейсом DBus:
- GPaste - это пакет управления буфером обмена для GNOME, написанный на Vala
- Внешний вид настроек GPaste обновлен, чтобы лучше соответствовать недавнему GNOME
- Демон теперь полностью равномерный (больше не опрос, меньше энергопотребление)
- GPasteClipboard теперь имеет сигнал "смена владельца", аналогичный сигналу GtkClipboard
- Новая настройка для установки максимального объема памяти, используемой данными в истории
- Режим FIFO отключен (отсутствует дизайн)
- Очистка и модернизация кода
- 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
Или установить gpaste
через synaptic package manager
(а также gnome-shell-extensions-gpaste
если вы используете Gnome-Shell).
Другой вариант - установка через software-center
,
Я пытаюсь разработать лучшее решение, не являющееся менеджером буфера обмена, которое можно найти по адресу https://github.com/baitisj/copypasta. Он еще не совсем правильно обрабатывает RTF и HTML, а большие изображения создают проблемы, но вы можете свободно размещать и отправлять патчи.
Да, есть. Пытаться tmux
который является более продвинутым, чем screen
, Чтобы установить tmux, введите это в терминале:
sudo apt-get install tmux
Также попробуйте gpm
, Команды gpm
а также tmux
может быть хорошая комбинация...
Вы гномеры, вот что вы получаете за использование CORBA-дерьма.
Нет ничего лучше для программного обеспечения YAR, чем использование инструментов, не установленных по умолчанию.
Если бы вы использовали правильную рабочую среду, такую как KDE-plasma, у вас не было бы этой проблемы, потому что вы могли бы просто использовать dbus из любого программного обеспечения, которое вам нравится, например из консоли:
qdbus org.kde.klipper /klipper setClipboardContents "NiHao"
qdbus org.kde.klipper /klipper getClipboardContents
Лично я на самом деле подключаюсь к dbus напрямую с C#, что означает, что мне не нужен qdbus.
Это, вероятно, бесполезно для вас, так как у вас нет klipper, но я все равно упомянул об этом, просто чтобы раздражать вас тем, как это делается правильно.
PS: не копируйте этот код C#, Task.Result может зайти в тупик.
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();
}