pbcopy dla Windows?

42

W MacOSX znajduje się polecenie, które może przesyłać dane wyjściowe polecenia do schowka, aby można je było wkleić gdzie indziej w GUI.

Jak można to zrobić z cmd.exe lub za pomocą polecenia cmdlet programu PowerShell?

leeand00
źródło

Odpowiedzi:

62

Użyj czegoś takiego:

someCommand | clip

Spowoduje to przeniesienie wyniku do schowka systemu Windows

soandos
źródło
Dobry pomysł. Jest to standardowe narzędzie systemu Windows. W większości systemów jest to C:\Windows\system32\clip.exe.
Nicole Hamilton,
@NicoleHamilton ma rację, ale ponieważ jest to część zmiennej PATH, nie trzeba tego wyraźnie zaznaczać
soandos
Moim celem i częścią powodu, dla którego dałem ci głos, było to, że podobało mi się, że zasugerowałeś standardowe narzędzie Windows, a nie coś, co OP miałoby skądś d / l. Większość ludzi wie o ŚCIEŻCE.
Nicole Hamilton,
3
Dla potomnych, jeśli chcesz zawartość pliku, wpisz „somefile.txt | klip '
ferventcoder
2
Irytujące echo systemu Windows dodaje \ r \ n i nie ma echa -n ... więc "test echa | klip" będzie miał test \ r \ n w buforze kopii ... echo | set / p = "test" | klip. .. to adresy brutto
hpavc
6

Używam powłoki poleceń Git Bash dla Windows i, jak ktoś zauważył powyżej, używanie clipjest bardzo denerwujące, ponieważ kopiuje również powrót karetki na końcu danych wyjściowych dowolnego polecenia. Więc napisałem tę funkcję, aby ją rozwiązać:

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
}

Na przykład:

$ pwd | cpy  # copies directory path

$ git branch | cpy # copies current branch of git repo to clipboard
Mateusz
źródło
Dobry. Jeśli masz zainstalowane narzędzia GNU win32, możesz skrócić czas łamania linii tri nadal korzystać z niego clip, tj .:pwd | tr -d \r\n | clip
Ben Sinclair
2

Dla odniesienia musiałem skopiować mój klucz publiczny bezpośrednio po tym, jak Bitbucket dał mi złe ostrzeżenie o kluczu. Byłem w stanie użyć odpowiedzi @soandos w następujący sposób:

cat ~/.ssh/id_rsa.pub | clipaby skopiować mój klucz bezpośrednio z wiersza poleceń na komputerze. (ponieważ wiersz poleceń jest do bani w porównaniu do terminala)

Ben Racicot
źródło
1

Do użytku w WSL / bash . Dodaj do ~/.bashrc:

function pbcopy() {
    printf $(</dev/stdin) | clip.exe
}
export -f pbcopy
rainabba
źródło
0

W PowerShell po prostu potokuj tekst do Set-Clipboard. Aby szybko pisać, możesz użyć aliasu scb. Nie dodaje to dodatkowego podziału linii, jak to cliprobi narzędzie.

Na przykład to polecenie umieszcza zawartość myfile.txtschowka:

gc .\myfile.txt | scb

Zauważ, że w przypadku obiektów reprezentujących obiekty systemu plików, Set-Clipboardskopiuje obiekt w tym samym sensie, co Eksplorator, gdy kombinujesz Ctrl + C plik. Jeśli nie tego chciałeś, Out-Stringnajpierw przeprowadź obiekt .

Ben N.
źródło
0

Ta funkcja zastępuje standardowy klip systemu Windows w Git Bash, w którym kopiowany jest znak nowej linii.

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

Jest to oparte na odpowiedzi Matthew, która zachowuje tylko ostatnią linię i wprowadza końcową nową linię. Używanie printfpozwala uniknąć echododawania nowej linii .

Ed Chapel
źródło