pbcopy для Windows?


41

В MacOSX есть команда, которая может направить вывод команды в буфер обмена, чтобы ее можно было вставить куда-нибудь еще в GUI.

Как это можно сделать из cmd.exe или с помощью командлета PowerShell?

Ответы:


61

Используйте что-то вроде:

someCommand | clip

Это передаст результат в буфер обмена Windows


Хорошее предложение. Это стандартная утилита Windows. На большинстве систем это в C:\Windows\system32\clip.exe.
Николь Гамильтон

@NicoleHamilton верно, но так как это является частью переменной PATH, это не нужно делать явным
soandos

Моя точка зрения и отчасти причина, по которой я дал вам положительный ответ, заключалась в том, что мне понравилось, что вы предложили стандартную утилиту Windows, а не то, что ОП должен был откуда-то сделать. Большинство людей знают о PATH.
Николь Гамильтон

3
Для потомков, если вы хотите содержимое файла, введите 'somefile.txt | клип '
ferventcoder

2
Досадно, что Windows echo добавляет \ r \ n и не имеет echo -n ..., поэтому у "echo test | clip" будет тест \ r \ n в буфере копирования ... echo | set / p = "test" | clip. .. обращается к этому брутто
hpavc

6

Я использую командную оболочку Git Bash для Windows, и, как кто-то заметил выше, использование clipочень раздражает, поскольку оно также копирует возврат каретки в конце вывода любой команды. Поэтому я написал эту функцию для решения этой проблемы:

function cpy {
while read data; do     # reads data piped in to cpy
    echo "$data" | cat > /dev/clipboard     # echos the data and writes that to /dev/clipboard
done
tr -d '\n' < /dev/clipboard > /dev/clipboard     # removes new lines from the clipboard
}

Так, например:

$ pwd | cpy  # copies directory path

$ git branch | cpy # copies current branch of git repo to clipboard

Неплохо. Если у вас установлены утилиты GNU win32, вы можете обрезать разрыв строки с помощью trи продолжать использовать его clip, то есть:pwd | tr -d \r\n | clip
highmaintenance

2

Просто для справки мне пришлось скопировать мой открытый ключ сразу после того, как Bitbucket дал мне предупреждение о плохом ключе. Я смог использовать ответ @soandos так:

cat ~/.ssh/id_rsa.pub | clipскопировать мой ключ прямо из командной строки на ПК. (так как командная строка отстой по сравнению с терминалом)


0

В PowerShell просто перенаправьте текст в Set-Clipboard. Для быстрой печати вы можете использовать псевдоним scb. Это не добавляет дополнительного разрыва строки, как это clipделает утилита.

Например, эта команда помещает содержимое myfile.txtв буфер обмена:

gc .\myfile.txt | scb

Обратите внимание, что для объектов, представляющих объекты файловой системы, Set-Clipboardэтот объект будет скопирован в том же смысле, что и Explorer, когда вы нажимаете Ctrl + C для файла. Если это не то, что вы хотели, Out-Stringсначала проложите объект .


0

Эта функция заменяет стандартный клип Windows в Git Bash, где копируется завершающий символ новой строки.

function clip {
    printf "$(</dev/stdin)" | cat > /dev/clipboard
}

Это основано на ответе Мэтью, который сохраняет только последнюю строку и вводит перевод строки. Использование printfизбегает новой строки, которая echoдобавляет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.