ฉันได้รับไฟล์บนเดสก์ท็อปชื่อไฟล์คือ ded.html ในการคัดลอกไฟล์ฉันคลิกไฟล์และกด cmd + c
ตอนนี้ฉันจะทำสิ่งเดียวกันโดยใช้ terminal ได้อย่างไร
ฉันได้รับไฟล์บนเดสก์ท็อปชื่อไฟล์คือ ded.html ในการคัดลอกไฟล์ฉันคลิกไฟล์และกด cmd + c
ตอนนี้ฉันจะทำสิ่งเดียวกันโดยใช้ terminal ได้อย่างไร
คำตอบ:
ถ้าฉันทำความเข้าใจคำถามที่เหมาะสมสิ่งที่คุณหลังจากมีและpbcopy
pbpaste
เปิดเทอร์มินัลและทำ:
$ cat ~/Desktop/ded.html | pbcopy
ตอนนี้ไฟล์นั้นอยู่ในคลิปบอร์ด
เมื่อต้องการวางไว้ที่อื่นนั่นคือเพื่อวางให้ทำ:
$ pbpaste > ~/Documents/ded.html
ตอนนี้คุณควรมีสำเนาของ ded.html อยู่ใน ~ / Documents
cat ~/.emulator_console_auth_token | auth <read_content>
?
คำตอบของ Lriนั้นมุ่งไปในทิศทางที่ถูกต้อง แต่มันมีข้อบกพร่องอยู่สองข้อ: ไม่จำเป็นต้องใช้Finder ( the clipboard
เป็นส่วนหนึ่งของStandardAdditions OSAX) และการให้run
ตัวจัดการเป็นวิธีที่เชื่อถือได้มากขึ้นในการส่งอาร์กิวเมนต์จากบรรทัดคำสั่ง (ตั้งแต่ 10.4) การเปลี่ยนแปลงทั้งสองอย่างนี้จะทำให้“ การหลบหนี” ง่ายขึ้นมากซึ่งต้องทำเพื่อเข้าสู่โปรแกรมในเชลล์
นี่คือเวอร์ชั่นของฉัน (ห่อในฟังก์ชั่นเชลล์ - คุณสามารถใส่มันลงไปใน (เช่น) ของคุณ.bashrc
เพื่อให้มันพร้อมใช้งานในเชลล์ของคุณ):
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
ไฟล์ที่วางบนคลิปบอร์ดด้วยสคริปต์นี้สามารถวางในFinderเพื่อคัดลอกไฟล์ไปยังโฟลเดอร์อื่น
osascriptยังสามารถใช้เป็นล่ามแฮชปัง (ตั้งแต่ 10.5) ใส่ไว้ในไฟล์ (เช่นfile-to-clipboard
)
#!/usr/bin/osascript
on run args
set the clipboard to POSIX file (first item of args)
end
ทำให้ไฟล์ปฏิบัติการ ( chmod +x /path/to/where/ever/you/put/file-to-clipboard
) จากนั้นเรียกใช้เช่น:
/path/to/where/ever/you/put/file-to-clipboard ~/Desktop/ded.html
หากมันถูกเก็บไว้ในไดเรกทอรีใน PATH คุณสามารถละเว้นพา ธ ไปยังไฟล์“ script”
set the clipboard to {one,two}
(แม้ว่าโปรแกรม AppleScript อื่นสามารถแยกรายการได้สำเร็จ) StandardAdditionsคำสั่งคลิปบอร์ดอาจถูก จำกัด ไปยังรายการเดียว
ไม่มีวิธีที่จะบรรลุสิ่งที่คุณพยายามทำโดยใช้บรรทัดคำสั่ง ในขณะที่ Apple เสนอpbcopy
และpbpaste
เครื่องมือในการอนุญาตให้คัดลอกข้อความพื้นฐานคุณไม่สามารถใช้เครื่องมือเหล่านี้เพื่อคัดลอกไฟล์ในแง่ที่คุณกำลังมองหา
โดยไม่ต้องลงรายละเอียดทางเทคนิคมากเกินไปเมื่อคุณ 'คัดลอก' ไฟล์ใน Finder โดยใช้⌘Cคุณไม่ได้ทำการคัดลอกไฟล์เองเพียงทำการอ้างอิงไปยังไฟล์บนคลิปบอร์ดและทำเครื่องหมายเป็นการอ้างอิงไฟล์ เมื่อแอปพลิเคชันได้รับการอ้างอิงนี้เมื่อคุณวางมันมีความรับผิดชอบในการจัดเรียงสิ่งต่าง ๆ ออกมาหาสิ่งที่คุณวางและท้ายที่สุดการทำงานกับไฟล์ตามที่เห็นสมควร ในสาระสำคัญเมื่อคุณคัดลอกไฟล์ใน Finder มันจะบันทึกเส้นทางไปยังไฟล์ในบางวิธีไปยังคลิปบอร์ดและเมื่อคุณวางมันจะได้รับเส้นทางของไฟล์นั้นและรู้วิธีสร้างไฟล์ใหม่โดยใช้เนื้อหาของ อันเก่า (คัดลอกไฟล์ไปยังคลิปบอร์ด, ลบมัน, ลองวางมันที่อื่น, และดูว่าเกิดอะไรขึ้น, เป็นต้น)
ในแง่ของการคัดลอกและวางเครื่องมือที่มีอยู่ในมือไม่เพียงพอที่จะทำสิ่งที่คุณต้องการ ตามคำแนะนำของ boehj คุณสามารถลองคัดลอกเนื้อหาของไฟล์เก่าไปยังไฟล์ใหม่ แต่วิธีนี้จะใช้ได้ดีสำหรับไฟล์ข้อความเท่านั้น ไฟล์ไบนารีใด ๆ ที่คุณได้รับจะเสียหาย (ลองทำสิ่งนี้ด้วยภาพ - ไฟล์นั้นเสียหาย)
บรรทัดคำสั่งแบบดั้งเดิมจะล้มเหลวคุณในทางนี้ แต่คุณสามารถใช้ดูถ้าคุณต้องการเข้าไปทำเช่นนี้ใน AppleScript osascript
แล้วกล่าวอ้างว่าผ่านบรรทัดคำสั่งด้วย
pbcopy
และpbpaste
จะทำงานกับไฟล์. html ได้เพียงเพราะมันเพิ่งเกิดขึ้นเป็นไฟล์ข้อความ
pbcopy -help
คุณจะได้รับที่ไม่ใช่การผลิตที่คุ้มค่าสายเพียงแค่การทำซ้ำNSLog()
'pbcopy -help'
มันช่วยให้เป็นโปรแกรมเมอร์ที่จะเข้าใจสิ่งนี้ซึ่งเป็นเหตุผลว่าทำไมฉันถึงรู้สึกว่าจำเป็นต้องพูดสอด
ฟังก์ชั่นด้านล่างใช้งานได้กับไฟล์เดียวเท่านั้นและไม่รองรับหลายไฟล์ มันต้อง GNU ซึ่งคุณสามารถติดตั้งโดยการเรียกใช้readlink
brew install findutils
copy(){ osascript -e{'on run{a}','set the clipboard to posix file a',end} "$(greadlink -f -- "$1")";}
แก้ไข: ฉันลบtell app "Finder"
บล็อก
แก้ไข 2: เปลี่ยนกลับเป็นเวอร์ชันที่รองรับเส้นทางที่สัมพันธ์กัน
การดำเนินการคำสั่งในเทอร์มิสำเนาเนื้อหาของแฟ้มที่มีชื่อpbcopy < filename
filename
หากต้องการคัดลอกไฟล์ไปยังปลายทางให้ใช้cp
คำสั่ง
cp /path/to/file /path/to/destination
ดูman cp
ข้อมูลเพิ่มเติม
นี่เป็นสคริปต์ Shell / Bash ง่าย ๆ เพียงวางไว้ใน.bashrc
ไฟล์ของคุณ(หรือสิ่งที่ชอบ):
file-to-clipboard() {
if [ -z "$1" ]; then
echo "file path/name:"
read FILE
else
FILE="$1"
fi
pbcopy < "$FILE"
}
ด้วยการสนับสนุนของไฟล์ญาติ:
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'
}
เรียกใช้clip_img path-to-file
เพื่อคัดลอกรูปภาพไปยังคลิปบอร์ดและpath-to-file
อาจสัมพันธ์กัน ไฟล์อาจเป็นไฟล์ jpeg หรือ png
คุณสามารถใช้ cat 'originfile'> 'destinationfile' ในระบบปฏิบัติการยูนิกซ์
คัดลอก originfile destinationfile บน windows