Доступ к буферам командной строки

Нет необходимости разбирать ~ / .bashrc или любой другой скрипт. Вы можете проверить текущие значения всех псевдонимов, набрав команду alias в терминале. Он выведет на ваш экран все определенные псевдонимы с их определениями.

7
задан 6 March 2012 в 05:39

4 ответа

Ну, в X есть несколько разных буферов обмена. Один xclip копирует текст по умолчанию - это «буфер выбора» - обычно вы просто выбираете текст с помощью мыши, а затем можете вставлять его с помощью средней кнопки мыши. Этот буфер отдельно от того, из которого вы можете вставить Ctrl-Shift-V.

Попробуйте

echo "hello" | xclip -selection clipboard

также, см.

man xclip

для получения более подробной информации о xclip

15
ответ дан 25 May 2018 в 13:43
  • 1
    FYI, также можно сократить до xclip -sel clip. я лично использую это все время – Sergiy Kolodyazhnyy 31 December 2016 в 14:28
  • 2
    Бог, почему это так запутанно, почему недостаточно одного буфера обмена, см. [F1] -selection specify which X selection to use, options are "primary" to use XA_PRIMARY (default), "secondary" for XA_SECONDARY or "clipboard" for XA_CLIPBOARD – mxmlnkn 28 March 2017 в 15:32

Я использовал утилиты wxcopy и wxpaste от windowsmaker, но последние версии Linux (или версии X), похоже, сломали их. Я подозреваю, что безопасность была затянута, и они не были обновлены для соответствия. Например. вы можете делать такие вещи, как:

echo fred | wxcopy | tr "a-z" "A-Z" | wxpaste

, чтобы получить выход FRED. (Это надуманный пример, так как вы получите то же самое без окончательной wxpaste, но я думаю, что это дает вам то, что вы можете достичь.)

Однако вы можете добиться того же эффекта, используя «xcb», который невероятно легковес, а также предоставляет крошечный (суммированный) визуальный дисплей из 8 буферов обмена.

Я написал пару сценариев оболочки wcopy / wpaste несколько лет назад, чтобы сделать wxcopy / wxpaste немного более приятным на мой вкус. Я обновил их сегодня вечером, чтобы работать с wxcopy / wxpaste или xcb. Это делает их немного более сложными, чем они должны быть, но я их вставляю здесь, надеюсь, они не слишком длинны для этого форума.

Вот wcopy:

#!/bin/sh
#
# Provide some enhancements to the wxcopy command, which copies standard input
# to an X11 clipboard text buffer.
#
# Allow copying from stdin to any of the cutbuffers.  Note that they are
# indexed counting from 0.
#
# Author: Luke Kendall
#

if [ `uname -s` = "Darwin" ]
then
    WXCOPY=pbcopy
    WXPASTE=pbpaste
else
    WXCOPY=wxcopy
    WXPASTE=wxpaste
    BUFSPEC="-cutbuffer"
    xcb -p 0 > /tmp/wc$$
    if echo "fred$$" | wxcopy -cutbuffer 0 && [ `wxpaste` = "fred$$" ]
    then
        : # Great, they're actually working.  Not common on modern Linuxes.
        echo "working" > $HOME/.wcopyok
    else
        rm -f $HOME/.wcopyok
        WXCOPY="xcb -s"
        WXPASTE="xcb -p"
        BUFSPEC=
    fi
    xcb -s 0 < /tmp/wc$$
fi

