Ini bagus untuk bekerja dengan file teks, tetapi akan gagal ketika Anda mencoba melakukan tugas dengan binari. Coba ini dengan gambar untuk melihat apa yang saya maksud.
Itai Ferber
7
setelah mengetik $ cat ~ / Desktop / ded.html | pbcopy Saya tidak bisa menggunakan cmd + v untuk menempelkan file. Meskipun $ pbpaste> ~ / Documents / ded.html melakukan pekerjaan.
Kiwi
Anda juga dapat melihat konten file di clipboard OSX Anda dengan pergi melalui menu Finder Edit> Show Clipboard (diuji dalam Yosemite).
Dannid
Terima kasih, ada ide bagaimana saya membacanya dan meneruskannya ke perintah selanjutnya? misalnya cat ~/.emulator_console_auth_token | auth <read_content>?
Dominic
Ini menyalin isi file, tetapi bukan file itu sendiri.
vy32
20
Jawaban Lri mengarah ke arah yang benar, tetapi memiliki beberapa kelemahan: tidak perlu menggunakan Finder ( the clipboardmerupakan bagian dari StandardAdditions OSAX), dan memberikan runpawang adalah cara yang jauh lebih dapat diandalkan untuk menyampaikan argumen dari baris perintah (sejak 10.4). Membuat kedua perubahan ini sangat menyederhanakan "melarikan diri" yang perlu dilakukan untuk memasukkan program ke dalam shell.
Ini versi saya (dibungkus dengan fungsi shell — Anda bisa memasukkan ini (mis.) Untuk .bashrcmembuatnya tersedia di shell Anda):
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
File yang telah diletakkan di clipboard dengan skrip ini kemudian dapat ditempelkan di Finder untuk menyalin file ke folder lain.
osascript juga dapat digunakan sebagai juru bahasa hash-bang (sejak 10.5). Masukkan ini ke dalam file (mis. file-to-clipboard)
#!/usr/bin/osascript
on run argsset the clipboard to POSIX file (first item of args)
end
Jadikan file tersebut dapat dieksekusi ( chmod +x /path/to/where/ever/you/put/file-to-clipboard). Kemudian jalankan seperti ini:
@Lri: Finder tidak memahami yang jelas set the clipboard to {one,two}(meskipun program AppleScript lain dapat berhasil mengekstrak daftar). The StandardAdditions clipboard perintah mungkin terbatas pada item tunggal.
Chris Johnsen
1
Apakah ini berfungsi untuk banyak file?
VitalyB
Catatan: Jalur yang diberikan harus merupakan jalur absolut agar skrip berfungsi.
Leo
8
Tidak ada cara untuk mencapai apa yang Anda coba lakukan menggunakan baris perintah. Sementara Apple menawarkan pbcopydan pbpastealat - alat untuk memungkinkan penyalinan teks dasar, Anda tidak dapat menggunakan alat-alat ini untuk menyalin file dalam arti yang Anda cari.
Tanpa terlalu banyak detail teknis, ketika Anda 'menyalin' file di Finder menggunakan ⌘C, Anda sebenarnya tidak menyalin file itu sendiri, hanya membuat referensi ke file di clipboard dan menandainya sebagai referensi file. Ketika sebuah aplikasi menerima referensi ini ketika Anda menempel, itu memiliki tanggung jawab untuk memilah-milah, mencari tahu apa yang Anda tempel, dan akhirnya, bekerja dengan file sesuai keinginan. Intinya, ketika Anda menyalin file di Finder, itu menyimpan path ke file dengan cara tertentu ke clipboard tertentu, dan ketika Anda menempel, itu menerima path file itu dan tahu untuk membuat file baru menggunakan konten dari yang lama (salin file ke clipboard, hapus, coba tempel di tempat lain, dan lihat apa yang terjadi, misalnya).
Dalam hal menyalin dan menempel, alat yang tersedia tidak cukup untuk melakukan apa yang Anda butuhkan. Seperti yang disarankan boehj, Anda dapat mencoba menyalin konten dari file lama ke yang baru, tetapi ini hanya akan berfungsi dengan baik untuk file teks. Setiap file biner yang Anda dapatkan akan rusak (coba lakukan ini dengan gambar - itu menjadi rusak).
Baris perintah tradisional akan gagal Anda dengan cara ini, tetapi Anda dapat melihat jika Anda ingin dalam melakukan hal ini di AppleScript, kemudian memohon bahwa melalui baris perintah dengan osascript.
Anda benar tentang gambar, dll. Saya tidak memikirkan itu. Saya kira saya telah salah paham pertanyaannya, karena meskipun pbcopydan pbpasteakan bekerja dengan file .html, itu hanya karena kebetulan itu adalah file teks.
boehj
Tidak, Anda memahami pertanyaan dengan benar, hanya saja Anda menganggap alat ini berfungsi sebagaimana mestinya, padahal sebenarnya tidak. Mereka buggy, dan bahkan tidak dimaksudkan untuk bekerja seperti itu, meskipun Apple telah melakukan pekerjaan yang sangat buruk pada dokumentasi. Jika Anda mengetik pbcopy -help, Anda mendapatkan garis yang tidak layak produksi NSLog()hanya mengulangi 'pbcopy -help'. Ini membantu untuk menjadi seorang programmer untuk memahami ini, itulah sebabnya saya merasa perlu untuk berpadu.
Itai Ferber
1
Yap, tidak masalah. ;)
Itai Ferber
1
Siapa pun yang ingin pbcopy mendapatkan perhatian mungkin mendapatkan akun pengembang gratis dan mengajukan beberapa bug - bugreport.apple.com - tidak ada jaminan itu akan membantu, tetapi memberikan para insinyur leverage untuk mendapatkan waktu untuk mengerjakan hal-hal ini jika cukup banyak orang yang masih peduli .
bmike
1
Bisakah OP mencapai apa yang mereka inginkan dengan AppleScript di CLI?
7
Fungsi di bawah ini hanya berfungsi dengan satu file dan tidak dengan banyak file. Ini membutuhkan GNU readlinkyang dapat Anda instal dengan menjalankan brew install findutils.
copy(){ osascript -e{'on run{a}','set the clipboard to posix file a',end} "$(greadlink -f -- "$1")";}
Sunting: Saya menghapus tell app "Finder"blokir.
Sunting 2: Dikembalikan ke versi yang mendukung jalur relatif.
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'}
jalankan clip_img path-to-fileuntuk menyalin gambar ke clipboard, dan path-to-filebisa relatif. File tersebut bisa berupa file jpeg atau png.
Jawaban:
Jika saya memahami pertanyaan dengan benar, apa yang Anda cari adalah
pbcopy
danpbpaste
.Buka terminal dan lakukan:
$ cat ~/Desktop/ded.html | pbcopy
Sekarang file itu ada di clipboard.
Untuk meletakkannya di tempat lain, yaitu, untuk menempelkannya, lakukan:
$ pbpaste > ~/Documents/ded.html
Sekarang Anda harus memiliki salinan ded.html di ~ / Documents.
sumber
cat ~/.emulator_console_auth_token | auth <read_content>
?Jawaban Lri mengarah ke arah yang benar, tetapi memiliki beberapa kelemahan: tidak perlu menggunakan Finder (
the clipboard
merupakan bagian dari StandardAdditions OSAX), dan memberikanrun
pawang adalah cara yang jauh lebih dapat diandalkan untuk menyampaikan argumen dari baris perintah (sejak 10.4). Membuat kedua perubahan ini sangat menyederhanakan "melarikan diri" yang perlu dilakukan untuk memasukkan program ke dalam shell.Ini versi saya (dibungkus dengan fungsi shell — Anda bisa memasukkan ini (mis.) Untuk
.bashrc
membuatnya tersedia di shell Anda):File yang telah diletakkan di clipboard dengan skrip ini kemudian dapat ditempelkan di Finder untuk menyalin file ke folder lain.
osascript juga dapat digunakan sebagai juru bahasa hash-bang (sejak 10.5). Masukkan ini ke dalam file (mis.
file-to-clipboard
)Jadikan file tersebut dapat dieksekusi (
chmod +x /path/to/where/ever/you/put/file-to-clipboard
). Kemudian jalankan seperti ini:Jika disimpan dalam direktori di PATH, maka Anda dapat menghilangkan path ke file "script".
sumber
set the clipboard to {one,two}
(meskipun program AppleScript lain dapat berhasil mengekstrak daftar). The StandardAdditions clipboard perintah mungkin terbatas pada item tunggal.Tidak ada cara untuk mencapai apa yang Anda coba lakukan menggunakan baris perintah. Sementara Apple menawarkan
pbcopy
danpbpaste
alat - alat untuk memungkinkan penyalinan teks dasar, Anda tidak dapat menggunakan alat-alat ini untuk menyalin file dalam arti yang Anda cari.Tanpa terlalu banyak detail teknis, ketika Anda 'menyalin' file di Finder menggunakan ⌘C, Anda sebenarnya tidak menyalin file itu sendiri, hanya membuat referensi ke file di clipboard dan menandainya sebagai referensi file. Ketika sebuah aplikasi menerima referensi ini ketika Anda menempel, itu memiliki tanggung jawab untuk memilah-milah, mencari tahu apa yang Anda tempel, dan akhirnya, bekerja dengan file sesuai keinginan. Intinya, ketika Anda menyalin file di Finder, itu menyimpan path ke file dengan cara tertentu ke clipboard tertentu, dan ketika Anda menempel, itu menerima path file itu dan tahu untuk membuat file baru menggunakan konten dari yang lama (salin file ke clipboard, hapus, coba tempel di tempat lain, dan lihat apa yang terjadi, misalnya).
Dalam hal menyalin dan menempel, alat yang tersedia tidak cukup untuk melakukan apa yang Anda butuhkan. Seperti yang disarankan boehj, Anda dapat mencoba menyalin konten dari file lama ke yang baru, tetapi ini hanya akan berfungsi dengan baik untuk file teks. Setiap file biner yang Anda dapatkan akan rusak (coba lakukan ini dengan gambar - itu menjadi rusak).
Baris perintah tradisional akan gagal Anda dengan cara ini, tetapi Anda dapat melihat jika Anda ingin dalam melakukan hal ini di AppleScript, kemudian memohon bahwa melalui baris perintah dengan
osascript
.sumber
pbcopy
danpbpaste
akan bekerja dengan file .html, itu hanya karena kebetulan itu adalah file teks.pbcopy -help
, Anda mendapatkan garis yang tidak layak produksiNSLog()
hanya mengulangi'pbcopy -help'
. Ini membantu untuk menjadi seorang programmer untuk memahami ini, itulah sebabnya saya merasa perlu untuk berpadu.Fungsi di bawah ini hanya berfungsi dengan satu file dan tidak dengan banyak file. Ini membutuhkan GNU
readlink
yang dapat Anda instal dengan menjalankanbrew install findutils
.Sunting: Saya menghapus
tell app "Finder"
blokir.Sunting 2: Dikembalikan ke versi yang mendukung jalur relatif.
sumber
Pelaksana
pbcopy < filename
perintah di Terminal salinan isi dari file bernamafilename
.sumber
Untuk menyalin file ke tujuan, gunakan
cp
perintah.Lihat
man cp
untuk informasi lebih lanjut.sumber
Berikut skrip Shell / Bash sederhana. Cukup tempel di
.bashrc
file Anda (atau sejenisnya):sumber
Dengan dukungan file relatif:
jalankan
clip_img path-to-file
untuk menyalin gambar ke clipboard, danpath-to-file
bisa relatif. File tersebut bisa berupa file jpeg atau png.sumber
Anda dapat menggunakan cat 'originfile'> 'destinationfile' di lingkungan unix;
salin file tujuan originfile di windows.
sumber