ทำไมฉันไม่สามารถส่ง "pwd" ถึง "open" บน macOS ได้


12

นี่เป็น MacOS ที่เฉพาะเจาะจง แต่ดูเหมือนว่าไม่น่าที่จะไปอยู่ในชุมชนAsk Different

ในเทอร์มินัลฉันสามารถpwdคัดลอกผลลัพธ์แล้วพิมพ์openและวางผลลัพธ์แล้วโฟลเดอร์จะเปิดในตัวค้นหา แต่

pwd | open

openพิมพ์เอกสารความช่วยเหลือสำหรับ ทำไมการวางท่อไม่ทำงาน แต่การวางไม่ได้


ซึ่งจะใช้งานได้หากเปิดคาดว่าคุณจะพิมพ์ชื่อไดเรกทอรีหลังจากที่คุณกด Enter
Jasen

9
นอกจากนี้สิ่งนี้ควร (ไม่ใช่ผู้ใช้ mac) ทำงาน: open .(สำหรับไดเรกทอรีปัจจุบัน)
UniversallyUniqueID

@BharadwajRaju open .ทำงานและดูเหมือนง่ายที่สุด TY
Chuck

คำตอบ:


20

ฉันไม่มี Mac ดังนั้นฉันจึงไม่สามารถทดสอบได้ แต่วิธีแก้ปัญหาควรเป็นดังนี้:

open "`pwd`"

ไม่ใช่ทุกโปรแกรมที่รับอินพุตstdinซึ่งจำเป็นสำหรับไพพ์ในการทำงาน


1
เครื่องหมายคำพูดคู่นั้นไม่จำเป็น
59

4
@tbodt: ลอง/var/tbodt's filesเลย
Julie Pelletier

2
@tbodt: เชลล์ใดจะรู้ได้อย่างไรว่าช่องว่างที่ใช้คือการแยกอาร์กิวเมนต์หรือส่วนของอาร์กิวเมนต์?
Julie Pelletier

2
@jamesdlin: ไปบ่นเรื่องbashโครงการพัฒนา แต่อย่าลืมที่จะทุบตีเชลล์เก่าทั้งหมดและเชลล์รุ่นใหม่ที่สุดในขณะที่คุณอยู่ในนั้น ครั้งแล้วครั้งเล่า!
Julie Pelletier

1
@JuliePelletier ฉันแค่บอกว่าคุณอ้างว่ามันเป็นไปไม่ได้สำหรับเชลล์ใด ๆ แต่เชลล์เช่นปลามีพฤติกรรมตรงตามที่ tbodt อธิบาย
jamesdlin

28

openยูทิลิตี้บน MacOS ไม่ได้อ่านจากอินพุตมาตรฐาน แต่ใช้อาร์กิวเมนต์จากบรรทัดคำสั่ง

เพื่อเปิดไดเรกทอรีทำงานปัจจุบันคุณจะต้องพูด

$ open "$( pwd )"

หรือ

$ open "$PWD"

หรือเพียงแค่

$ open .

ตามที่ระบุไว้ในความคิดเห็นด้านล่าง

ด้วย-fแฟล็กopenคุณสามารถอ่านจากอินพุตมาตรฐาน แต่เพื่อเปิดสิ่งที่รับในเท็กซ์เอดิเตอร์ดีฟอลต์


1
ถ้าเชลล์คือ (t) csh คุณต้องการopen $cwd:qแทน และopen (pwd)/ open $PWDถ้าเป็นfish
Stéphane Chazelas

1
@ StéphaneChazelasฉันเชื่อว่าเชลล์เริ่มต้นในดาร์วินนั้นเป็นสิ่งที่bashดี แต่ก็ดีที่จะเห็นวิธีแก้ปัญหาสำหรับเชลล์อื่น ๆ เช่นกัน
Kusalananda

เพื่อความสมบูรณ์ด้วยrc, es, akangaเปลือกหอย: open `pwdหรือopen `{pwd}
Stéphane Chazelas

5
หรือคุณสามารถใช้ไวยากรณ์open .สำหรับไดเรกทอรีการทำงานปัจจุบันหรือไดเรกทอรีหลักopen .. หรือสองไดเรกทอรีopen ../..เป็นต้น
fd0

@ StéphaneChazelas: ทำไมจะ$cwd:qดีกว่า"$cwd"ในเชลล์ที่เกี่ยวข้องกับ csh
G-Man กล่าวว่า 'Reinstate Monica'

9

คำตอบอื่น ๆ นั้นถูกต้องทั้งหมด หากคุณต้องการจดชวเลขง่ายคุณสามารถทำตามที่ @ fd0 เสนอและใช้

open .

เพื่อเปิดไดเรกทอรีปัจจุบัน ไดเรกทอรีปัจจุบันชื่อ.(จุดเดียว) ใน Unix ซึ่งเป็นไดเรกทอรีหลัก..(สองจุด)


9
pwd | xargs open

xargs ผลักอินพุตมาตรฐานลงในอาร์กิวเมนต์ของอาร์กิวเมนต์แรก


2
นั่นคือถ้าเส้นทางไดเรกทอรีการทำงานปัจจุบันไม่มีช่องว่างหรือขึ้นบรรทัดใหม่หรือราคาเดียวหรือราคาคู่หรือเครื่องหมายแบ็กสแลช
Stéphane Chazelas

pwd | xargs -d '\n' open
belkka

0

คุณสามารถใช้ไปป์ไลน์ด้วย-fเพื่อเปิดเนื้อหาของคำสั่งก่อนหน้าใน Text Editor สิ่งนี้ใช้สำหรับโปรแกรมแก้ไขข้อความ สำหรับแอพอื่นคุณจะต้องใช้คำแนะนำในคำถามอื่น ๆ

ตัวอย่างเช่น:

ls | open -f

สิ่งนี้จะเปิดตัวแก้ไขข้อความเริ่มต้นของคุณด้วยlsเนื้อหาที่ส่งออก

คุณยังสามารถระบุเท็กซ์เอดิเตอร์ที่จะใช้โดยใช้-a:

ls | open -a 'Atom' -f

นี่จะเป็นการเปิด Atom ที่มีlsเนื้อหาเอาต์พุต

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.