37

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

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

5 ответов5

57

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

someCommand | clip

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

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
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 .

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