Na gut, das ist eine verrückte Antwort, aber es ist auch eine verrückte Frage, also passen sie wenigstens zusammen. Sie können eine benannte Pipe erstellen mit mkfifo
und dann eine Endlosschleife einrichten, die Dateien aus der benannten Pipe liest und sie an pbcopy
(oder xsel
, xclip
, usw.).
1. In einem Terminal, das sich NICHT in einer Bildschirmsitzung befindet (führen Sie dies nur einmal aus):
/usr/bin/mkfifo /tmp/pbcopy.pipe
while true; do /bin/cat /tmp/pbcopy.pipe | /usr/bin/pbcopy; done
Sie können dies in ein Shell-Skript umwandeln, wie z.B. (dies sollte wahrscheinlich robuster sein)
#!/bin/bash
if [[ -e /tmp/pbcopy.pipe ]]; then
echo "it looks like I am already running"
echo "remove /tmp/pbcopy.pipe if you are certain I am not"
exit 1
fi
while true; do
/bin/cat /tmp/pbcopy.pipe | /usr/bin/pbcopy
done
die Sie benennen können pbcopy_server.sh
, ausführbar machen ( chmod a+x pbcopy_server.sh
) und irgendwo in Ihren Pfad einfügen, damit Sie sagen können nohup pbcopy_server.sh &
wenn Sie Ihr Gerät zum ersten Mal starten.
2. In jedem anderen Terminal (auch in Bildschirmsitzungen) können Sie jetzt Dateien katalogisieren (oder die Ausgabe von Programmen nach /tmp/pbcopy.pipe umleiten, und der Text erscheint in der Zwischenablage.
cat file > /tmp/pbcopy.pipe
df -h > /tmp/pbcopy.pipe
3. Damit es so aussieht, als würden Sie den echten pbcopy
Sie können etwas verwenden, um die Katalysatorfunktion zu übernehmen /tmp/pbcopy.pipe
für Sie.
3a. Verwenden Sie eine zsh
Funktion:
function pbcopy() { cat > /tmp/pbcopy.pipe }
3b. Oder erstellen Sie ein Perl-Skript namens pbcopy
und legen Sie es in ein Verzeichnis weiter oben in Ihrem PATH
als /usr/bin
:
#!/usr/bin/perl
use strict;
use warnings;
open my $out, ">", "/tmp/pbcopy.pipe"
or die "could not open pipe to pbcopy: $!\n";
print $out $_ while <>;