Mengapa saya tidak bisa mem-pipe `pwd` ke` open` di macOS?


12

Ini khusus macOS, tetapi tampaknya terlalu aneh untuk masuk ke komunitas Ask Different .

Di Terminal, saya bisa pwd, salin hasilnya, dan ketik opendan tempel hasilnya dan folder akan terbuka di Finder, tetapi

pwd | open

mencetak dokumentasi bantuan untuk open. Mengapa perpipaan tidak berfungsi tetapi menempel tidak?


itu hanya akan berfungsi jika terbuka mengharapkan Anda mengetik nama direktori setelah Anda menekan enter.
Jasen

9
Juga, ini seharusnya (bukan pengguna mac) bekerja: open .(untuk direktori saat ini)
UniversallyUniqueID

@BharadwajRaju open .berfungsi dan tampaknya paling mudah. ty.
Chuck

Jawaban:


19

Saya tidak punya Mac jadi saya tidak bisa mengujinya, tetapi solusinya harus seperti:

open "`pwd`"

Tidak semua program mengambil input stdinyang darinya pipa perlu bekerja.


1
Kutipan ganda tidak perlu.
tbodt

3
@tbodt: Cobalah /var/tbodt's files.
Julie Pelletier

Saya akan berpikir bash akan memperlakukan itu sebagai satu argumen ... Inilah sebabnya saya tidak menggunakan bash.
tbodt

2
@tbodt: Bagaimana shell bisa tahu jika ruang yang digunakan adalah untuk memisahkan argumen atau bagian dari argumen?
Julie Pelletier

2
@jamesdlin: Pergilah mengeluh tentang bashproyek pengembangan, tetapi jangan lupa untuk pergi juga bash semua shell yang lebih tua dan sebagian besar shell yang lebih baru saat Anda melakukannya. Berulang-ulang!
Julie Pelletier

27

The openutilitas di Mac tidak membaca dari input standar, tetapi mengambil argumen dari baris perintah.

Untuk membuka direktori kerja saat ini, Anda harus mengatakan

$ open "$( pwd )"

atau

$ open "$PWD"

atau sederhana

$ open .

seperti yang ditunjukkan dalam komentar di bawah ini.

Dengan -fflag, opendapat dibuat untuk membaca dari input standar, tetapi hanya untuk membuka apa pun yang diterimanya di editor teks default.


1
Jika shellnya adalah (t) csh, Anda akan menginginkannya open $cwd:q. Dan open (pwd)/ open $PWDjika itufish
Stéphane Chazelas

1
@ StéphaneChazelas Saya percaya shell default pada Darwin adalah bash, tetapi selalu baik untuk melihat solusi untuk shell lain juga.
Kusalananda

Untuk kelengkapan, dengan rc, es, akangakerang: open `pwdatauopen `{pwd}
Stéphane Chazelas

5
Atau Anda dapat menggunakan sintaks- open .untuk direktori kerja saat ini atau direktori induk open .. atau naik dua direktori open ../..dan sebagainya.
fd0

@ StéphaneChazelas: Mengapa $cwd:qlebih disukai "$cwd"di shell yang berhubungan dengan csh?
G-Man Mengatakan 'Reinstate Monica'

9

Jawaban lain sepenuhnya benar. Jika Anda menginginkan tulisan cepat yang mudah , Anda dapat melakukan seperti yang disarankan @ fd0 , dan gunakan saja

open .

untuk membuka direktori saat ini. Direktori saat ini bernama .(satu titik) di Unix, direktori induk ..(dua titik).


9
pwd | xargs open

xargs mendorong input standarnya ke argumen argumen pertama.


2
Itu hanya jika jalur direktori kerja saat ini tidak mengandung baris kosong atau baris baru atau tunggal atau tanda kutip ganda atau garis miring terbalik.
Stéphane Chazelas

pwd | xargs -d '\n' open
belkka

0

Anda dapat menggunakan pipa dengan -funtuk membuka konten dari perintah sebelumnya di Editor Teks. Ini hanya berlaku untuk editor teks. Untuk aplikasi lain Anda harus menggunakan saran di pertanyaan lain.

Sebagai contoh:

ls | open -f

Ini akan membuka editor teks default Anda dengan lskonten output.

Anda juga dapat menentukan editor teks yang akan digunakan menggunakan -a:

ls | open -a 'Atom' -f

Ini akan membuka Atom dengan lskonten output.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.