pbcopy für Windows?

42

In MacOSX gibt es einen Befehl, mit dem die Ausgabe eines Befehls in die Zwischenablage geleitet werden kann, damit er an einer anderen Stelle in der Benutzeroberfläche eingefügt werden kann.

Wie kann dies von cmd.exe oder mit einem PowerShell-Cmdlet durchgeführt werden?

leeand00
quelle

Antworten:

62

Verwenden Sie etwas wie:

someCommand | clip

Dadurch wird das Ergebnis in die Windows-Zwischenablage übertragen

soandos
quelle
Guter Vorschlag. Dies ist ein Standard-Windows-Dienstprogramm. Auf den meisten Systemen ist es bei C:\Windows\system32\clip.exe.
Nicole Hamilton
@NicoleHamilton richtig, aber da dies Teil der PATH-Variablen ist, muss dies nicht explizit angegeben werden
soandos
Mein Punkt und ein Teil des Grundes, warum ich Ihnen eine Aufwertung gegeben habe, war, dass ich mochte, dass Sie ein Standard-Windows-Dienstprogramm vorgeschlagen hatten, nicht etwas, das das OP von irgendwo d / l sollte. Die meisten Menschen kennen sich mit PATH aus.
Nicole Hamilton
3
Wenn Sie für die Nachwelt den Inhalt einer Datei benötigen, geben Sie somefile.txt | ein clip '
ferventcoder
2
Es ist ärgerlich, dass Windows-Echo ein \ r \ n hinzufügt und kein Echo -n hat. Daher enthält "Echo-Test | Clip" Test \ r \ n im Kopierpuffer ... echo | set / p = "Test" | Clip. .. adressiert diese Brutto
HPAVC
6

Ich verwende die Git Bash-Befehlsshell für Windows, und wie oben erwähnt ist die Verwendung clipsehr ärgerlich, da sie auch den Wagenrücklauf am Ende der Ausgabe eines Befehls kopiert. Deshalb habe ich diese Funktion geschrieben, um sie zu adressieren:

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
}

Also zum Beispiel:

$ pwd | cpy  # copies directory path

$ git branch | cpy # copies current branch of git repo to clipboard
Matthew
quelle
Gut Wenn Sie GNU-Win32-Utils installiert haben, können Sie den Zeilenumbruch herausschneiden trund weiterhin verwenden clip, dh:pwd | tr -d \r\n | clip
Ben Sinclair
2

Nur als Referenz musste ich meinen öffentlichen Schlüssel direkt kopieren, nachdem Bitbucket mir eine Warnung bezüglich eines falschen Schlüssels gegeben hatte. Ich konnte @soandos Antwort so verwenden:

cat ~/.ssh/id_rsa.pub | clipum meinen Schlüssel direkt von der Kommandozeile auf einen PC zu kopieren. (da die Kommandozeile im Vergleich zum Terminal nicht funktioniert)

Ben Racicot
quelle
1

Zur Verwendung in WSL / bash . Hinzufügen zu ~/.bashrc:

function pbcopy() {
    printf $(</dev/stdin) | clip.exe
}
export -f pbcopy
rainabba
quelle
0

Leiten Sie den Text in PowerShell einfach weiter Set-Clipboard. Für eine schnelle Eingabe können Sie den Alias ​​verwenden scb. Dadurch wird kein zusätzlicher Zeilenumbruch hinzugefügt, wie dies beim clipDienstprogramm der Fall ist.

Mit diesem Befehl wird beispielsweise der Inhalt von myfile.txtin die Zwischenablage verschoben:

gc .\myfile.txt | scb

Beachten Sie, dass bei Objekten, die Dateisystemobjekte darstellen, Set-Clipboarddas Objekt in der gleichen Weise kopiert wird wie im Explorer, wenn Sie Strg + C für eine Datei drücken. Wenn Sie das nicht wollten, leiten Sie das Objekt Out-Stringzuerst durch .

Ben N
quelle
0

Diese Funktion ersetzt den Standard-Windows-Clip in Git Bash, in den eine abschließende Newline kopiert wird.

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

Dies basiert auf Matthews Antwort, die nur die letzte Zeile beibehält und eine nachfolgende neue Zeile einführt. Mit wird printfder Zeilenumbruch vermieden, der hinzugefügt wird echo.

Ed Chapel
quelle