unset WXARGS
if [ $# = 0 ]
then
    $WXCOPY ${WXCOPY_DEFS:-0}
else
    MYNAME=`basename $0`
    USAGE="usage: $MYNAME [ [0-9]... ] [$WXCOPY's args]"
    numlist=true
    for n
    do
        if $numlist && expr "x$n" : 'x[0-9][0-9]*$' > /dev/null
        then
            NUMARGS="$NUMARGS $n"
        else
            numlist=false
            if [ "x$n" = "x-h" ]
            then
                echo "$USAGE" >&2
                exit 0
            else
                WXARGS="$WXARGS $n"
            fi
        fi
    done
    set - $NUMARGS
    $WXCOPY $WXCOPY_DEFS $WXARGS $BUFSPEC $1
    ORIG="$1"
    shift
    for n
    do
        $WXPASTE $BUFSPEC $ORIG | $WXCOPY $WXCOPY_DEFS $WXARGS $BUFSPEC $n
    done
fi

И вот wpaste:

#!/bin/sh
#
# Provide some enhancements to the wxpaste command, which pastes from X11
# clipboard text buffers to standard output.
#
# Allow pasting to stdout from any of the cutbuffers.  Note that they are
# indexed counting from 0.
#
# Author: Luke Kendall
#

if [ `uname -s` = "Darwin" ]
then
    WXCOPY=pbcopy
    WXPASTE=pbpaste
else
    WXCOPY=wxcopy
    WXPASTE=wxpaste
    BUFSPEC="-cutbuffer"
    if [ -s $HOME/.wcopyok ]
    then
        : # Great, they're actually working.  Not common on modern Linuxes.
    else
        WXCOPY="xcb -s"
        WXPASTE="xcb -p"
        BUFSPEC=
    fi
fi

if [ $# = 0 ]
then
    $WXPASTE ${WXPASTE_DEFS:-0}
else
    MYNAME=`basename $0`
    USAGE="usage: $MYNAME [ [0-9]... ] [$WXPASTE's args]"
    for n
    do
        if expr "x$n" : 'x[0-9][0-9]*$' > /dev/null
        then
            NUMARGS="$NUMARGS $n"
        elif [ "x$n" = "x-h" ]
        then
            echo "$USAGE" >&2
            exit 0
        else
            WXARGS="$WXARGS $n"
        fi
    done
    set - $NUMARGS
    : echo "Num args: $#"
    for n
    do
        : echo "Doing: $WXPASTE $WXPASTE_DEFS $WXARGS $BUFSPEC $n"
        $WXPASTE $WXPASTE_DEFS $WXARGS $BUFSPEC $n
    done
fi

Если кому-то интересно, я написал man-страницы для скриптов тоже, но вы, вероятно, можете найти их (они все еще действительны) с помощью googling wcopy.1x и wpaste.1x

2
ответ дан 25 May 2018 в 13:43
  • 1
    Вы можете отредактировать свой ответ, чтобы добавить гиперссылки к файлам. (Вы можете добавить до 2-х ссылок, даже если вы новый пользователь AU.) – Eliah Kagan 7 July 2012 в 18:31

Чтобы облегчить для себя, я создал псевдоним для xclip, чтобы имитировать функции pbcopy и pbpaste в macosx.

sudo apt-get install xclip -y

затем отредактировать ~/.bashrc, чтобы добавить псевдонимы

nano ~/.bashrc

, добавьте эти строки

alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'

Сохраните и выйдите, затем откройте новую оболочку или запустите source ~/.bashrc, чтобы использовать псевдонимы

В моем сообщении в блоге есть более подробная информация.

0
ответ дан 25 May 2018 в 13:43

Раньше я использовал утилиты wxcopy и wxpaste от windowsmaker, но последние версии Linux (или X-версии), похоже, сломали их. Я подозреваю, что безопасность была затянута, и они не обновлены для соответствия. Например. вы можете делать такие вещи, как:

echo fred | wxcopy | tr "a-z" "A-Z" | wxpaste

, чтобы получить выход FRED. (Это надуманный пример, так как вы получите то же самое без окончательной wxpaste, но я думаю, что он дает вкус того, что вы можете достичь.)

Однако вы можете добиться того же эффекта, используя «xcb», который невероятно легковес, а также предоставляет крошечный (суммированный) визуальный дисплей из 8 буферов обмена.

Я написал пару сценариев оболочки wcopy / wpaste несколько лет назад, чтобы сделать wxcopy / wxpaste немного более приятным на мой вкус. Я обновил их сегодня вечером, чтобы работать с wxcopy / wxpaste или xcb. Это делает их немного более сложными, чем они должны быть, но я их вставляю здесь, надеюсь, что они не слишком длинны для этого форума.

Вот wcopy:

#!/bin/sh
#
# Provide some enhancements to the wxcopy command, which copies standard input
# to an X11 clipboard text buffer.
#
# Allow copying from stdin to any of the cutbuffers.  Note that they are
# indexed counting from 0.
#
# Author: Luke Kendall
#

if [ `uname -s` = "Darwin" ]
then
    WXCOPY=pbcopy
    WXPASTE=pbpaste
else
    WXCOPY=wxcopy
    WXPASTE=wxpaste
    BUFSPEC="-cutbuffer"
    xcb -p 0 > /tmp/wc$$
    if echo "fred$$" | wxcopy -cutbuffer 0 && [ `wxpaste` = "fred$$" ]
    then
        : # Great, they're actually working.  Not common on modern Linuxes.
        echo "working" > $HOME/.wcopyok
    else
        rm -f $HOME/.wcopyok
        WXCOPY="xcb -s"
        WXPASTE="xcb -p"
        BUFSPEC=
    fi
    xcb -s 0 < /tmp/wc$$
fi

unset WXARGS
if [ $# = 0 ]
then
    $WXCOPY ${WXCOPY_DEFS:-0}
else
    MYNAME=`basename $0`
    USAGE="usage: $MYNAME [ [0-9]... ] [$WXCOPY's args]"
    numlist=true
    for n
    do
        if $numlist && expr "x$n" : 'x[0-9][0-9]*$' > /dev/null
        then
            NUMARGS="$NUMARGS $n"
        else
            numlist=false
            if [ "x$n" = "x-h" ]
            then
                echo "$USAGE" >&2
                exit 0
            else
                WXARGS="$WXARGS $n"
            fi
        fi
    done
    set - $NUMARGS
    $WXCOPY $WXCOPY_DEFS $WXARGS $BUFSPEC $1
    ORIG="$1"
    shift
    for n
    do
        $WXPASTE $BUFSPEC $ORIG | $WXCOPY $WXCOPY_DEFS $WXARGS $BUFSPEC $n
    done
fi

И вот wpaste:

#!/bin/sh
#
# Provide some enhancements to the wxpaste command, which pastes from X11
# clipboard text buffers to standard output.
#
# Allow pasting to stdout from any of the cutbuffers.  Note that they are
# indexed counting from 0.
#
# Author: Luke Kendall
#

if [ `uname -s` = "Darwin" ]
then
    WXCOPY=pbcopy
    WXPASTE=pbpaste
else
    WXCOPY=wxcopy
    WXPASTE=wxpaste
    BUFSPEC="-cutbuffer"
    if [ -s $HOME/.wcopyok ]
    then
        : # Great, they're actually working.  Not common on modern Linuxes.
    else
        WXCOPY="xcb -s"
        WXPASTE="xcb -p"
        BUFSPEC=
    fi
fi

if [ $# = 0 ]
then
    $WXPASTE ${WXPASTE_DEFS:-0}
else
    MYNAME=`basename $0`
    USAGE="usage: $MYNAME [ [0-9]... ] [$WXPASTE's args]"
    for n
    do
        if expr "x$n" : 'x[0-9][0-9]*$' > /dev/null
        then
            NUMARGS="$NUMARGS $n"
        elif [ "x$n" = "x-h" ]
        then
            echo "$USAGE" >&2
            exit 0
        else
            WXARGS="$WXARGS $n"
        fi
    done
    set - $NUMARGS
    : echo "Num args: $#"
    for n
    do
        : echo "Doing: $WXPASTE $WXPASTE_DEFS $WXARGS $BUFSPEC $n"
        $WXPASTE $WXPASTE_DEFS $WXARGS $BUFSPEC $n
    done
fi

Если кому-то это интересно, я написал man-страницы для скриптов, но вы, вероятно, можете найти их (они все еще действительны) с помощью googling wcopy.1x и wpaste.1x

2
ответ дан 6 August 2018 в 01:59

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

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