Tại sao tôi không thể chuyển `pwd` sang` open` trên macOS?


12

Đây là macOS cụ thể, nhưng dường như quá không phù hợp trong cộng đồng Hỏi khác .

Trong Terminal, tôi có thể pwd, sao chép kết quả và nhập openvà dán kết quả và thư mục sẽ mở trong Finder, nhưng

pwd | open

in tài liệu trợ giúp cho open. Tại sao đường ống không hoạt động nhưng dán không?


Điều đó sẽ chỉ hoạt động nếu mở yêu cầu bạn nhập tên thư mục sau khi bạn nhấn enter.
Jasen

9
Ngoài ra, điều này sẽ (không phải là người dùng mac) hoạt động: open .(đối với thư mục hiện tại)
UniversallyUniqueID

@BharadwajRaju open .hoạt động và có vẻ dễ nhất. ty.
Chuck

Câu trả lời:


19

Tôi không có máy Mac nên tôi không thể kiểm tra nó, nhưng giải pháp nên là:

open "`pwd`"

Không phải tất cả các chương trình lấy đầu vào của chúng từ stdinđó sẽ cần thiết cho đường ống hoạt động.


1
Các trích dẫn kép là không cần thiết.
tbodt

3
@tbodt: Hãy thử nó /var/tbodt's files.
Julie Pelletier

Tôi đã nghĩ bash sẽ coi đó là một đối số ... Đây là lý do tại sao tôi không sử dụng bash.
tbodt

2
@tbodt: Làm thế nào bất kỳ shell nào cũng biết nếu không gian được sử dụng là để tách các đối số hoặc một phần của một đối số?
Julie Pelletier

2
@jamesdlin: Hãy phàn nàn về bashdự án phát triển, nhưng đừng quên bash tất cả các shell cũ hơn và hầu hết các shell mới hơn trong khi bạn đang ở đó. Hơn và ra!
Julie Pelletier

27

Các opentiện ích trên Mac không đọc từ đầu vào tiêu chuẩn, nhưng một vài tham số của nó từ dòng lệnh.

Để mở thư mục làm việc hiện tại, bạn sẽ phải nói

$ open "$( pwd )"

hoặc là

$ open "$PWD"

hoặc đơn giản

$ open .

như đã chỉ ra trong các ý kiến ​​dưới đây.

Với -fcờ, opencó thể được thực hiện để đọc từ đầu vào tiêu chuẩn, nhưng chỉ để mở bất cứ thứ gì nó nhận được trong trình soạn thảo văn bản mặc định.


1
Nếu vỏ là (t) csh, open $cwd:qthay vào đó bạn muốn . Và open (pwd)/ open $PWDnếu đó làfish
Stéphane Chazelas

1
@ StéphaneChazelas Tôi tin rằng lớp vỏ mặc định trên Darwin là vậy bash, nhưng thật tốt khi thấy các giải pháp cho các lớp vỏ khác.
Kusalananda

Để hoàn chỉnh, với rc, es, akangavỏ: open `pwdhoặcopen `{pwd}
Stéphane Chazelas

5
Hoặc bạn có thể sử dụng cú pháp- open .cho thư mục làm việc hiện tại hoặc thư mục mẹ open .. hoặc lên hai thư mục open ../.., v.v.
fd0

@ StéphaneChazelas: Tại sao $cwd:qnên dùng "$cwd"vỏ liên quan đến csh?
G-Man nói 'Phục hồi Monica'

9

Các câu trả lời khác là hoàn toàn chính xác. Nếu bạn muốn một tốc ký dễ dàng , bạn có thể làm như @ fd0 đề xuất và chỉ cần sử dụng

open .

để mở thư mục hiện tại. Thư mục hiện tại được đặt tên .(một dấu chấm đơn) trong Unix, thư mục mẹ ..(hai dấu chấm).


9
pwd | xargs open

xargs chuyển đầu vào độc lập của nó vào các đối số của đối số đầu tiên.


2
Điều đó chỉ khi đường dẫn thư mục làm việc hiện tại không chứa khoảng trắng hoặc dòng mới hoặc dấu ngoặc đơn hoặc dấu ngoặc kép hoặc dấu gạch chéo ngược.
Stéphane Chazelas

pwd | xargs -d '\n' open
belkka 17/03/19

0

Bạn có thể sử dụng một đường ống dẫn -fđể mở nội dung của lệnh trước đó trong Trình soạn thảo văn bản. Điều này chỉ áp dụng cho các biên tập viên văn bản. Đối với các ứng dụng khác, bạn sẽ cần sử dụng đề xuất trong các câu hỏi khác.

Ví dụ:

ls | open -f

Điều này sẽ mở trình soạn thảo văn bản mặc định của bạn với lsnội dung đầu ra.

Bạn cũng có thể chỉ định trình soạn thảo văn bản để sử dụng bằng cách sử dụng -a:

ls | open -a 'Atom' -f

Điều này sẽ mở Atom với lsnội dung đầu ra.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.