Dies ist ideal für die Arbeit mit Textdateien, schlägt jedoch fehl, wenn Sie versuchen, die Aufgabe mit Binärdateien auszuführen. Probieren Sie dies mit einem Bild aus, um zu sehen, was ich meine.
Itai Ferber
7
nach der Eingabe von $ cat ~ / Desktop / ded.html | pbcopy Ich kann cmd + v nicht zum Einfügen der Datei verwenden. Dachte, $ pbpaste> ~ / Documents / ded.html hat den Job gemacht.
Angry Kiwi
Sie können den Dateiinhalt auch in Ihrer OSX-Zwischenablage anzeigen, indem Sie das Finder-Menü Bearbeiten> Zwischenablage anzeigen aufrufen (in Yosemite getestet).
Dannid
Danke, weißt du, wie ich es gelesen und an den nächsten Befehl weitergeleitet habe? zB cat ~/.emulator_console_auth_token | auth <read_content>?
Dominic
Dadurch wird der Inhalt der Datei kopiert, nicht jedoch die Datei selbst.
8.
20
Die Antwort von Lri geht in die richtige Richtung, hat jedoch ein paar Schwachstellen: Es ist nicht erforderlich, Finder zu verwenden ( the clipboardist Teil von StandardAdditions OSAX), und die Angabe eines Handlers runist eine viel zuverlässigere Möglichkeit, Argumente über die Befehlszeile zu übergeben (seit 10.4). Das Durchführen dieser beiden Änderungen vereinfacht das "Entweichen", das durchgeführt werden muss, um das Programm in eine Shell einzugeben, erheblich.
Hier ist meine Version (umhüllt von einer Shell-Funktion - Sie können diese in (z. B.) Ihre einfügen .bashrc, um sie in Ihren Shells verfügbar zu machen):
file-to-clipboard(){
osascript \-e 'on run args' \-e 'set the clipboard to POSIX file (first item of args)' \-e end \"$@"}
file-to-clipboard ~/Desktop/ded.html
Eine Datei, die mit diesem Skript in die Zwischenablage verschoben wurde, kann dann in Finder eingefügt werden, um die Datei in einen anderen Ordner zu kopieren.
osascript kann auch als Hash-Bang-Interpreter verwendet werden (seit 10.5). Fügen Sie dies in eine Datei ein (zB file-to-clipboard)
#!/usr/bin/osascript
on run argsset the clipboard to POSIX file (first item of args)
end
Machen Sie die Datei ausführbar ( chmod +x /path/to/where/ever/you/put/file-to-clipboard). Dann führe es so aus:
@Lri: Finder versteht das Offensichtliche nicht set the clipboard to {one,two}(obwohl ein anderes AppleScript-Programm die Liste erfolgreich extrahieren kann). Die StandardAdditions- Zwischenablage-Befehle können auf einzelne Elemente beschränkt sein.
Chris Johnsen
1
Würde es für mehrere Dateien funktionieren?
VitalyB
Hinweis: Der angegebene Pfad muss ein absoluter Pfad sein, damit das Skript funktioniert.
Leo
8
Es gibt keine Möglichkeit, das, was Sie versuchen, über die Befehlszeile zu erreichen. Apple bietet die Tools pbcopyund pbpastean, um das Kopieren von Text zu ermöglichen. Mit diesen Tools können Sie jedoch keine Datei in dem von Ihnen gewünschten Sinne kopieren.
Ohne auf zu viele technische Details einzugehen, kopieren Sie beim "Kopieren" einer Datei im Finder ⌘Cnicht die Datei selbst, sondern verweisen lediglich auf die Datei in der Zwischenablage und markieren sie als Dateireferenz. Wenn eine Anwendung diesen Verweis beim Einfügen erhält, ist sie dafür verantwortlich, die Dinge zu sortieren, herauszufinden, was Sie eingefügt haben, und letztendlich mit der Datei zu arbeiten, wie es passt. Wenn Sie eine Datei im Finder kopieren, wird der Pfad zu der Datei in einer bestimmten Weise in einer bestimmten Zwischenablage gespeichert. Beim Einfügen wird dieser Dateipfad empfangen und es wird bekannt, dass eine neue Datei mit dem Inhalt der Datei erstellt wird alte (kopieren Sie eine Datei in die Zwischenablage, löschen Sie sie, versuchen Sie, sie an einer anderen Stelle einzufügen und sehen Sie, was zum Beispiel passiert).
In diesem Sinne des Kopierens und Einfügens reichen die verfügbaren Werkzeuge nicht aus, um das zu tun, was Sie benötigen. Wie von boehj vorgeschlagen, können Sie versuchen, den Inhalt der alten Datei in eine neue zu kopieren, dies funktioniert jedoch nur für Textdateien. Alle Binärdateien, die Sie erhalten, werden beschädigt (versuchen Sie dies mit einem Bild - es wird beschädigt).
Die herkömmliche Befehlszeile schlägt auf diese Weise fehl, aber Sie können einen Blick darauf werfen, ob Sie dies in AppleScript tun möchten, und das dann über die Befehlszeile mit aufrufen osascript.
Du hast Recht mit Bildern usw. Daran habe ich nicht gedacht. Ich glaube, ich habe die Frage falsch verstanden, denn obwohl pbcopyund pbpastemit einer HTML-Datei arbeiten wird, ist das nur, weil es zufällig eine Textdatei ist.
Boehj
Nein, Sie haben die Frage richtig verstanden. Sie haben lediglich angenommen, dass diese Tools ordnungsgemäß funktionieren, was sie nicht tun. Sie sind fehlerhaft und sollen nicht einmal so funktionieren, obwohl Apple bei der Dokumentation wirklich schlechte Arbeit geleistet hat. Wenn Sie eingeben pbcopy -help, erhalten Sie eine nicht produktionswürdige NSLog()Zeile, die nur wiederholt wird 'pbcopy -help'. Es hilft, ein Programmierer zu sein, um dies zu verstehen, weshalb ich es für notwendig hielt, sich einzuschalten.
Itai Ferber
1
Ja, kein Problem. ;)
Itai Ferber
1
Jeder, der möchte, dass pbcopy Aufmerksamkeit erregt, kann sich ein kostenloses Entwicklerkonto zulegen und einige Fehler melden - bugreport.apple.com - es hilft zwar nicht, aber die Ingenieure können sich Zeit nehmen, an diesen Dingen zu arbeiten, wenn sich immer noch genügend Leute darum kümmern .
bmike
1
Kann das OP mit AppleScript auf der CLI erreichen, was es will?
7
Die folgende Funktion funktioniert nur mit einer einzelnen Datei und nicht mit mehreren Dateien. Es erfordert GNU, readlinkdas Sie installieren können, indem Sie ausführen brew install findutils.
copy(){ osascript -e{'on run{a}','set the clipboard to posix file a',end} "$(greadlink -f -- "$1")";}
Bearbeiten: Ich habe den tell app "Finder"Block entfernt.
Bearbeiten 2: Zurückgesetzt auf eine Version, die relative Pfade unterstützt.
clip_img(){
osascript -e 'on run argv' \-e 'set currentDir to do shell script "pwd"' \-e 'set the clipboard to (read POSIX file (POSIX path of (currentDir as text & (first item of argv) )) as JPEG picture)' \-e 'end run'"/$1"# osascript -e 'clipboard info'}
Führen Sie clip_img path-to-fileden Befehl aus, um das Bild in die Zwischenablage zu kopieren. Dies path-to-filekann relativ sein. Die Datei kann eine JPEG- oder PNG-Datei sein.
Antworten:
Wenn ich die Frage richtig verstehe, ist
pbcopy
und danach Siepbpaste
.Öffne ein Terminal und mache:
$ cat ~/Desktop/ded.html | pbcopy
Diese Datei befindet sich nun in der Zwischenablage.
Um es woanders zu platzieren, das heißt, um es einzufügen, mache:
$ pbpaste > ~/Documents/ded.html
Jetzt sollten Sie eine Kopie von ded.html in ~ / Documents haben.
quelle
cat ~/.emulator_console_auth_token | auth <read_content>
?Die Antwort von Lri geht in die richtige Richtung, hat jedoch ein paar Schwachstellen: Es ist nicht erforderlich, Finder zu verwenden (
the clipboard
ist Teil von StandardAdditions OSAX), und die Angabe eines Handlersrun
ist eine viel zuverlässigere Möglichkeit, Argumente über die Befehlszeile zu übergeben (seit 10.4). Das Durchführen dieser beiden Änderungen vereinfacht das "Entweichen", das durchgeführt werden muss, um das Programm in eine Shell einzugeben, erheblich.Hier ist meine Version (umhüllt von einer Shell-Funktion - Sie können diese in (z. B.) Ihre einfügen
.bashrc
, um sie in Ihren Shells verfügbar zu machen):Eine Datei, die mit diesem Skript in die Zwischenablage verschoben wurde, kann dann in Finder eingefügt werden, um die Datei in einen anderen Ordner zu kopieren.
osascript kann auch als Hash-Bang-Interpreter verwendet werden (seit 10.5). Fügen Sie dies in eine Datei ein (zB
file-to-clipboard
)Machen Sie die Datei ausführbar (
chmod +x /path/to/where/ever/you/put/file-to-clipboard
). Dann führe es so aus:Wenn es in einem Verzeichnis im PATH gespeichert ist, können Sie den Pfad zur „Skript“ -Datei weglassen.
quelle
set the clipboard to {one,two}
(obwohl ein anderes AppleScript-Programm die Liste erfolgreich extrahieren kann). Die StandardAdditions- Zwischenablage-Befehle können auf einzelne Elemente beschränkt sein.Es gibt keine Möglichkeit, das, was Sie versuchen, über die Befehlszeile zu erreichen. Apple bietet die Tools
pbcopy
undpbpaste
an, um das Kopieren von Text zu ermöglichen. Mit diesen Tools können Sie jedoch keine Datei in dem von Ihnen gewünschten Sinne kopieren.Ohne auf zu viele technische Details einzugehen, kopieren Sie beim "Kopieren" einer Datei im Finder ⌘Cnicht die Datei selbst, sondern verweisen lediglich auf die Datei in der Zwischenablage und markieren sie als Dateireferenz. Wenn eine Anwendung diesen Verweis beim Einfügen erhält, ist sie dafür verantwortlich, die Dinge zu sortieren, herauszufinden, was Sie eingefügt haben, und letztendlich mit der Datei zu arbeiten, wie es passt. Wenn Sie eine Datei im Finder kopieren, wird der Pfad zu der Datei in einer bestimmten Weise in einer bestimmten Zwischenablage gespeichert. Beim Einfügen wird dieser Dateipfad empfangen und es wird bekannt, dass eine neue Datei mit dem Inhalt der Datei erstellt wird alte (kopieren Sie eine Datei in die Zwischenablage, löschen Sie sie, versuchen Sie, sie an einer anderen Stelle einzufügen und sehen Sie, was zum Beispiel passiert).
In diesem Sinne des Kopierens und Einfügens reichen die verfügbaren Werkzeuge nicht aus, um das zu tun, was Sie benötigen. Wie von boehj vorgeschlagen, können Sie versuchen, den Inhalt der alten Datei in eine neue zu kopieren, dies funktioniert jedoch nur für Textdateien. Alle Binärdateien, die Sie erhalten, werden beschädigt (versuchen Sie dies mit einem Bild - es wird beschädigt).
Die herkömmliche Befehlszeile schlägt auf diese Weise fehl, aber Sie können einen Blick darauf werfen, ob Sie dies in AppleScript tun möchten, und das dann über die Befehlszeile mit aufrufen
osascript
.quelle
pbcopy
undpbpaste
mit einer HTML-Datei arbeiten wird, ist das nur, weil es zufällig eine Textdatei ist.pbcopy -help
, erhalten Sie eine nicht produktionswürdigeNSLog()
Zeile, die nur wiederholt wird'pbcopy -help'
. Es hilft, ein Programmierer zu sein, um dies zu verstehen, weshalb ich es für notwendig hielt, sich einzuschalten.Die folgende Funktion funktioniert nur mit einer einzelnen Datei und nicht mit mehreren Dateien. Es erfordert GNU,
readlink
das Sie installieren können, indem Sie ausführenbrew install findutils
.Bearbeiten: Ich habe den
tell app "Finder"
Block entfernt.Bearbeiten 2: Zurückgesetzt auf eine Version, die relative Pfade unterstützt.
quelle
Durch Ausführen des
pbcopy < filename
Befehls im Terminal wird der Inhalt der genannten Datei kopiertfilename
.quelle
Verwenden Sie den
cp
Befehl , um eine Datei an ein Ziel zu kopieren .Siehe
man cp
für weitere Informationen.quelle
Hier ist ein einfaches Shell / Bash-Skript. Fügen Sie es einfach in Ihre
.bashrc
Datei ein (oder ähnliches):quelle
Mit Unterstützung der relativen Datei:
Führen Sie
clip_img path-to-file
den Befehl aus, um das Bild in die Zwischenablage zu kopieren. Diespath-to-file
kann relativ sein. Die Datei kann eine JPEG- oder PNG-Datei sein.quelle
Sie können cat 'originfile'> 'destinationfile' in Unix-Umgebungen verwenden.
Kopieren der Ursprungsdatei Zieldatei unter Windows.
quelle